From e7f7756bc5cf68ce78f139e7db10be08e48e2cf7 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 17 May 2017 19:38:00 -0700 Subject: [PATCH 01/91] Make `addLocationDataFn` more DRY --- lib/coffeescript/grammar.js | 6 +----- src/grammar.coffee | 5 +---- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js index e27848a8da..2888d35bb9 100644 --- a/lib/coffeescript/grammar.js +++ b/lib/coffeescript/grammar.js @@ -17,11 +17,7 @@ action = action.replace(/\bnew /g, '$&yy.'); action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&'); addLocationDataFn = function(first, last) { - if (!last) { - return `yy.addLocationDataFn(@${first})`; - } else { - return `yy.addLocationDataFn(@${first}, @${last})`; - } + return `yy.addLocationDataFn(@${first}${(last ? `, @${last}` : '')})`; }; action = action.replace(/LOC\(([0-9]*)\)/g, addLocationDataFn('$1')); action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2')); diff --git a/src/grammar.coffee b/src/grammar.coffee index 6fa9c6aaa3..bf15b4acf0 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -44,10 +44,7 @@ o = (patternString, action, options) -> # in, and returns the parameter. If the parameter is not a node, it will # just be passed through unaffected. addLocationDataFn = (first, last) -> - if not last - "yy.addLocationDataFn(@#{first})" - else - "yy.addLocationDataFn(@#{first}, @#{last})" + "yy.addLocationDataFn(@#{first}#{if last then ", @#{last}" else ''})" action = action.replace /LOC\(([0-9]*)\)/g, addLocationDataFn('$1') action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2') From 4f23ee49b3beee0a0727d5a507416fab59d88722 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Sat, 27 May 2017 20:32:27 -0700 Subject: [PATCH 02/91] Style fixes --- lib/coffeescript/coffeescript.js | 2 +- src/coffeescript.coffee | 5 ++--- src/nodes.coffee | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/coffeescript/coffeescript.js b/lib/coffeescript/coffeescript.js index 42e44602ec..de383b7a55 100644 --- a/lib/coffeescript/coffeescript.js +++ b/lib/coffeescript/coffeescript.js @@ -170,7 +170,7 @@ return this.pos = 0; }, upcomingInput: function() { - return ""; + return ''; } }; diff --git a/src/coffeescript.coffee b/src/coffeescript.coffee index 0a2a9a341b..b5f6ca3672 100644 --- a/src/coffeescript.coffee +++ b/src/coffeescript.coffee @@ -176,13 +176,12 @@ parser.lexer = @yylineno = @yylloc.first_line else tag = '' - tag setInput: (tokens) -> parser.tokens = tokens @pos = 0 - upcomingInput: -> - "" + upcomingInput: -> '' + # Make all the AST nodes visible to the parser. parser.yy = require './nodes' diff --git a/src/nodes.coffee b/src/nodes.coffee index cfa84b45e2..ce321b7bb5 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -34,7 +34,7 @@ exports.CodeFragment = class CodeFragment @locationData = parent?.locationData @type = parent?.constructor?.name or 'unknown' - toString: -> + toString: -> "#{@code}#{if @locationData then ": " + locationDataToString(@locationData) else ''}" # Convert an array of CodeFragments into a string. From b9eae0fc8994981c6a162ffd46a04205c263f358 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Sat, 27 May 2017 20:50:48 -0700 Subject: [PATCH 03/91] Provide access to full parser inside our custom function running in parser.js; rename the function to lay the groundwork for adding data aside from location data --- lib/coffeescript/grammar.js | 12 +- lib/coffeescript/helpers.js | 2 +- lib/coffeescript/nodes.js | 6 +- lib/coffeescript/parser.js | 372 ++++++++++++++++++------------------ src/grammar.coffee | 17 +- src/helpers.coffee | 6 +- src/nodes.coffee | 4 +- 7 files changed, 212 insertions(+), 207 deletions(-) diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js index 2888d35bb9..2bcc02aabc 100644 --- a/lib/coffeescript/grammar.js +++ b/lib/coffeescript/grammar.js @@ -7,7 +7,7 @@ unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/; o = function(patternString, action, options) { - var addLocationDataFn, match, patternCount; + var getFunctionString, match, patternCount; patternString = patternString.replace(/\s{2,}/g, ' '); patternCount = patternString.split(' ').length; if (!action) { @@ -16,12 +16,12 @@ action = (match = unwrap.exec(action)) ? match[1] : `(${action}())`; action = action.replace(/\bnew /g, '$&yy.'); action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&'); - addLocationDataFn = function(first, last) { - return `yy.addLocationDataFn(@${first}${(last ? `, @${last}` : '')})`; + getFunctionString = function(first, last) { + return `yy.addDataToNode(yy, @${first}${(last ? `, @${last}` : '')})`; }; - action = action.replace(/LOC\(([0-9]*)\)/g, addLocationDataFn('$1')); - action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2')); - return [patternString, `$$ = ${addLocationDataFn(1, patternCount)}(${action});`, options]; + action = action.replace(/LOC\(([0-9]*)\)/g, getFunctionString('$1')); + action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, getFunctionString('$1', '$2')); + return [patternString, `$$ = ${getFunctionString(1, patternCount)}(${action});`, options]; }; grammar = { diff --git a/lib/coffeescript/helpers.js b/lib/coffeescript/helpers.js index 4c8accad4f..49b0ead97f 100644 --- a/lib/coffeescript/helpers.js +++ b/lib/coffeescript/helpers.js @@ -134,7 +134,7 @@ } }; - exports.addLocationDataFn = function(first, last) { + exports.addDataToNode = function(parser, first, last) { return function(obj) { if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) { obj.updateLocationDataIfMissing(buildLocationData(first, last)); diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 6cddaa6a82..dbefdca988 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, + var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, splice = [].splice, indexOf = [].indexOf, slice = [].slice; @@ -11,11 +11,11 @@ ({isUnassignable, JS_FORBIDDEN} = require('./lexer')); - ({compact, flatten, extend, merge, del, starts, ends, some, addLocationDataFn, locationDataToString, throwSyntaxError} = require('./helpers')); + ({compact, flatten, extend, merge, del, starts, ends, some, addDataToNode, locationDataToString, throwSyntaxError} = require('./helpers')); exports.extend = extend; - exports.addLocationDataFn = addLocationDataFn; + exports.addDataToNode = addDataToNode; YES = function() { return true; diff --git a/lib/coffeescript/parser.js b/lib/coffeescript/parser.js index 634c77d290..cd452af6d0 100755 --- a/lib/coffeescript/parser.js +++ b/lib/coffeescript/parser.js @@ -84,16 +84,16 @@ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* actio var $0 = $$.length - 1; switch (yystate) { case 1: -return this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Block); +return this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Block); break; case 2: return this.$ = $$[$0]; break; case 3: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(yy.Block.wrap([$$[$0]])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(yy.Block.wrap([$$[$0]])); break; case 4: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].push($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].push($$[$0])); break; case 5: this.$ = $$[$0-1]; @@ -102,449 +102,449 @@ case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 14: case 15: cas this.$ = $$[$0]; break; case 13: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.StatementLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.StatementLiteral($$[$0])); break; case 29: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Op($$[$0], new yy.Value(new yy.Literal('')))); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Op($$[$0], new yy.Value(new yy.Literal('')))); break; case 30: case 254: case 255: case 258: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0])); break; case 31: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-2].concat($$[$0-1]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op($$[$0-2].concat($$[$0-1]), $$[$0])); break; case 32: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Block); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Block); break; case 33: case 112: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-1]); break; case 34: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.IdentifierLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.IdentifierLiteral($$[$0])); break; case 35: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.PropertyName($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.PropertyName($$[$0])); break; case 36: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NumberLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NumberLiteral($$[$0])); break; case 38: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.StringLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.StringLiteral($$[$0])); break; case 39: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.StringWithInterpolations($$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.StringWithInterpolations($$[$0-1])); break; case 40: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.RegexLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.RegexLiteral($$[$0])); break; case 41: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.RegexWithInterpolations($$[$0-1].args)); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.RegexWithInterpolations($$[$0-1].args)); break; case 43: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.PassthroughLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.PassthroughLiteral($$[$0])); break; case 45: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.UndefinedLiteral); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.UndefinedLiteral); break; case 46: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NullLiteral); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NullLiteral); break; case 47: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.BooleanLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.BooleanLiteral($$[$0])); break; case 48: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.InfinityLiteral($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.InfinityLiteral($$[$0])); break; case 49: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.NaNLiteral); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NaNLiteral); break; case 50: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0])); break; case 51: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0])); break; case 52: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1])); break; case 53: case 91: case 96: case 97: case 99: case 100: case 101: case 227: case 228: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value($$[$0])); break; case 54: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', { - operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1])) +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', { + operatorToken: yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])) })); break; case 55: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', { - operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3])) +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', { + operatorToken: yy.addDataToNode(yy, _$[$0-3])(new yy.Literal($$[$0-3])) })); break; case 56: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, { - operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1])) +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, { + operatorToken: yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])) })); break; case 57: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, { - operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3])) +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, { + operatorToken: yy.addDataToNode(yy, _$[$0-3])(new yy.Literal($$[$0-3])) })); break; case 64: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Return($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Return($$[$0])); break; case 65: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Return); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Return); break; case 66: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.YieldReturn($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.YieldReturn($$[$0])); break; case 67: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.YieldReturn); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.YieldReturn); break; case 68: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.AwaitReturn($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.AwaitReturn($$[$0])); break; case 69: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.AwaitReturn); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.AwaitReturn); break; case 70: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Comment($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Comment($$[$0])); break; case 71: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1])); break; case 72: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1])); break; case 73: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('func'); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('func'); break; case 74: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('boundfunc'); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('boundfunc'); break; case 77: case 117: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])([]); break; case 78: case 118: case 137: case 157: case 187: case 229: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])([$$[$0]]); break; case 79: case 119: case 138: case 158: case 188: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); break; case 80: case 120: case 139: case 159: case 189: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); break; case 81: case 121: case 141: case 161: case 191: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); break; case 82: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Param($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Param($$[$0])); break; case 83: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true)); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true)); break; case 84: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0])); break; case 85: case 194: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Expansion); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Expansion); break; case 90: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Splat($$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Splat($$[$0-1])); break; case 92: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].add($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].add($$[$0])); break; case 93: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0]))); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0]))); break; case 104: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Super(yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0])))); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0])))); break; case 105: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Super(yy.addLocationDataFn(_$[$0-1])(new yy.Index($$[$0-1])))); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0-1])(new yy.Index($$[$0-1])))); break; case 106: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0])); break; case 107: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak')); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak')); break; case 108: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.PropertyName('prototype'))), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Access(new yy.PropertyName('prototype'))), yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))]); break; case 109: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.PropertyName('prototype'), 'soak')), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Access(new yy.PropertyName('prototype'), 'soak')), yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))]); break; case 110: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Access(new yy.PropertyName('prototype'))); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Access(new yy.PropertyName('prototype'))); break; case 113: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(yy.extend($$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(yy.extend($$[$0], { soak: true })); break; case 114: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Index($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Index($$[$0])); break; case 115: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Slice($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Slice($$[$0])); break; case 116: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated)); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated)); break; case 122: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Class); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Class); break; case 123: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0])); break; case 124: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class(null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class(null, $$[$0])); break; case 125: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0])); break; case 126: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class($$[$0])); break; case 127: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0])); break; case 128: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0])); break; case 129: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0])); break; case 130: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.ImportDeclaration(null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ImportDeclaration(null, $$[$0])); break; case 131: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2], null), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2], null), $$[$0])); break; case 132: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, $$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, $$[$0-2]), $$[$0])); break; case 133: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList([])), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList([])), $$[$0])); break; case 134: -this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList($$[$0-4])), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList($$[$0-4])), $$[$0])); break; case 135: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4], $$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4], $$[$0-2]), $$[$0])); break; case 136: -this.$ = yy.addLocationDataFn(_$[$0-8], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7], new yy.ImportSpecifierList($$[$0-4])), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-8], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7], new yy.ImportSpecifierList($$[$0-4])), $$[$0])); break; case 140: case 160: case 174: case 190: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])($$[$0-2]); break; case 142: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportSpecifier($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier($$[$0])); break; case 143: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], $$[$0])); break; case 144: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0]))); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0]))); break; case 145: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; case 146: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ImportDefaultSpecifier($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportDefaultSpecifier($$[$0])); break; case 147: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; case 148: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]))); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]))); break; case 149: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2]))); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2]))); break; case 150: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.ExportNamedDeclaration($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ExportNamedDeclaration($$[$0])); break; case 151: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-2], $$[$0], null, { +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-2], $$[$0], null, { moduleDeclaration: 'export' }))); break; case 152: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-3], $$[$0], null, { +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-3], $$[$0], null, { moduleDeclaration: 'export' }))); break; case 153: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-4], $$[$0-1], null, { +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-4], $$[$0-1], null, { moduleDeclaration: 'export' }))); break; case 154: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportDefaultDeclaration($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportDefaultDeclaration($$[$0])); break; case 155: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]), $$[$0])); break; case 156: -this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]), $$[$0])); break; case 162: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ExportSpecifier($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier($$[$0])); break; case 163: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], $$[$0])); break; case 164: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], new yy.Literal($$[$0]))); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], new yy.Literal($$[$0]))); break; case 165: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0]))); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0]))); break; case 166: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; case 167: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.TaggedTemplateCall($$[$0-2], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.TaggedTemplateCall($$[$0-2], $$[$0], $$[$0-1])); break; case 168: case 169: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1])); break; case 170: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.SuperCall(yy.addLocationDataFn(_$[$0-2])(new yy.Super), $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-2])(new yy.Super), $$[$0], $$[$0-1])); break; case 171: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(false); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(false); break; case 172: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(true); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(true); break; case 173: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([]); break; case 175: case 176: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.ThisLiteral)); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value(new yy.ThisLiteral)); break; case 177: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value(yy.addLocationDataFn(_$[$0-1])(new yy.ThisLiteral), [yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))], 'this')); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value(yy.addDataToNode(yy, _$[$0-1])(new yy.ThisLiteral), [yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))], 'this')); break; case 178: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Arr([])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Arr([])); break; case 179: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Arr($$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Arr($$[$0-2])); break; case 180: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('inclusive'); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('inclusive'); break; case 181: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])('exclusive'); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('exclusive'); break; case 182: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2])); break; case 183: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1])); break; case 184: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0])); break; case 185: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1])); break; case 186: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Range(null, null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Range(null, null, $$[$0])); break; case 196: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0])); break; case 197: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Try($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Try($$[$0])); break; case 198: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1])); break; case 199: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0])); break; case 200: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0])); break; case 201: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-1], $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-1], $$[$0]]); break; case 202: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]); break; case 203: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([null, $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([null, $$[$0]]); break; case 204: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Throw($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Throw($$[$0])); break; case 205: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Parens($$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Parens($$[$0-1])); break; case 206: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Parens($$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Parens($$[$0-2])); break; case 207: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0])); break; case 208: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], { +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { guard: $$[$0] })); break; case 209: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0], { invert: true })); break; case 210: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], { +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { invert: true, guard: $$[$0] })); break; case 211: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].addBody($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].addBody($$[$0])); break; case 212: case 213: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]])))); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0].addBody(yy.addDataToNode(yy, _$[$0-1])(yy.Block.wrap([$$[$0-1]])))); break; case 214: -this.$ = yy.addLocationDataFn(_$[$0], _$[$0])($$[$0]); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])($$[$0]); break; case 215: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.BooleanLiteral('true'))).addBody($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While(yy.addDataToNode(yy, _$[$0-1])(new yy.BooleanLiteral('true'))).addBody($$[$0])); break; case 216: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.BooleanLiteral('true'))).addBody(yy.addLocationDataFn(_$[$0])(yy.Block.wrap([$$[$0]])))); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While(yy.addDataToNode(yy, _$[$0-1])(new yy.BooleanLiteral('true'))).addBody(yy.addDataToNode(yy, _$[$0])(yy.Block.wrap([$$[$0]])))); break; case 217: case 218: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); break; case 219: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1])); break; case 220: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ - source: yy.addLocationDataFn(_$[$0])(new yy.Value($$[$0])) +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ + source: yy.addDataToNode(yy, _$[$0])(new yy.Value($$[$0])) }); break; case 221: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ - source: yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ + source: yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), step: $$[$0] }); break; case 222: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () { +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])((function () { $$[$0].own = $$[$0-1].own; $$[$0].ownTag = $$[$0-1].ownTag; $$[$0].name = $$[$0-1][0]; @@ -553,147 +553,147 @@ this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () { }())); break; case 223: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0]); break; case 224: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () { +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { $$[$0].own = true; - $$[$0].ownTag = yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1])); + $$[$0].ownTag = yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])); return $$[$0]; }())); break; case 230: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-2], $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-2], $$[$0]]); break; case 231: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0] }); break; case 232: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0], object: true }); break; case 233: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0] }); break; case 234: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0], object: true }); break; case 235: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], step: $$[$0] }); break; case 236: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])({ source: $$[$0-4], guard: $$[$0-2], step: $$[$0] }); break; case 237: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])({ source: $$[$0-4], step: $$[$0-2], guard: $$[$0] }); break; case 238: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0], from: true }); break; case 239: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({ +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0], from: true }); break; case 240: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1])); break; case 241: -this.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1])); break; case 242: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1])); break; case 243: -this.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1])); break; case 245: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].concat($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].concat($$[$0])); break; case 246: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]); break; case 247: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]); break; case 248: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { type: $$[$0-2] })); break; case 249: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])($$[$0-4].addElse(yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])($$[$0-4].addElse(yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { type: $$[$0-2] })))); break; case 251: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].addElse($$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].addElse($$[$0])); break; case 252: case 253: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), { +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0], yy.addDataToNode(yy, _$[$0-2])(yy.Block.wrap([$$[$0-2]])), { type: $$[$0-1], statement: true })); break; case 256: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('-', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('-', $$[$0])); break; case 257: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('+', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('+', $$[$0])); break; case 259: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', $$[$0])); break; case 260: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', $$[$0])); break; case 261: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true)); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true)); break; case 262: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true)); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true)); break; case 263: -this.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Existence($$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Existence($$[$0-1])); break; case 264: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0])); break; case 265: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0])); break; case 266: case 267: case 268: case 269: case 270: case 271: case 272: case 273: case 274: case 275: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); break; case 276: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () { +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { if ($$[$0-1].charAt(0) === '!') { return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert(); } else { @@ -702,13 +702,13 @@ this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () { }())); break; case 277: -this.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1])); break; case 278: -this.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3])); +this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3])); break; case 279: -this.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2])); break; } }, diff --git a/src/grammar.coffee b/src/grammar.coffee index bf15b4acf0..1ff8e950b5 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -40,16 +40,17 @@ o = (patternString, action, options) -> action = action.replace /\bnew /g, '$&yy.' action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&' - # Returns a function which adds location data to the first parameter passed - # in, and returns the parameter. If the parameter is not a node, it will - # just be passed through unaffected. - addLocationDataFn = (first, last) -> - "yy.addLocationDataFn(@#{first}#{if last then ", @#{last}" else ''})" + # Returns strings of functions to add to `parser.js` which add extra data + # that nodes may have, such as comments or location data. Location data + # is added to the first parameter passed in, and the parameter is returned. + # If the parameter is not a node, it will just be passed through unaffected. + getFunctionString = (first, last) -> + "yy.addDataToNode(yy, @#{first}#{if last then ", @#{last}" else ''})" - action = action.replace /LOC\(([0-9]*)\)/g, addLocationDataFn('$1') - action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, addLocationDataFn('$1', '$2') + action = action.replace /LOC\(([0-9]*)\)/g, getFunctionString('$1') + action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, getFunctionString('$1', '$2') - [patternString, "$$ = #{addLocationDataFn(1, patternCount)}(#{action});", options] + [patternString, "$$ = #{getFunctionString(1, patternCount)}(#{action});", options] # Grammatical Rules # ----------------- diff --git a/src/helpers.coffee b/src/helpers.coffee index f92eed8af1..a98a94236a 100644 --- a/src/helpers.coffee +++ b/src/helpers.coffee @@ -111,11 +111,15 @@ buildLocationData = (first, last) -> # This returns a function which takes an object as a parameter, and if that # object is an AST node, updates that object's locationData. # The object is returned either way. -exports.addLocationDataFn = (first, last) -> +exports.addDataToNode = (parser, first, last) -> (obj) -> + # Add location data if ((typeof obj) is 'object') and (!!obj['updateLocationDataIfMissing']) obj.updateLocationDataIfMissing buildLocationData(first, last) + # Add comments data + # TODO + return obj # Convert jison location data to a string. diff --git a/src/nodes.coffee b/src/nodes.coffee index ce321b7bb5..b4c05c1e6e 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -10,11 +10,11 @@ Error.stackTraceLimit = Infinity # Import the helpers we plan to use. {compact, flatten, extend, merge, del, starts, ends, some, -addLocationDataFn, locationDataToString, throwSyntaxError} = require './helpers' +addDataToNode, locationDataToString, throwSyntaxError} = require './helpers' # Functions required by parser exports.extend = extend -exports.addLocationDataFn = addLocationDataFn +exports.addDataToNode = addDataToNode # Constant functions for nodes that don't need customization. YES = -> yes From 87193af7593a795b7e4ccf9dd6e3f82a68f62f70 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Sat, 27 May 2017 23:02:16 -0700 Subject: [PATCH 04/91] Fix style. --- src/lexer.coffee | 16 ++++++++-------- src/nodes.coffee | 33 +++++++++++++++++---------------- src/rewriter.coffee | 7 ++++--- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/lexer.coffee b/src/lexer.coffee index bf18abb332..e8881d7854 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -36,18 +36,18 @@ exports.Lexer = class Lexer tokenize: (code, opts = {}) -> @literate = opts.literate # Are we lexing literate CoffeeScript? @indent = 0 # The current indentation level. - @baseIndent = 0 # The overall minimum indentation level + @baseIndent = 0 # The overall minimum indentation level. @indebt = 0 # The over-indentation at the current level. @outdebt = 0 # The under-outdentation at the current level. @indents = [] # The stack of all current indentation levels. - @indentLiteral = '' # The indentation + @indentLiteral = '' # The indentation. @ends = [] # The stack for pairing up tokens. @tokens = [] # Stream of parsed tokens in the form `['TYPE', value, location data]`. - @seenFor = no # Used to recognize FORIN, FOROF and FORFROM tokens. - @seenImport = no # Used to recognize IMPORT FROM? AS? tokens. - @seenExport = no # Used to recognize EXPORT FROM? AS? tokens. - @importSpecifierList = no # Used to identify when in an IMPORT {...} FROM? ... - @exportSpecifierList = no # Used to identify when in an EXPORT {...} FROM? ... + @seenFor = no # Used to recognize `FORIN`, `FOROF` and `FORFROM` tokens. + @seenImport = no # Used to recognize `IMPORT FROM? AS?` tokens. + @seenExport = no # Used to recognize `EXPORT FROM? AS?` tokens. + @importSpecifierList = no # Used to identify when in an `IMPORT {...} FROM? ...`. + @exportSpecifierList = no # Used to identify when in an `EXPORT {...} FROM? ...`. @chunkLine = opts.line or 0 # The start line for the current @chunk. @@ -71,7 +71,7 @@ exports.Lexer = class Lexer @jsToken() or @literalToken() - # Update position + # Update position. [@chunkLine, @chunkColumn] = @getLineAndColumnFromChunk consumed i += consumed diff --git a/src/nodes.coffee b/src/nodes.coffee index b4c05c1e6e..9025aa7c6f 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -12,11 +12,11 @@ Error.stackTraceLimit = Infinity {compact, flatten, extend, merge, del, starts, ends, some, addDataToNode, locationDataToString, throwSyntaxError} = require './helpers' -# Functions required by parser +# Functions required by parser. exports.extend = extend exports.addDataToNode = addDataToNode -# Constant functions for nodes that don't need customization. +# Constant functions for nodes that don’t need customization. YES = -> yes NO = -> no THIS = -> this @@ -35,6 +35,7 @@ exports.CodeFragment = class CodeFragment @type = parent?.constructor?.name or 'unknown' toString: -> + # This is only intended for debugging. "#{@code}#{if @locationData then ": " + locationDataToString(@locationData) else ''}" # Convert an array of CodeFragments into a string. @@ -272,7 +273,7 @@ exports.Base = class Base @eachChild (child) -> child.updateLocationDataIfMissing locationData - # Throw a SyntaxError associated with this node's location. + # Throw a SyntaxError associated with this node’s location. error: (message) -> throwSyntaxError message, @locationData @@ -394,9 +395,9 @@ exports.Block = class Block extends Base compileToFragments: (o = {}, level) -> if o.scope then super o, level else @compileRoot o - # Compile all expressions within the **Block** body. If we need to - # return the result, and it's an expression, simply return it. If it's a - # statement, ask the statement to do so. + # Compile all expressions within the **Block** body. If we need to return + # the result, and it’s an expression, simply return it. If it’s a statement, + # ask the statement to do so. compileNode: (o) -> @tab = o.indent top = o.level is LEVEL_TOP @@ -406,12 +407,13 @@ exports.Block = class Block extends Base node = node.unwrapAll() node = (node.unfoldSoak(o) or node) if node instanceof Block - # This is a nested block. We don't do anything special here like enclose - # it in a new scope; we just compile the statements in this block along with - # our own + # This is a nested block. We don’t do anything special here like + # enclose it in a new scope; we just compile the statements in this + # block along with our own. compiledNodes.push node.compileNode o else if node.hoisted - # This is a hoisted expression. We want to compile this and ignore the result. + # This is a hoisted expression. + # We want to compile this and ignore the result. node.compileToFragments o else if top node.front = true @@ -433,16 +435,15 @@ exports.Block = class Block extends Base answer = [@makeCode "void 0"] if compiledNodes.length > 1 and o.level >= LEVEL_LIST then @wrapInParentheses answer else answer - # If we happen to be the top-level **Block**, wrap everything in - # a safety closure, unless requested not to. - # It would be better not to generate them in the first place, but for now, - # clean up obvious double-parentheses. + # If we happen to be the top-level **Block**, wrap everything in a safety + # closure, unless requested not to. It would be better not to generate them + # in the first place, but for now, clean up obvious double-parentheses. compileRoot: (o) -> o.indent = if o.bare then '' else TAB o.level = LEVEL_TOP @spaced = yes o.scope = new Scope null, this, null, o.referencedVars ? [] - # Mark given local variables in the root scope as parameters so they don't + # Mark given local variables in the root scope as parameters so they don’t # end up being declared on this block. o.scope.parameter name for name in o.locals or [] prelude = [] @@ -3013,7 +3014,7 @@ exports.Switch = class Switch extends Base # to the last line of each clause. # # Single-expression **Ifs** are compiled into conditional operators if possible, -# because ternaries are already proper expressions, and don't need conversion. +# because ternaries are already proper expressions, and don’t need conversion. exports.If = class If extends Base constructor: (condition, @body, options = {}) -> super() diff --git a/src/rewriter.coffee b/src/rewriter.coffee index b122a041af..0c685ea664 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -22,8 +22,10 @@ exports.Rewriter = class Rewriter # like this. The order of these passes matters -- indentation must be # corrected before implicit parentheses can be wrapped around blocks of code. rewrite: (@tokens) -> - # Helpful snippet for debugging: - # console.log (t[0] + '/' + t[1] for t in @tokens).join ' ' + # Set environment variable `DEBUG_TOKEN_STREAM` to `true` to output token + # debugging info. + if process.env.DEBUG_TOKEN_STREAM + console.log (t[0] + '/' + t[1] for t in @tokens).join ' ' @removeLeadingNewlines() @closeOpenCalls() @closeOpenIndexes() @@ -435,7 +437,6 @@ exports.Rewriter = class Rewriter # Tag postfix conditionals as such, so that we can parse them with a # different precedence. tagPostfixConditionals: -> - original = null condition = (token, i) -> From 2f90a5af1e13127a91c5e1e65b9b3de354a71e0d Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Mon, 29 May 2017 20:48:49 -0700 Subject: [PATCH 05/91] Fix style. --- lib/coffeescript/rewriter.js | 21 +++++++++++--- src/rewriter.coffee | 54 +++++++++++++++++------------------- 2 files changed, 43 insertions(+), 32 deletions(-) diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 8b77a281c7..ed6a6c083b 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, rite, + var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, right, indexOf = [].indexOf; generate = function(tag, value, origin) { @@ -16,7 +16,20 @@ exports.Rewriter = Rewriter = (function() { class Rewriter { rewrite(tokens1) { + var t; this.tokens = tokens1; + if (process.env.DEBUG_TOKEN_STREAM) { + console.log(((function() { + var k, len, ref, results; + ref = this.tokens; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + t = ref[k]; + results.push(t[0] + '/' + t[1]); + } + return results; + }).call(this)).join(' ')); + } this.removeLeadingNewlines(); this.closeOpenCalls(); this.closeOpenIndexes(); @@ -519,9 +532,9 @@ EXPRESSION_END = []; for (k = 0, len = BALANCED_PAIRS.length; k < len; k++) { - [left, rite] = BALANCED_PAIRS[k]; - EXPRESSION_START.push(INVERSES[rite] = left); - EXPRESSION_END.push(INVERSES[left] = rite); + [left, right] = BALANCED_PAIRS[k]; + EXPRESSION_START.push(INVERSES[right] = left); + EXPRESSION_END.push(INVERSES[left] = right); } EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END); diff --git a/src/rewriter.coffee b/src/rewriter.coffee index a5fe6b1ae6..f3303a2f7d 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -18,8 +18,8 @@ exports.Rewriter = class Rewriter # Rewrite the token stream in multiple passes, one logical filter at # a time. This could certainly be changed into a single pass through the - # stream, with a big ol' efficient switch, but it's much nicer to work with - # like this. The order of these passes matters -- indentation must be + # stream, with a big ol’ efficient switch, but it’s much nicer to work with + # like this. The order of these passes matters—indentation must be # corrected before implicit parentheses can be wrapped around blocks of code. rewrite: (@tokens) -> # Set environment variable `DEBUG_TOKEN_STREAM` to `true` to output token @@ -38,7 +38,7 @@ exports.Rewriter = class Rewriter # Rewrite the token stream, looking one token ahead and behind. # Allow the return value of the block to tell us how many tokens to move - # forwards (or backwards) in the stream, to make sure we don't miss anything + # forwards (or backwards) in the stream, to make sure we don’t miss anything # as tokens are inserted and removed, and the stream changes length under # our feet. scanTokens: (block) -> @@ -119,7 +119,7 @@ exports.Rewriter = class Rewriter no # Returns `yes` if current line of tokens contain an element of tags on same - # expression level. Stop searching at LINEBREAKS or explicit start of + # expression level. Stop searching at `LINEBREAKS` or explicit start of # containing balanced expression. findTagsBackwards: (i, tags) -> backStack = [] @@ -158,7 +158,7 @@ exports.Rewriter = class Rewriter inImplicitCall = -> isImplicitCall stackTop() inImplicitObject = -> isImplicitObject stackTop() # Unclosed control statement inside implicit parens (like - # class declaration or if-conditionals) + # class declaration or if-conditionals). inImplicitControl = -> inImplicit() and stackTop()?[0] is 'CONTROL' startImplicitCall = (idx) -> @@ -191,7 +191,7 @@ exports.Rewriter = class Rewriter return no unless nextTerminatorIdx? @looksObjectish nextTerminatorIdx + 1 - # Don't end an implicit call on next indent if any of these are in an argument + # Don’t end an implicit call on next indent if any of these are in an argument if inImplicitCall() and tag in ['IF', 'TRY', 'FINALLY', 'CATCH', 'CLASS', 'SWITCH'] stack.push ['CONTROL', i, ours: yes] @@ -202,15 +202,14 @@ exports.Rewriter = class Rewriter # An `INDENT` closes an implicit call unless # # 1. We have seen a `CONTROL` argument on the line. - # 2. The last token before the indent is part of the list below - # + # 2. The last token before the indent is part of the list below. if prevTag not in ['=>', '->', '[', '(', ',', '{', 'ELSE', '='] endImplicitCall() while inImplicitCall() stack.pop() if inImplicitControl() stack.push [tag, i] return forward(1) - # Straightforward start of explicit expression + # Straightforward start of explicit expression. if tag in EXPRESSION_START stack.push [tag, i] return forward(1) @@ -243,7 +242,7 @@ exports.Rewriter = class Rewriter # a: b # c: d # - # Don't accept implicit calls of this type, when on the same line + # Don’t accept implicit calls of this type, when on the same line # as the control structures below as that may misinterpret constructs like: # # if f @@ -253,7 +252,7 @@ exports.Rewriter = class Rewriter # if f(a: 1) # # which is probably always unintended. - # Furthermore don't allow this in literal arrays, as + # Furthermore don’t allow this in literal arrays, as # that creates grammatical ambiguities. if tag in IMPLICIT_FUNC and @indexOfTag(i + 1, 'INDENT') > -1 and @looksObjectish(i + 2) and @@ -263,16 +262,16 @@ exports.Rewriter = class Rewriter stack.push ['INDENT', i + 2] return forward(3) - # Implicit objects start here + # Implicit objects start here. if tag is ':' - # Go back to the (implicit) start of the object + # Go back to the (implicit) start of the object. s = switch when @tag(i - 1) in EXPRESSION_END then start[1] when @tag(i - 2) is '@' then i - 2 else i - 1 s -= 2 while @tag(s - 2) is 'HERECOMMENT' - # Mark if the value is a for loop + # Mark if the value is a for loop. @insideForDeclaration = nextTag is 'FOR' startsLine = s is 0 or @tag(s - 1) in LINEBREAKS or tokens[s - 1].newLine @@ -320,7 +319,7 @@ exports.Rewriter = class Rewriter not (tag is 'POST_IF' and startsLine and implicitObjectContinues(i + 1)) endImplicitObject() # Close implicit objects when at end of line, line didn't end with a comma - # and the implicit object didn't start the line or the next line doesn't look like + # and the implicit object didn't start the line or the next line doesn’t look like # the continuation of an object. else if inImplicitObject() and tag is 'TERMINATOR' and prevTag isnt ',' and not (startsLine and @looksObjectish(i + 1)) @@ -330,7 +329,7 @@ exports.Rewriter = class Rewriter break # Close implicit object if comma is the last character - # and what comes after doesn't look like it belongs. + # and what comes after doesn’t look like it belongs. # This is used for trailing commas and calls, like: # # x = @@ -348,9 +347,8 @@ exports.Rewriter = class Rewriter # When nextTag is OUTDENT the comma is insignificant and # should just be ignored so embed it in the implicit object. # - # When it isn't the comma go on to play a role in a call or + # When it isn’t the comma go on to play a role in a call or # array further up the stack, so give it a chance. - offset = if nextTag is 'OUTDENT' then 1 else 0 while inImplicitObject() endImplicitObject i + offset @@ -374,9 +372,9 @@ exports.Rewriter = class Rewriter last_column: column return 1 - # OUTDENT tokens should always be positioned at the last character of the - # previous token, so that AST nodes ending in an OUTDENT token end up with a - # location corresponding to the last "real" token under the node. + # `OUTDENT` tokens should always be positioned at the last character of the + # previous token, so that AST nodes ending in an `OUTDENT` token end up with a + # location corresponding to the last “real” token under the node. fixOutdentLocationData: -> @scanTokens (token, i, tokens) -> return 1 unless token[0] is 'OUTDENT' or @@ -390,9 +388,9 @@ exports.Rewriter = class Rewriter last_column: prevLocationData.last_column return 1 - # Because our grammar is LALR(1), it can't handle some single-line + # Because our grammar is LALR(1), it can’t handle some single-line # expressions that lack ending delimiters. The **Rewriter** adds the implicit - # blocks, so it doesn't need to. To keep the grammar clean and tidy, trailing + # blocks, so it doesn’t need to. To keep the grammar clean and tidy, trailing # newlines within expressions are removed and the indentation tokens of empty # blocks are added. normalizeLines: -> @@ -485,7 +483,7 @@ BALANCED_PAIRS = [ ['REGEX_START', 'REGEX_END'] ] -# The inverse mappings of `BALANCED_PAIRS` we're trying to fix up, so we can +# The inverse mappings of `BALANCED_PAIRS` we’re trying to fix up, so we can # look things up from either end. exports.INVERSES = INVERSES = {} @@ -493,9 +491,9 @@ exports.INVERSES = INVERSES = {} EXPRESSION_START = [] EXPRESSION_END = [] -for [left, rite] in BALANCED_PAIRS - EXPRESSION_START.push INVERSES[rite] = left - EXPRESSION_END .push INVERSES[left] = rite +for [left, right] in BALANCED_PAIRS + EXPRESSION_START.push INVERSES[right] = left + EXPRESSION_END .push INVERSES[left] = right # Tokens that indicate the close of a clause of an expression. EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END @@ -520,7 +518,7 @@ IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'] # Single-line flavors of block expressions that have unclosed endings. -# The grammar can't disambiguate them, so we insert the implicit indentation. +# The grammar can’t disambiguate them, so we insert the implicit indentation. SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'] SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'] From 3ee5fe3c5a7ed4a87d324c331bf63e3c10520cb7 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Thu, 8 Jun 2017 01:06:29 -0700 Subject: [PATCH 06/91] Label test comments --- test/comments.coffee | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/comments.coffee b/test/comments.coffee index e4ac2c9d95..a0660c0ad8 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -123,7 +123,7 @@ test "block comments in objects", -> obj = { a: a ### - comment + block comment in object ### b: b } @@ -137,7 +137,7 @@ test "block comments in YAML-style", -> obj = a: a ### - comment + block comment in YAML-style ### b: b @@ -158,7 +158,7 @@ test "block comments in functions", -> fn2 = -> ### - block comment + block comment in function 1 ### nonce @@ -167,7 +167,7 @@ test "block comments in functions", -> fn3 = -> nonce ### - block comment + block comment in function 2 ### eq nonce, fn3() @@ -175,7 +175,7 @@ test "block comments in functions", -> fn4 = -> one = -> ### - block comment + block comment in function 3 ### two = -> three = -> @@ -188,7 +188,7 @@ test "block comments inside class bodies", -> a: -> ### - Comment + Comment in class body 1 ### b: -> @@ -196,7 +196,7 @@ test "block comments inside class bodies", -> class B ### - Comment + Comment in class body 2 ### a: -> b: -> @@ -204,7 +204,7 @@ test "block comments inside class bodies", -> ok B.prototype.a instanceof Function test "#2037: herecomments shouldn't imply line terminators", -> - do (-> ### ###; fail) + do (-> ### ###yes; fail) test "#2916: block comment before implicit call with implicit object", -> fn = (obj) -> ok obj.a From 17e5724f3244a3a7fd091b8fbd327a8ac1fc6c76 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 14 Jun 2017 01:47:20 -0700 Subject: [PATCH 07/91] Update grammar to remove comment tokens; update DSL to call new helper function that preserves comments through parsing --- lib/coffeescript/grammar.js | 35 ++-- lib/coffeescript/helpers.js | 31 ++- lib/coffeescript/parser.js | 369 ++++++++++++++++++------------------ src/grammar.coffee | 38 ++-- src/helpers.coffee | 25 ++- 5 files changed, 265 insertions(+), 233 deletions(-) diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js index e34d0b6f07..4c1e008e2a 100644 --- a/lib/coffeescript/grammar.js +++ b/lib/coffeescript/grammar.js @@ -7,21 +7,23 @@ unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/; o = function(patternString, action, options) { - var getFunctionString, match, patternCount; + var getAddDataToNodeFunctionString, match, patternCount, performActionFunctionString; patternString = patternString.replace(/\s{2,}/g, ' '); patternCount = patternString.split(' ').length; - if (!action) { - return [patternString, '$$ = $1;', options]; + if (action) { + action = (match = unwrap.exec(action)) ? match[1] : `(${action}())`; + action = action.replace(/\bnew /g, '$&yy.'); + action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&'); + getAddDataToNodeFunctionString = function(first, last) { + return `yy.addDataToNode(yy, @${first}${(last ? `, @${last}` : '')})`; + }; + action = action.replace(/LOC\(([0-9]*)\)/g, getAddDataToNodeFunctionString('$1')); + action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, getAddDataToNodeFunctionString('$1', '$2')); + performActionFunctionString = `$$ = ${getAddDataToNodeFunctionString(1, patternCount)}(${action});`; + } else { + performActionFunctionString = '$$ = $1;'; } - action = (match = unwrap.exec(action)) ? match[1] : `(${action}())`; - action = action.replace(/\bnew /g, '$&yy.'); - action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&'); - getFunctionString = function(first, last) { - return `yy.addDataToNode(yy, @${first}${(last ? `, @${last}` : '')})`; - }; - action = action.replace(/LOC\(([0-9]*)\)/g, getFunctionString('$1')); - action = action.replace(/LOC\(([0-9]*),\s*([0-9]*)\)/g, getFunctionString('$1', '$2')); - return [patternString, `$$ = ${getFunctionString(1, patternCount)}(${action});`, options]; + return [patternString, performActionFunctionString, options]; }; grammar = { @@ -40,7 +42,7 @@ Line: [o('Expression'), o('Statement'), o('FuncDirective')], FuncDirective: [o('YieldReturn'), o('AwaitReturn')], Statement: [ - o('Return'), o('Comment'), o('STATEMENT', function() { + o('Return'), o('STATEMENT', function() { return new StatementLiteral($1); }), o('Import'), o('Export') ], @@ -135,7 +137,7 @@ return new Assign(LOC(1)(new Value($1)), $4, null, { operatorToken: LOC(2)(new Literal($2)) }); - }), o('Comment') + }) ], SimpleObjAssignable: [o('Identifier'), o('Property'), o('ThisProperty')], ObjAssignable: [o('SimpleObjAssignable'), o('AlphaNumeric')], @@ -160,11 +162,6 @@ return new AwaitReturn; }) ], - Comment: [ - o('HERECOMMENT', function() { - return new Comment($1); - }) - ], Code: [ o('PARAM_START ParamList PARAM_END FuncGlyph Block', function() { return new Code($2, $5, $4); diff --git a/lib/coffeescript/helpers.js b/lib/coffeescript/helpers.js index 49b0ead97f..7bfe33b4ae 100644 --- a/lib/coffeescript/helpers.js +++ b/lib/coffeescript/helpers.js @@ -134,11 +134,38 @@ } }; - exports.addDataToNode = function(parser, first, last) { + exports.addDataToNode = function(parserState, first, last) { return function(obj) { - if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) { + var i, len1, objHash, ref1, token, tokenHash; + if (((obj != null ? obj.updateLocationDataIfMissing : void 0) != null) && (first != null)) { obj.updateLocationDataIfMissing(buildLocationData(first, last)); } + if (!parserState.tokenComments) { + parserState.tokenComments = {}; + ref1 = parserState.parser.tokens; + for (i = 0, len1 = ref1.length; i < len1; i++) { + token = ref1[i]; + if (!token.comments) { + continue; + } + tokenHash = `${token[2].first_line}x${token[2].first_column}-${token[2].last_line}x${token[2].last_column}`; + if (parserState.tokenComments[tokenHash] == null) { + parserState.tokenComments[tokenHash] = token.comments; + } else { + parserState.tokenComments[tokenHash] = parserState.tokenComments[tokenHash].concat(token.comments); + } + } + } + if (obj.locationData != null) { + objHash = `${obj.locationData.first_line}x${obj.locationData.first_column}-${obj.locationData.last_line}x${obj.locationData.last_column}`; + if (parserState.tokenComments[objHash] != null) { + if (!obj.comments) { + obj.comments = parserState.tokenComments[objHash]; + } else { + obj.comments = obj.comments.concat(parserState.tokenComments[objHash]); + } + } + } return obj; }; }; diff --git a/lib/coffeescript/parser.js b/lib/coffeescript/parser.js index 3796becfd7..201317e32f 100755 --- a/lib/coffeescript/parser.js +++ b/lib/coffeescript/parser.js @@ -72,12 +72,12 @@ } */ var parser = (function(){ -var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,22],$V1=[1,52],$V2=[1,86],$V3=[1,87],$V4=[1,82],$V5=[1,88],$V6=[1,89],$V7=[1,84],$V8=[1,85],$V9=[1,60],$Va=[1,62],$Vb=[1,63],$Vc=[1,64],$Vd=[1,65],$Ve=[1,66],$Vf=[1,53],$Vg=[1,40],$Vh=[1,54],$Vi=[1,34],$Vj=[1,71],$Vk=[1,72],$Vl=[1,33],$Vm=[1,81],$Vn=[1,50],$Vo=[1,55],$Vp=[1,56],$Vq=[1,69],$Vr=[1,70],$Vs=[1,68],$Vt=[1,45],$Vu=[1,51],$Vv=[1,67],$Vw=[1,76],$Vx=[1,77],$Vy=[1,78],$Vz=[1,79],$VA=[1,49],$VB=[1,75],$VC=[1,36],$VD=[1,37],$VE=[1,38],$VF=[1,39],$VG=[1,41],$VH=[1,42],$VI=[1,90],$VJ=[1,6,34,45,135],$VK=[1,105],$VL=[1,93],$VM=[1,92],$VN=[1,91],$VO=[1,94],$VP=[1,95],$VQ=[1,96],$VR=[1,97],$VS=[1,98],$VT=[1,99],$VU=[1,100],$VV=[1,101],$VW=[1,102],$VX=[1,103],$VY=[1,104],$VZ=[1,108],$V_=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$V$=[2,172],$V01=[1,114],$V11=[1,119],$V21=[1,115],$V31=[1,116],$V41=[1,117],$V51=[1,120],$V61=[1,113],$V71=[1,6,34,45,135,137,139,143,160],$V81=[1,6,33,34,43,44,45,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$V91=[2,99],$Va1=[2,78],$Vb1=[1,130],$Vc1=[1,135],$Vd1=[1,136],$Ve1=[1,138],$Vf1=[1,142],$Vg1=[1,140],$Vh1=[1,6,33,34,43,44,45,58,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vi1=[2,96],$Vj1=[1,6,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vk1=[2,29],$Vl1=[1,167],$Vm1=[2,66],$Vn1=[1,175],$Vo1=[1,187],$Vp1=[1,189],$Vq1=[1,184],$Vr1=[1,191],$Vs1=[1,6,33,34,43,44,45,58,69,74,77,88,89,90,91,92,93,96,100,102,117,118,119,124,126,135,137,138,139,143,144,160,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],$Vt1=[2,118],$Vu1=[1,6,33,34,43,44,45,61,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vv1=[1,6,31,33,34,43,44,45,58,61,69,74,77,88,89,90,91,92,93,96,100,102,108,117,118,119,124,126,135,137,138,139,143,144,150,151,152,160,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],$Vw1=[1,6,33,34,43,44,45,49,61,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vx1=[1,239],$Vy1=[43,44,118],$Vz1=[1,249],$VA1=[1,248],$VB1=[2,76],$VC1=[1,259],$VD1=[6,33,34,69,74],$VE1=[6,33,34,58,69,74,77],$VF1=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,163,164,168,169,170,171,172,173,174,175,176,177,178],$VG1=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,163,164,168,170,171,172,173,174,175,176,177,178],$VH1=[43,44,88,89,91,92,93,96,117,118],$VI1=[1,278],$VJ1=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160],$VK1=[2,65],$VL1=[1,290],$VM1=[1,292],$VN1=[1,297],$VO1=[1,299],$VP1=[2,193],$VQ1=[1,6,33,34,43,44,45,58,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,150,151,152,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$VR1=[1,308],$VS1=[6,33,34,74,119,124],$VT1=[1,6,33,34,43,44,45,58,61,69,74,77,88,89,90,91,92,93,96,100,102,117,118,119,124,126,135,137,138,139,143,144,150,151,152,160,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],$VU1=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,144,160],$VV1=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,138,144,160],$VW1=[150,151,152],$VX1=[74,150,151,152],$VY1=[6,33,100],$VZ1=[1,320],$V_1=[6,33,34,74,100],$V$1=[6,33,34,61,74,100],$V02=[6,33,34,58,61,74,100],$V12=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,163,164,170,171,172,173,174,175,176,177,178],$V22=[1,6,33,34,45,49,69,74,77,88,89,90,91,92,93,96,100,117,118,119,124,126,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$V32=[14,30,36,37,41,43,44,47,48,51,52,53,54,55,56,64,65,66,67,71,72,87,90,98,101,103,111,121,122,123,129,133,134,137,139,141,143,153,159,161,162,163,164,165,166],$V42=[2,182],$V52=[6,33,34],$V62=[2,77],$V72=[1,335],$V82=[1,336],$V92=[1,6,33,34,45,69,74,77,90,100,119,124,126,131,132,135,137,138,139,143,144,155,157,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Va2=[34,155,157],$Vb2=[1,6,34,45,69,74,77,90,100,119,124,126,135,138,144,160],$Vc2=[1,362],$Vd2=[1,368],$Ve2=[1,6,34,45,135,160],$Vf2=[2,91],$Vg2=[1,379],$Vh2=[1,380],$Vi2=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,155,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vj2=[1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,139,143,144,160],$Vk2=[1,392],$Vl2=[1,393],$Vm2=[6,33,34,100],$Vn2=[6,33,34,74],$Vo2=[1,6,33,34,45,69,74,77,90,100,119,124,126,131,135,137,138,139,143,144,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],$Vp2=[33,74],$Vq2=[1,420],$Vr2=[1,421],$Vs2=[1,427],$Vt2=[1,428]; +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,21],$V1=[1,51],$V2=[1,84],$V3=[1,85],$V4=[1,80],$V5=[1,86],$V6=[1,87],$V7=[1,82],$V8=[1,83],$V9=[1,58],$Va=[1,60],$Vb=[1,61],$Vc=[1,62],$Vd=[1,63],$Ve=[1,64],$Vf=[1,52],$Vg=[1,39],$Vh=[1,33],$Vi=[1,69],$Vj=[1,70],$Vk=[1,32],$Vl=[1,79],$Vm=[1,49],$Vn=[1,53],$Vo=[1,54],$Vp=[1,67],$Vq=[1,68],$Vr=[1,66],$Vs=[1,44],$Vt=[1,50],$Vu=[1,65],$Vv=[1,74],$Vw=[1,75],$Vx=[1,76],$Vy=[1,77],$Vz=[1,48],$VA=[1,73],$VB=[1,35],$VC=[1,36],$VD=[1,37],$VE=[1,38],$VF=[1,40],$VG=[1,41],$VH=[1,88],$VI=[1,6,33,44,133],$VJ=[1,103],$VK=[1,91],$VL=[1,90],$VM=[1,89],$VN=[1,92],$VO=[1,93],$VP=[1,94],$VQ=[1,95],$VR=[1,96],$VS=[1,97],$VT=[1,98],$VU=[1,99],$VV=[1,100],$VW=[1,101],$VX=[1,102],$VY=[1,106],$VZ=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$V_=[2,169],$V$=[1,112],$V01=[1,117],$V11=[1,113],$V21=[1,114],$V31=[1,115],$V41=[1,118],$V51=[1,111],$V61=[1,6,33,44,133,135,137,141,158],$V71=[1,6,32,33,42,43,44,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$V81=[2,96],$V91=[2,75],$Va1=[1,128],$Vb1=[1,133],$Vc1=[1,134],$Vd1=[1,136],$Ve1=[1,140],$Vf1=[1,138],$Vg1=[1,6,32,33,42,43,44,57,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vh1=[2,93],$Vi1=[1,6,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vj1=[2,28],$Vk1=[1,165],$Vl1=[2,64],$Vm1=[1,173],$Vn1=[1,185],$Vo1=[1,187],$Vp1=[1,182],$Vq1=[1,189],$Vr1=[1,6,32,33,42,43,44,57,67,72,75,86,87,88,89,90,91,94,98,100,115,116,117,122,124,133,135,136,137,141,142,158,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177],$Vs1=[2,115],$Vt1=[1,6,32,33,42,43,44,60,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vu1=[1,6,30,32,33,42,43,44,57,60,67,72,75,86,87,88,89,90,91,94,98,100,106,115,116,117,122,124,133,135,136,137,141,142,148,149,150,158,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177],$Vv1=[1,6,32,33,42,43,44,48,60,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vw1=[1,236],$Vx1=[42,43,116],$Vy1=[1,246],$Vz1=[1,245],$VA1=[2,73],$VB1=[1,256],$VC1=[6,32,33,67,72],$VD1=[6,32,33,57,67,72,75],$VE1=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,161,162,166,167,168,169,170,171,172,173,174,175,176],$VF1=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,161,162,166,168,169,170,171,172,173,174,175,176],$VG1=[42,43,86,87,89,90,91,94,115,116],$VH1=[1,275],$VI1=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158],$VJ1=[2,63],$VK1=[1,287],$VL1=[1,289],$VM1=[1,294],$VN1=[1,296],$VO1=[2,190],$VP1=[1,6,32,33,42,43,44,57,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,148,149,150,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$VQ1=[1,305],$VR1=[6,32,33,72,117,122],$VS1=[1,6,32,33,42,43,44,57,60,67,72,75,86,87,88,89,90,91,94,98,100,115,116,117,122,124,133,135,136,137,141,142,148,149,150,158,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177],$VT1=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,142,158],$VU1=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,136,142,158],$VV1=[148,149,150],$VW1=[72,148,149,150],$VX1=[6,32,98],$VY1=[1,317],$VZ1=[6,32,33,72,98],$V_1=[6,32,33,60,72,98],$V$1=[6,32,33,57,60,72,98],$V02=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,161,162,168,169,170,171,172,173,174,175,176],$V12=[1,6,32,33,44,48,67,72,75,86,87,88,89,90,91,94,98,115,116,117,122,124,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$V22=[13,29,35,36,40,42,43,46,47,50,51,52,53,54,55,63,64,65,69,70,85,88,96,99,101,109,119,120,121,127,131,132,135,137,139,141,151,157,159,160,161,162,163,164],$V32=[2,179],$V42=[6,32,33],$V52=[2,74],$V62=[1,332],$V72=[1,333],$V82=[1,6,32,33,44,67,72,75,88,98,117,122,124,129,130,133,135,136,137,141,142,153,155,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$V92=[33,153,155],$Va2=[1,6,33,44,67,72,75,88,98,117,122,124,133,136,142,158],$Vb2=[1,359],$Vc2=[1,365],$Vd2=[1,6,33,44,133,158],$Ve2=[2,88],$Vf2=[1,376],$Vg2=[1,377],$Vh2=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,153,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vi2=[1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,137,141,142,158],$Vj2=[1,389],$Vk2=[1,390],$Vl2=[6,32,33,98],$Vm2=[6,32,33,72],$Vn2=[1,6,32,33,44,67,72,75,88,98,117,122,124,129,133,135,136,137,141,142,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],$Vo2=[32,72],$Vp2=[1,417],$Vq2=[1,418],$Vr2=[1,424],$Vs2=[1,425]; var parser = {trace: function trace() { }, yy: {}, -symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"Statement":8,"FuncDirective":9,"YieldReturn":10,"AwaitReturn":11,"Return":12,"Comment":13,"STATEMENT":14,"Import":15,"Export":16,"Value":17,"Invocation":18,"Code":19,"Operation":20,"Assign":21,"If":22,"Try":23,"While":24,"For":25,"Switch":26,"Class":27,"Throw":28,"Yield":29,"YIELD":30,"FROM":31,"Block":32,"INDENT":33,"OUTDENT":34,"Identifier":35,"IDENTIFIER":36,"CSX_TAG":37,"Property":38,"PROPERTY":39,"AlphaNumeric":40,"NUMBER":41,"String":42,"STRING":43,"STRING_START":44,"STRING_END":45,"Regex":46,"REGEX":47,"REGEX_START":48,"REGEX_END":49,"Literal":50,"JS":51,"UNDEFINED":52,"NULL":53,"BOOL":54,"INFINITY":55,"NAN":56,"Assignable":57,"=":58,"AssignObj":59,"ObjAssignable":60,":":61,"SimpleObjAssignable":62,"ThisProperty":63,"RETURN":64,"AWAIT":65,"HERECOMMENT":66,"PARAM_START":67,"ParamList":68,"PARAM_END":69,"FuncGlyph":70,"->":71,"=>":72,"OptComma":73,",":74,"Param":75,"ParamVar":76,"...":77,"Array":78,"Object":79,"Splat":80,"SimpleAssignable":81,"Accessor":82,"Parenthetical":83,"Range":84,"This":85,"Super":86,"SUPER":87,".":88,"INDEX_START":89,"INDEX_END":90,"?.":91,"::":92,"?::":93,"Index":94,"IndexValue":95,"INDEX_SOAK":96,"Slice":97,"{":98,"AssignList":99,"}":100,"CLASS":101,"EXTENDS":102,"IMPORT":103,"ImportDefaultSpecifier":104,"ImportNamespaceSpecifier":105,"ImportSpecifierList":106,"ImportSpecifier":107,"AS":108,"DEFAULT":109,"IMPORT_ALL":110,"EXPORT":111,"ExportSpecifierList":112,"EXPORT_ALL":113,"ExportSpecifier":114,"OptFuncExist":115,"Arguments":116,"FUNC_EXIST":117,"CALL_START":118,"CALL_END":119,"ArgList":120,"THIS":121,"@":122,"[":123,"]":124,"RangeDots":125,"..":126,"Arg":127,"SimpleArgs":128,"TRY":129,"Catch":130,"FINALLY":131,"CATCH":132,"THROW":133,"(":134,")":135,"WhileSource":136,"WHILE":137,"WHEN":138,"UNTIL":139,"Loop":140,"LOOP":141,"ForBody":142,"FOR":143,"BY":144,"ForStart":145,"ForSource":146,"ForVariables":147,"OWN":148,"ForValue":149,"FORIN":150,"FOROF":151,"FORFROM":152,"SWITCH":153,"Whens":154,"ELSE":155,"When":156,"LEADING_WHEN":157,"IfBlock":158,"IF":159,"POST_IF":160,"UNARY":161,"UNARY_MATH":162,"-":163,"+":164,"--":165,"++":166,"?":167,"MATH":168,"**":169,"SHIFT":170,"COMPARE":171,"&":172,"^":173,"|":174,"&&":175,"||":176,"BIN?":177,"RELATION":178,"COMPOUND_ASSIGN":179,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"TERMINATOR",14:"STATEMENT",30:"YIELD",31:"FROM",33:"INDENT",34:"OUTDENT",36:"IDENTIFIER",37:"CSX_TAG",39:"PROPERTY",41:"NUMBER",43:"STRING",44:"STRING_START",45:"STRING_END",47:"REGEX",48:"REGEX_START",49:"REGEX_END",51:"JS",52:"UNDEFINED",53:"NULL",54:"BOOL",55:"INFINITY",56:"NAN",58:"=",61:":",64:"RETURN",65:"AWAIT",66:"HERECOMMENT",67:"PARAM_START",69:"PARAM_END",71:"->",72:"=>",74:",",77:"...",87:"SUPER",88:".",89:"INDEX_START",90:"INDEX_END",91:"?.",92:"::",93:"?::",96:"INDEX_SOAK",98:"{",100:"}",101:"CLASS",102:"EXTENDS",103:"IMPORT",108:"AS",109:"DEFAULT",110:"IMPORT_ALL",111:"EXPORT",113:"EXPORT_ALL",117:"FUNC_EXIST",118:"CALL_START",119:"CALL_END",121:"THIS",122:"@",123:"[",124:"]",126:"..",129:"TRY",131:"FINALLY",132:"CATCH",133:"THROW",134:"(",135:")",137:"WHILE",138:"WHEN",139:"UNTIL",141:"LOOP",143:"FOR",144:"BY",148:"OWN",150:"FORIN",151:"FOROF",152:"FORFROM",153:"SWITCH",155:"ELSE",157:"LEADING_WHEN",159:"IF",160:"POST_IF",161:"UNARY",162:"UNARY_MATH",163:"-",164:"+",165:"--",166:"++",167:"?",168:"MATH",169:"**",170:"SHIFT",171:"COMPARE",172:"&",173:"^",174:"|",175:"&&",176:"||",177:"BIN?",178:"RELATION",179:"COMPOUND_ASSIGN"}, -productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[29,1],[29,2],[29,3],[32,2],[32,3],[35,1],[35,1],[38,1],[40,1],[40,1],[42,1],[42,3],[46,1],[46,3],[50,1],[50,1],[50,1],[50,1],[50,1],[50,1],[50,1],[50,1],[21,3],[21,4],[21,5],[59,1],[59,3],[59,5],[59,3],[59,5],[59,1],[62,1],[62,1],[62,1],[60,1],[60,1],[12,2],[12,1],[10,3],[10,2],[11,3],[11,2],[13,1],[19,5],[19,2],[70,1],[70,1],[73,0],[73,1],[68,0],[68,1],[68,3],[68,4],[68,6],[75,1],[75,2],[75,3],[75,1],[76,1],[76,1],[76,1],[76,1],[80,2],[81,1],[81,2],[81,2],[81,1],[57,1],[57,1],[57,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[86,3],[86,4],[82,2],[82,2],[82,2],[82,2],[82,1],[82,1],[94,3],[94,2],[95,1],[95,1],[79,4],[99,0],[99,1],[99,3],[99,4],[99,6],[27,1],[27,2],[27,3],[27,4],[27,2],[27,3],[27,4],[27,5],[15,2],[15,4],[15,4],[15,5],[15,7],[15,6],[15,9],[106,1],[106,3],[106,4],[106,4],[106,6],[107,1],[107,3],[107,1],[107,3],[104,1],[105,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,4],[16,7],[112,1],[112,3],[112,4],[112,4],[112,6],[114,1],[114,3],[114,3],[114,1],[114,3],[18,3],[18,3],[18,3],[18,3],[115,0],[115,1],[116,2],[116,4],[85,1],[85,1],[63,2],[78,2],[78,4],[125,1],[125,1],[84,5],[97,3],[97,2],[97,2],[97,1],[120,1],[120,3],[120,4],[120,4],[120,6],[127,1],[127,1],[127,1],[128,1],[128,3],[23,2],[23,3],[23,4],[23,5],[130,3],[130,3],[130,2],[28,2],[83,3],[83,5],[136,2],[136,4],[136,2],[136,4],[24,2],[24,2],[24,2],[24,1],[140,2],[140,2],[25,2],[25,2],[25,2],[142,2],[142,4],[142,2],[145,2],[145,3],[149,1],[149,1],[149,1],[149,1],[147,1],[147,3],[146,2],[146,2],[146,4],[146,4],[146,4],[146,6],[146,6],[146,2],[146,4],[26,5],[26,7],[26,4],[26,6],[154,1],[154,2],[156,3],[156,4],[158,3],[158,5],[22,1],[22,3],[22,3],[22,3],[20,2],[20,2],[20,2],[20,2],[20,2],[20,2],[20,2],[20,2],[20,2],[20,2],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,3],[20,5],[20,4]], +symbols_: {"error":2,"Root":3,"Body":4,"Line":5,"TERMINATOR":6,"Expression":7,"Statement":8,"FuncDirective":9,"YieldReturn":10,"AwaitReturn":11,"Return":12,"STATEMENT":13,"Import":14,"Export":15,"Value":16,"Invocation":17,"Code":18,"Operation":19,"Assign":20,"If":21,"Try":22,"While":23,"For":24,"Switch":25,"Class":26,"Throw":27,"Yield":28,"YIELD":29,"FROM":30,"Block":31,"INDENT":32,"OUTDENT":33,"Identifier":34,"IDENTIFIER":35,"CSX_TAG":36,"Property":37,"PROPERTY":38,"AlphaNumeric":39,"NUMBER":40,"String":41,"STRING":42,"STRING_START":43,"STRING_END":44,"Regex":45,"REGEX":46,"REGEX_START":47,"REGEX_END":48,"Literal":49,"JS":50,"UNDEFINED":51,"NULL":52,"BOOL":53,"INFINITY":54,"NAN":55,"Assignable":56,"=":57,"AssignObj":58,"ObjAssignable":59,":":60,"SimpleObjAssignable":61,"ThisProperty":62,"RETURN":63,"AWAIT":64,"PARAM_START":65,"ParamList":66,"PARAM_END":67,"FuncGlyph":68,"->":69,"=>":70,"OptComma":71,",":72,"Param":73,"ParamVar":74,"...":75,"Array":76,"Object":77,"Splat":78,"SimpleAssignable":79,"Accessor":80,"Parenthetical":81,"Range":82,"This":83,"Super":84,"SUPER":85,".":86,"INDEX_START":87,"INDEX_END":88,"?.":89,"::":90,"?::":91,"Index":92,"IndexValue":93,"INDEX_SOAK":94,"Slice":95,"{":96,"AssignList":97,"}":98,"CLASS":99,"EXTENDS":100,"IMPORT":101,"ImportDefaultSpecifier":102,"ImportNamespaceSpecifier":103,"ImportSpecifierList":104,"ImportSpecifier":105,"AS":106,"DEFAULT":107,"IMPORT_ALL":108,"EXPORT":109,"ExportSpecifierList":110,"EXPORT_ALL":111,"ExportSpecifier":112,"OptFuncExist":113,"Arguments":114,"FUNC_EXIST":115,"CALL_START":116,"CALL_END":117,"ArgList":118,"THIS":119,"@":120,"[":121,"]":122,"RangeDots":123,"..":124,"Arg":125,"SimpleArgs":126,"TRY":127,"Catch":128,"FINALLY":129,"CATCH":130,"THROW":131,"(":132,")":133,"WhileSource":134,"WHILE":135,"WHEN":136,"UNTIL":137,"Loop":138,"LOOP":139,"ForBody":140,"FOR":141,"BY":142,"ForStart":143,"ForSource":144,"ForVariables":145,"OWN":146,"ForValue":147,"FORIN":148,"FOROF":149,"FORFROM":150,"SWITCH":151,"Whens":152,"ELSE":153,"When":154,"LEADING_WHEN":155,"IfBlock":156,"IF":157,"POST_IF":158,"UNARY":159,"UNARY_MATH":160,"-":161,"+":162,"--":163,"++":164,"?":165,"MATH":166,"**":167,"SHIFT":168,"COMPARE":169,"&":170,"^":171,"|":172,"&&":173,"||":174,"BIN?":175,"RELATION":176,"COMPOUND_ASSIGN":177,"$accept":0,"$end":1}, +terminals_: {2:"error",6:"TERMINATOR",13:"STATEMENT",29:"YIELD",30:"FROM",32:"INDENT",33:"OUTDENT",35:"IDENTIFIER",36:"CSX_TAG",38:"PROPERTY",40:"NUMBER",42:"STRING",43:"STRING_START",44:"STRING_END",46:"REGEX",47:"REGEX_START",48:"REGEX_END",50:"JS",51:"UNDEFINED",52:"NULL",53:"BOOL",54:"INFINITY",55:"NAN",57:"=",60:":",63:"RETURN",64:"AWAIT",65:"PARAM_START",67:"PARAM_END",69:"->",70:"=>",72:",",75:"...",85:"SUPER",86:".",87:"INDEX_START",88:"INDEX_END",89:"?.",90:"::",91:"?::",94:"INDEX_SOAK",96:"{",98:"}",99:"CLASS",100:"EXTENDS",101:"IMPORT",106:"AS",107:"DEFAULT",108:"IMPORT_ALL",109:"EXPORT",111:"EXPORT_ALL",115:"FUNC_EXIST",116:"CALL_START",117:"CALL_END",119:"THIS",120:"@",121:"[",122:"]",124:"..",127:"TRY",129:"FINALLY",130:"CATCH",131:"THROW",132:"(",133:")",135:"WHILE",136:"WHEN",137:"UNTIL",139:"LOOP",141:"FOR",142:"BY",146:"OWN",148:"FORIN",149:"FOROF",150:"FORFROM",151:"SWITCH",153:"ELSE",155:"LEADING_WHEN",157:"IF",158:"POST_IF",159:"UNARY",160:"UNARY_MATH",161:"-",162:"+",163:"--",164:"++",165:"?",166:"MATH",167:"**",168:"SHIFT",169:"COMPARE",170:"&",171:"^",172:"|",173:"&&",174:"||",175:"BIN?",176:"RELATION",177:"COMPOUND_ASSIGN"}, +productions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[28,1],[28,2],[28,3],[31,2],[31,3],[34,1],[34,1],[37,1],[39,1],[39,1],[41,1],[41,3],[45,1],[45,3],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[20,3],[20,4],[20,5],[58,1],[58,3],[58,5],[58,3],[58,5],[61,1],[61,1],[61,1],[59,1],[59,1],[12,2],[12,1],[10,3],[10,2],[11,3],[11,2],[18,5],[18,2],[68,1],[68,1],[71,0],[71,1],[66,0],[66,1],[66,3],[66,4],[66,6],[73,1],[73,2],[73,3],[73,1],[74,1],[74,1],[74,1],[74,1],[78,2],[79,1],[79,2],[79,2],[79,1],[56,1],[56,1],[56,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[84,3],[84,4],[80,2],[80,2],[80,2],[80,2],[80,1],[80,1],[92,3],[92,2],[93,1],[93,1],[77,4],[97,0],[97,1],[97,3],[97,4],[97,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[14,2],[14,4],[14,4],[14,5],[14,7],[14,6],[14,9],[104,1],[104,3],[104,4],[104,4],[104,6],[105,1],[105,3],[105,1],[105,3],[102,1],[103,3],[15,3],[15,5],[15,2],[15,4],[15,5],[15,6],[15,3],[15,4],[15,7],[110,1],[110,3],[110,4],[110,4],[110,6],[112,1],[112,3],[112,3],[112,1],[112,3],[17,3],[17,3],[17,3],[17,3],[113,0],[113,1],[114,2],[114,4],[83,1],[83,1],[62,2],[76,2],[76,4],[123,1],[123,1],[82,5],[95,3],[95,2],[95,2],[95,1],[118,1],[118,3],[118,4],[118,4],[118,6],[125,1],[125,1],[125,1],[126,1],[126,3],[22,2],[22,3],[22,4],[22,5],[128,3],[128,3],[128,2],[27,2],[81,3],[81,5],[134,2],[134,4],[134,2],[134,4],[23,2],[23,2],[23,2],[23,1],[138,2],[138,2],[24,2],[24,2],[24,2],[140,2],[140,4],[140,2],[143,2],[143,3],[147,1],[147,1],[147,1],[147,1],[145,1],[145,3],[144,2],[144,2],[144,4],[144,4],[144,4],[144,6],[144,6],[144,2],[144,4],[25,5],[25,7],[25,4],[25,6],[152,1],[152,2],[154,3],[154,4],[156,3],[156,5],[21,1],[21,3],[21,3],[21,3],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -98,455 +98,452 @@ break; case 5: this.$ = $$[$0-1]; break; -case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 38: case 43: case 45: case 59: case 60: case 61: case 62: case 63: case 64: case 76: case 77: case 87: case 88: case 89: case 90: case 95: case 96: case 99: case 103: case 104: case 112: case 193: case 194: case 196: case 226: case 227: case 245: case 251: +case 6: case 7: case 8: case 9: case 10: case 11: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 37: case 42: case 44: case 58: case 59: case 60: case 61: case 62: case 73: case 74: case 84: case 85: case 86: case 87: case 92: case 93: case 96: case 100: case 101: case 109: case 190: case 191: case 193: case 223: case 224: case 242: case 248: this.$ = $$[$0]; break; -case 13: +case 12: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.StatementLiteral($$[$0])); break; -case 29: +case 28: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Op($$[$0], new yy.Value(new yy.Literal('')))); break; -case 30: case 255: case 256: case 259: +case 29: case 252: case 253: case 256: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0])); break; -case 31: +case 30: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op($$[$0-2].concat($$[$0-1]), $$[$0])); break; -case 32: +case 31: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Block); break; -case 33: case 113: +case 32: case 110: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-1]); break; -case 34: +case 33: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.IdentifierLiteral($$[$0])); break; -case 35: +case 34: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.CSXTag($$[$0])); break; -case 36: +case 35: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.PropertyName($$[$0])); break; -case 37: +case 36: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NumberLiteral($$[$0])); break; -case 39: +case 38: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.StringLiteral($$[$0])); break; -case 40: +case 39: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.StringWithInterpolations($$[$0-1])); break; -case 41: +case 40: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.RegexLiteral($$[$0])); break; -case 42: +case 41: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.RegexWithInterpolations($$[$0-1].args)); break; -case 44: +case 43: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.PassthroughLiteral($$[$0])); break; -case 46: +case 45: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.UndefinedLiteral); break; -case 47: +case 46: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NullLiteral); break; -case 48: +case 47: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.BooleanLiteral($$[$0])); break; -case 49: +case 48: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.InfinityLiteral($$[$0])); break; -case 50: +case 49: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NaNLiteral); break; -case 51: +case 50: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0])); break; -case 52: +case 51: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0])); break; -case 53: +case 52: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1])); break; -case 54: case 92: case 97: case 98: case 100: case 101: case 102: case 228: case 229: +case 53: case 89: case 94: case 95: case 97: case 98: case 99: case 225: case 226: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value($$[$0])); break; -case 55: +case 54: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', { operatorToken: yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])) })); break; -case 56: +case 55: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', { operatorToken: yy.addDataToNode(yy, _$[$0-3])(new yy.Literal($$[$0-3])) })); break; -case 57: +case 56: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, { operatorToken: yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])) })); break; -case 58: +case 57: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, { operatorToken: yy.addDataToNode(yy, _$[$0-3])(new yy.Literal($$[$0-3])) })); break; -case 65: +case 63: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Return($$[$0])); break; -case 66: +case 64: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Return); break; -case 67: +case 65: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.YieldReturn($$[$0])); break; -case 68: +case 66: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.YieldReturn); break; -case 69: +case 67: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.AwaitReturn($$[$0])); break; -case 70: +case 68: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.AwaitReturn); break; -case 71: -this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Comment($$[$0])); -break; -case 72: +case 69: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1])); break; -case 73: +case 70: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1])); break; -case 74: +case 71: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('func'); break; -case 75: +case 72: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('boundfunc'); break; -case 78: case 118: +case 75: case 115: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])([]); break; -case 79: case 119: case 138: case 158: case 188: case 230: +case 76: case 116: case 135: case 155: case 185: case 227: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])([$$[$0]]); break; -case 80: case 120: case 139: case 159: case 189: +case 77: case 117: case 136: case 156: case 186: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].concat($$[$0])); break; -case 81: case 121: case 140: case 160: case 190: +case 78: case 118: case 137: case 157: case 187: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])($$[$0-3].concat($$[$0])); break; -case 82: case 122: case 142: case 162: case 192: +case 79: case 119: case 139: case 159: case 189: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2])); break; -case 83: +case 80: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Param($$[$0])); break; -case 84: +case 81: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true)); break; -case 85: +case 82: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0])); break; -case 86: case 195: +case 83: case 192: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Expansion); break; -case 91: +case 88: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Splat($$[$0-1])); break; -case 93: +case 90: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].add($$[$0])); break; -case 94: +case 91: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0]))); break; -case 105: +case 102: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0])))); break; -case 106: +case 103: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0-1])(new yy.Index($$[$0-1])))); break; -case 107: +case 104: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0])); break; -case 108: +case 105: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak')); break; -case 109: +case 106: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Access(new yy.PropertyName('prototype'))), yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))]); break; -case 110: +case 107: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Access(new yy.PropertyName('prototype'), 'soak')), yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))]); break; -case 111: +case 108: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Access(new yy.PropertyName('prototype'))); break; -case 114: +case 111: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(yy.extend($$[$0], { soak: true })); break; -case 115: +case 112: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Index($$[$0])); break; -case 116: +case 113: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Slice($$[$0])); break; -case 117: +case 114: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated)); break; -case 123: +case 120: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Class); break; -case 124: +case 121: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0])); break; -case 125: +case 122: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class(null, $$[$0])); break; -case 126: +case 123: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0])); break; -case 127: +case 124: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class($$[$0])); break; -case 128: +case 125: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0])); break; -case 129: +case 126: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0])); break; -case 130: +case 127: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0])); break; -case 131: +case 128: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ImportDeclaration(null, $$[$0])); break; -case 132: +case 129: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-2], null), $$[$0])); break; -case 133: +case 130: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, $$[$0-2]), $$[$0])); break; -case 134: +case 131: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList([])), $$[$0])); break; -case 135: +case 132: this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause(null, new yy.ImportSpecifierList($$[$0-4])), $$[$0])); break; -case 136: +case 133: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-4], $$[$0-2]), $$[$0])); break; -case 137: +case 134: this.$ = yy.addDataToNode(yy, _$[$0-8], _$[$0])(new yy.ImportDeclaration(new yy.ImportClause($$[$0-7], new yy.ImportSpecifierList($$[$0-4])), $$[$0])); break; -case 141: case 161: case 175: case 191: +case 138: case 158: case 172: case 188: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])($$[$0-2]); break; -case 143: +case 140: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier($$[$0])); break; -case 144: +case 141: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], $$[$0])); break; -case 145: +case 142: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0]))); break; -case 146: +case 143: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; -case 147: +case 144: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportDefaultSpecifier($$[$0])); break; -case 148: +case 145: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportNamespaceSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; -case 149: +case 146: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]))); break; -case 150: +case 147: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-2]))); break; -case 151: +case 148: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ExportNamedDeclaration($$[$0])); break; -case 152: +case 149: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-2], $$[$0], null, { moduleDeclaration: 'export' }))); break; -case 153: +case 150: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-3], $$[$0], null, { moduleDeclaration: 'export' }))); break; -case 154: +case 151: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.ExportNamedDeclaration(new yy.Assign($$[$0-4], $$[$0-1], null, { moduleDeclaration: 'export' }))); break; -case 155: +case 152: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportDefaultDeclaration($$[$0])); break; -case 156: +case 153: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.ExportAllDeclaration(new yy.Literal($$[$0-2]), $$[$0])); break; -case 157: +case 154: this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList($$[$0-4]), $$[$0])); break; -case 163: +case 160: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier($$[$0])); break; -case 164: +case 161: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], $$[$0])); break; -case 165: +case 162: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], new yy.Literal($$[$0]))); break; -case 166: +case 163: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0]))); break; -case 167: +case 164: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0-2]), $$[$0])); break; -case 168: +case 165: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.TaggedTemplateCall($$[$0-2], $$[$0], $$[$0-1])); break; -case 169: case 170: +case 166: case 167: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1])); break; -case 171: +case 168: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-2])(new yy.Super), $$[$0], $$[$0-1])); break; -case 172: +case 169: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(false); break; -case 173: +case 170: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(true); break; -case 174: +case 171: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([]); break; -case 176: case 177: +case 173: case 174: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value(new yy.ThisLiteral)); break; -case 178: +case 175: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value(yy.addDataToNode(yy, _$[$0-1])(new yy.ThisLiteral), [yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))], 'this')); break; -case 179: +case 176: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Arr([])); break; -case 180: +case 177: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Arr($$[$0-2])); break; -case 181: +case 178: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('inclusive'); break; -case 182: +case 179: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('exclusive'); break; -case 183: +case 180: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2])); break; -case 184: +case 181: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1])); break; -case 185: +case 182: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0])); break; -case 186: +case 183: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1])); break; -case 187: +case 184: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Range(null, null, $$[$0])); break; -case 197: +case 194: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0])); break; -case 198: +case 195: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Try($$[$0])); break; -case 199: +case 196: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1])); break; -case 200: +case 197: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0])); break; -case 201: +case 198: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0])); break; -case 202: +case 199: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-1], $$[$0]]); break; -case 203: +case 200: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([yy.addDataToNode(yy, _$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]); break; -case 204: +case 201: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([null, $$[$0]]); break; -case 205: +case 202: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Throw($$[$0])); break; -case 206: +case 203: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Parens($$[$0-1])); break; -case 207: +case 204: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Parens($$[$0-2])); break; -case 208: +case 205: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0])); break; -case 209: +case 206: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { guard: $$[$0] })); break; -case 210: +case 207: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0], { invert: true })); break; -case 211: +case 208: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { invert: true, guard: $$[$0] })); break; -case 212: +case 209: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].addBody($$[$0])); break; -case 213: case 214: +case 210: case 211: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0].addBody(yy.addDataToNode(yy, _$[$0-1])(yy.Block.wrap([$$[$0-1]])))); break; -case 215: +case 212: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])($$[$0]); break; -case 216: +case 213: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While(yy.addDataToNode(yy, _$[$0-1])(new yy.BooleanLiteral('true'))).addBody($$[$0])); break; -case 217: +case 214: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While(yy.addDataToNode(yy, _$[$0-1])(new yy.BooleanLiteral('true'))).addBody(yy.addDataToNode(yy, _$[$0])(yy.Block.wrap([$$[$0]])))); break; -case 218: case 219: +case 215: case 216: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); break; -case 220: +case 217: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1])); break; -case 221: +case 218: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: yy.addDataToNode(yy, _$[$0])(new yy.Value($$[$0])) }); break; -case 222: +case 219: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), step: $$[$0] }); break; -case 223: +case 220: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])((function () { $$[$0].own = $$[$0-1].own; $$[$0].ownTag = $$[$0-1].ownTag; @@ -555,147 +552,147 @@ this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])((function () { return $$[$0]; }())); break; -case 224: +case 221: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0]); break; -case 225: +case 222: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { $$[$0].own = true; $$[$0].ownTag = yy.addDataToNode(yy, _$[$0-1])(new yy.Literal($$[$0-1])); return $$[$0]; }())); break; -case 231: +case 228: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-2], $$[$0]]); break; -case 232: +case 229: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0] }); break; -case 233: +case 230: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0], object: true }); break; -case 234: +case 231: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0] }); break; -case 235: +case 232: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0], object: true }); break; -case 236: +case 233: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], step: $$[$0] }); break; -case 237: +case 234: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])({ source: $$[$0-4], guard: $$[$0-2], step: $$[$0] }); break; -case 238: +case 235: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])({ source: $$[$0-4], step: $$[$0-2], guard: $$[$0] }); break; -case 239: +case 236: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ source: $$[$0], from: true }); break; -case 240: +case 237: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ source: $$[$0-2], guard: $$[$0], from: true }); break; -case 241: +case 238: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1])); break; -case 242: +case 239: this.$ = yy.addDataToNode(yy, _$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1])); break; -case 243: +case 240: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1])); break; -case 244: +case 241: this.$ = yy.addDataToNode(yy, _$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1])); break; -case 246: +case 243: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].concat($$[$0])); break; -case 247: +case 244: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]); break; -case 248: +case 245: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]); break; -case 249: +case 246: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { type: $$[$0-2] })); break; -case 250: +case 247: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])($$[$0-4].addElse(yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], { type: $$[$0-2] })))); break; -case 252: +case 249: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].addElse($$[$0])); break; -case 253: case 254: +case 250: case 251: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0], yy.addDataToNode(yy, _$[$0-2])(yy.Block.wrap([$$[$0-2]])), { type: $$[$0-1], statement: true })); break; -case 257: +case 254: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('-', $$[$0])); break; -case 258: +case 255: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('+', $$[$0])); break; -case 260: +case 257: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', $$[$0])); break; -case 261: +case 258: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', $$[$0])); break; -case 262: +case 259: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true)); break; -case 263: +case 260: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true)); break; -case 264: +case 261: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Existence($$[$0-1])); break; -case 265: +case 262: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0])); break; -case 266: +case 263: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0])); break; -case 267: case 268: case 269: case 270: case 271: case 272: case 273: case 274: case 275: case 276: +case 264: case 265: case 266: case 267: case 268: case 269: case 270: case 271: case 272: case 273: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0])); break; -case 277: +case 274: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { if ($$[$0-1].charAt(0) === '!') { return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert(); @@ -704,19 +701,19 @@ this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { } }())); break; -case 278: +case 275: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1])); break; -case 279: +case 276: this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3])); break; -case 280: +case 277: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2])); break; } }, -table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:25,11:26,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$V1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{1:[3]},{1:[2,2],6:$VI},o($VJ,[2,3]),o($VJ,[2,6],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ,[2,7],{145:80,136:109,142:110,137:$Vw,139:$Vx,143:$Vz,160:$VZ}),o($VJ,[2,8]),o($V_,[2,16],{115:111,82:112,94:118,43:$V$,44:$V$,118:$V$,88:$V01,89:$V11,91:$V21,92:$V31,93:$V41,96:$V51,117:$V61}),o($V_,[2,17],{94:118,115:121,82:122,88:$V01,89:$V11,91:$V21,92:$V31,93:$V41,96:$V51,117:$V61,118:$V$}),o($V_,[2,18]),o($V_,[2,19]),o($V_,[2,20]),o($V_,[2,21]),o($V_,[2,22]),o($V_,[2,23]),o($V_,[2,24]),o($V_,[2,25]),o($V_,[2,26]),o($V_,[2,27]),o($V_,[2,28]),o($V71,[2,11]),o($V71,[2,12]),o($V71,[2,13]),o($V71,[2,14]),o($V71,[2,15]),o($VJ,[2,9]),o($VJ,[2,10]),o($V81,$V91,{58:[1,123]}),o($V81,[2,100]),o($V81,[2,101]),o($V81,[2,102]),o($V81,[2,103]),o($V81,[2,104]),{88:[1,125],89:[1,126],115:124,117:$V61,118:$V$},o([6,33,69,74],$Va1,{68:127,75:128,76:129,35:131,63:132,78:133,79:134,36:$V2,37:$V3,77:$Vb1,98:$Vm,122:$Vc1,123:$Vd1}),{32:137,33:$Ve1},{7:139,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:143,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:144,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:145,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:146,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:[1,147],65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{17:149,18:150,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:151,63:74,78:57,79:58,81:148,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,121:$Vq,122:$Vr,123:$Vs,134:$Vv},{17:149,18:150,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:151,63:74,78:57,79:58,81:152,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,121:$Vq,122:$Vr,123:$Vs,134:$Vv},o($Vh1,$Vi1,{165:[1,153],166:[1,154],179:[1,155]}),o($V_,[2,251],{155:[1,156]}),{32:157,33:$Ve1},{32:158,33:$Ve1},o($V_,[2,215]),{32:159,33:$Ve1},{7:160,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,161],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($Vj1,[2,123],{50:28,83:29,84:30,85:31,86:32,78:57,79:58,40:59,46:61,35:73,63:74,42:83,17:149,18:150,57:151,32:162,81:164,33:$Ve1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,87:$Vl,98:$Vm,102:[1,163],121:$Vq,122:$Vr,123:$Vs,134:$Vv}),{7:165,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o([1,6,34,45,135,137,139,143,160,167,168,169,170,171,172,173,174,175,176,177,178],$Vk1,{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,7:166,14:$V0,30:$Vf1,31:$Vl1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:[1,168],65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,141:$Vy,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($V71,$Vm1,{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,7:169,14:$V0,30:$Vf1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,141:$Vy,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o([1,6,33,34,45,74,100,135,137,139,143,160],[2,71]),{35:174,36:$V2,37:$V3,42:170,43:$V5,44:$V6,98:[1,173],104:171,105:172,110:$Vn1},{27:177,35:178,36:$V2,37:$V3,98:[1,176],101:$Vn,109:[1,179],113:[1,180]},o($Vh1,[2,97]),o($Vh1,[2,98]),o($V81,[2,43]),o($V81,[2,44]),o($V81,[2,45]),o($V81,[2,46]),o($V81,[2,47]),o($V81,[2,48]),o($V81,[2,49]),o($V81,[2,50]),{4:181,5:3,7:4,8:5,9:6,10:25,11:26,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$V1,33:[1,182],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:183,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:$Vo1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,120:185,121:$Vq,122:$Vr,123:$Vs,124:$Vq1,127:186,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V81,[2,176]),o($V81,[2,177],{38:190,39:$Vr1}),{33:[2,74]},{33:[2,75]},o($Vs1,[2,92]),o($Vs1,[2,95]),{7:192,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:193,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:194,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:196,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,32:195,33:$Ve1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{35:201,36:$V2,37:$V3,63:202,78:203,79:204,84:197,98:$Vm,122:$Vc1,123:$Vs,147:198,148:[1,199],149:200},{146:205,150:[1,206],151:[1,207],152:[1,208]},o([6,33,74,100],$Vt1,{42:83,99:209,59:210,60:211,62:212,13:213,40:214,35:215,38:216,63:217,36:$V2,37:$V3,39:$Vr1,41:$V4,43:$V5,44:$V6,66:$Vh,122:$Vc1}),o($Vu1,[2,37]),o($Vu1,[2,38]),o($V81,[2,41]),{17:149,18:218,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:151,63:74,78:57,79:58,81:219,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,121:$Vq,122:$Vr,123:$Vs,134:$Vv},o($Vv1,[2,34]),o($Vv1,[2,35]),o($Vw1,[2,39]),{4:220,5:3,7:4,8:5,9:6,10:25,11:26,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$V1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VJ,[2,5],{7:4,8:5,9:6,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,10:25,11:26,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,5:221,14:$V0,30:$V1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,137:$Vw,139:$Vx,141:$Vy,143:$Vz,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($V_,[2,264]),{7:222,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:223,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:224,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:225,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:226,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:227,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:228,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:229,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:230,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:231,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:232,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:233,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:234,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:235,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,214]),o($V_,[2,219]),{7:236,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,213]),o($V_,[2,218]),{42:237,43:$V5,44:$V6,116:238,118:$Vx1},o($Vs1,[2,93]),o($Vy1,[2,173]),{38:240,39:$Vr1},{38:241,39:$Vr1},o($Vs1,[2,111],{38:242,39:$Vr1}),{38:243,39:$Vr1},o($Vs1,[2,112]),{7:245,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vz1,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,95:244,97:246,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,125:247,126:$VA1,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{89:$V11,94:250,96:$V51},{116:251,118:$Vx1},o($Vs1,[2,94]),{6:[1,253],7:252,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,254],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{116:255,118:$Vx1},{38:256,39:$Vr1},{7:257,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o([6,33],$VB1,{73:260,69:[1,258],74:$VC1}),o($VD1,[2,79]),o($VD1,[2,83],{58:[1,262],77:[1,261]}),o($VD1,[2,86]),o($VE1,[2,87]),o($VE1,[2,88]),o($VE1,[2,89]),o($VE1,[2,90]),{38:190,39:$Vr1},{7:263,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:$Vo1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,120:185,121:$Vq,122:$Vr,123:$Vs,124:$Vq1,127:186,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,73]),{4:265,5:3,7:4,8:5,9:6,10:25,11:26,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$V1,34:[1,264],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VF1,[2,255],{145:80,136:106,142:107,167:$VN}),{7:146,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{136:109,137:$Vw,139:$Vx,142:110,143:$Vz,145:80,160:$VZ},o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,167,168,169,170,171,172,173,174,175,176,177,178],$Vk1,{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,7:166,14:$V0,30:$Vf1,31:$Vl1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,141:$Vy,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($VG1,[2,256],{145:80,136:106,142:107,167:$VN,169:$VP}),o($VG1,[2,257],{145:80,136:106,142:107,167:$VN,169:$VP}),o($VG1,[2,258],{145:80,136:106,142:107,167:$VN,169:$VP}),o($VF1,[2,259],{145:80,136:106,142:107,167:$VN}),o($VJ,[2,70],{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,7:266,14:$V0,30:$Vf1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,137:$Vm1,139:$Vm1,143:$Vm1,160:$Vm1,141:$Vy,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($V_,[2,260],{43:$Vi1,44:$Vi1,88:$Vi1,89:$Vi1,91:$Vi1,92:$Vi1,93:$Vi1,96:$Vi1,117:$Vi1,118:$Vi1}),o($Vy1,$V$,{115:111,82:112,94:118,88:$V01,89:$V11,91:$V21,92:$V31,93:$V41,96:$V51,117:$V61}),{82:122,88:$V01,89:$V11,91:$V21,92:$V31,93:$V41,94:118,96:$V51,115:121,117:$V61,118:$V$},o($VH1,$V91),o($V_,[2,261],{43:$Vi1,44:$Vi1,88:$Vi1,89:$Vi1,91:$Vi1,92:$Vi1,93:$Vi1,96:$Vi1,117:$Vi1,118:$Vi1}),o($V_,[2,262]),o($V_,[2,263]),{6:[1,269],7:267,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,268],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{32:270,33:$Ve1,159:[1,271]},o($V_,[2,198],{130:272,131:[1,273],132:[1,274]}),o($V_,[2,212]),o($V_,[2,220]),{33:[1,275],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},{154:276,156:277,157:$VI1},o($V_,[2,124]),{7:279,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($Vj1,[2,127],{32:280,33:$Ve1,43:$Vi1,44:$Vi1,88:$Vi1,89:$Vi1,91:$Vi1,92:$Vi1,93:$Vi1,96:$Vi1,117:$Vi1,118:$Vi1,102:[1,281]}),o($VJ1,[2,205],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ1,[2,30],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:282,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VJ,[2,68],{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,7:283,14:$V0,30:$Vf1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,137:$Vm1,139:$Vm1,143:$Vm1,160:$Vm1,141:$Vy,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($V71,$VK1,{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V71,[2,131]),{31:[1,284],74:[1,285]},{31:[1,286]},{33:$VL1,35:291,36:$V2,37:$V3,100:[1,287],106:288,107:289,109:$VM1},o([31,74],[2,147]),{108:[1,293]},{33:$VN1,35:298,36:$V2,37:$V3,100:[1,294],109:$VO1,112:295,114:296},o($V71,[2,151]),{58:[1,300]},{7:301,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{31:[1,302]},{6:$VI,135:[1,303]},{4:304,5:3,7:4,8:5,9:6,10:25,11:26,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$V1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o([6,33,74,124],$VP1,{145:80,136:106,142:107,125:305,77:[1,306],126:$VA1,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VQ1,[2,179]),o([6,33,124],$VB1,{73:307,74:$VR1}),o($VS1,[2,188]),{7:263,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:$Vo1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,120:309,121:$Vq,122:$Vr,123:$Vs,127:186,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VS1,[2,194]),o($VS1,[2,195]),o($VT1,[2,178]),o($VT1,[2,36]),{32:310,33:$Ve1,136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($VU1,[2,208],{145:80,136:106,142:107,137:$Vw,138:[1,311],139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VU1,[2,210],{145:80,136:106,142:107,137:$Vw,138:[1,312],139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V_,[2,216]),o($VV1,[2,217],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,160,163,164,167,168,169,170,171,172,173,174,175,176,177,178],[2,221],{144:[1,313]}),o($VW1,[2,224]),{35:201,36:$V2,37:$V3,63:202,78:203,79:204,98:$Vm,122:$Vc1,123:$Vd1,147:314,149:200},o($VW1,[2,230],{74:[1,315]}),o($VX1,[2,226]),o($VX1,[2,227]),o($VX1,[2,228]),o($VX1,[2,229]),o($V_,[2,223]),{7:316,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:317,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:318,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VY1,$VB1,{73:319,74:$VZ1}),o($V_1,[2,119]),o($V_1,[2,54],{61:[1,321]}),o($V$1,[2,63],{58:[1,322]}),o($V_1,[2,59]),o($V$1,[2,64]),o($V02,[2,60]),o($V02,[2,61]),o($V02,[2,62]),{49:[1,323],82:122,88:$V01,89:$V11,91:$V21,92:$V31,93:$V41,94:118,96:$V51,115:121,117:$V61,118:$V$},o($VH1,$Vi1),{6:$VI,45:[1,324]},o($VJ,[2,4]),o($V12,[2,265],{145:80,136:106,142:107,167:$VN,168:$VO,169:$VP}),o($V12,[2,266],{145:80,136:106,142:107,167:$VN,168:$VO,169:$VP}),o($VG1,[2,267],{145:80,136:106,142:107,167:$VN,169:$VP}),o($VG1,[2,268],{145:80,136:106,142:107,167:$VN,169:$VP}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,170,171,172,173,174,175,176,177,178],[2,269],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,171,172,173,174,175,176,177],[2,270],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,172,173,174,175,176,177],[2,271],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,173,174,175,176,177],[2,272],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,174,175,176,177],[2,273],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,175,176,177],[2,274],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,176,177],[2,275],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,177],[2,276],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,178:$VY}),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,144,160,171,172,173,174,175,176,177,178],[2,277],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ}),o($VV1,[2,254],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VV1,[2,253],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V22,[2,168]),o($V22,[2,169]),{7:263,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:$Vo1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,119:[1,325],120:326,121:$Vq,122:$Vr,123:$Vs,127:186,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($Vs1,[2,107]),o($Vs1,[2,108]),o($Vs1,[2,109]),o($Vs1,[2,110]),{90:[1,327]},{77:$Vz1,90:[2,115],125:328,126:$VA1,136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},{90:[2,116]},{7:329,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,90:[2,187],98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V32,[2,181]),o($V32,$V42),o($Vs1,[2,114]),o($V22,[2,170]),o($VJ1,[2,51],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:330,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:331,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V22,[2,171]),o($V81,[2,105]),{90:[1,332],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},{70:333,71:$Vj,72:$Vk},o($V52,$V62,{76:129,35:131,63:132,78:133,79:134,75:334,36:$V2,37:$V3,77:$Vb1,98:$Vm,122:$Vc1,123:$Vd1}),{6:$V72,33:$V82},o($VD1,[2,84]),{7:337,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VS1,$VP1,{145:80,136:106,142:107,77:[1,338],137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V92,[2,32]),{6:$VI,34:[1,339]},o($VJ,[2,69],{145:80,136:106,142:107,137:$VK1,139:$VK1,143:$VK1,160:$VK1,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ1,[2,278],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:340,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:341,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,252]),{7:342,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,199],{131:[1,343]}),{32:344,33:$Ve1},{32:347,33:$Ve1,35:345,36:$V2,37:$V3,79:346,98:$Vm},{154:348,156:277,157:$VI1},{34:[1,349],155:[1,350],156:351,157:$VI1},o($Va2,[2,245]),{7:353,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,128:352,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($Vb2,[2,125],{145:80,136:106,142:107,32:354,33:$Ve1,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V_,[2,128]),{7:355,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VJ1,[2,31],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ,[2,67],{145:80,136:106,142:107,137:$VK1,139:$VK1,143:$VK1,160:$VK1,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{42:356,43:$V5,44:$V6},{98:[1,358],105:357,110:$Vn1},{42:359,43:$V5,44:$V6},{31:[1,360]},o($VY1,$VB1,{73:361,74:$Vc2}),o($V_1,[2,138]),{33:$VL1,35:291,36:$V2,37:$V3,106:363,107:289,109:$VM1},o($V_1,[2,143],{108:[1,364]}),o($V_1,[2,145],{108:[1,365]}),{35:366,36:$V2,37:$V3},o($V71,[2,149]),o($VY1,$VB1,{73:367,74:$Vd2}),o($V_1,[2,158]),{33:$VN1,35:298,36:$V2,37:$V3,109:$VO1,112:369,114:296},o($V_1,[2,163],{108:[1,370]}),o($V_1,[2,166],{108:[1,371]}),{6:[1,373],7:372,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,374],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($Ve2,[2,155],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{42:375,43:$V5,44:$V6},o($V81,[2,206]),{6:$VI,34:[1,376]},{7:377,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o([14,30,36,37,41,43,44,47,48,51,52,53,54,55,56,64,65,66,67,71,72,87,98,101,103,111,121,122,123,129,133,134,137,139,141,143,153,159,161,162,163,164,165,166],$V42,{6:$Vf2,33:$Vf2,74:$Vf2,124:$Vf2}),{6:$Vg2,33:$Vh2,124:[1,378]},o([6,33,34,119,124],$V62,{17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,12:20,13:21,15:23,16:24,57:27,50:28,83:29,84:30,85:31,86:32,70:35,81:43,158:44,136:46,140:47,142:48,78:57,79:58,40:59,46:61,35:73,63:74,145:80,42:83,8:141,80:188,7:263,127:381,14:$V0,30:$Vf1,36:$V2,37:$V3,41:$V4,43:$V5,44:$V6,47:$V7,48:$V8,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,71:$Vj,72:$Vk,77:$Vp1,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,137:$Vw,139:$Vx,141:$Vy,143:$Vz,153:$VA,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH}),o($V52,$VB1,{73:382,74:$VR1}),o($Vi2,[2,249]),{7:383,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:384,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:385,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VW1,[2,225]),{35:201,36:$V2,37:$V3,63:202,78:203,79:204,98:$Vm,122:$Vc1,123:$Vd1,149:386},o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,139,143,160],[2,232],{145:80,136:106,142:107,138:[1,387],144:[1,388],163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($Vj2,[2,233],{145:80,136:106,142:107,138:[1,389],163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($Vj2,[2,239],{145:80,136:106,142:107,138:[1,390],163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{6:$Vk2,33:$Vl2,100:[1,391]},o($Vm2,$V62,{42:83,60:211,62:212,13:213,40:214,35:215,38:216,63:217,59:394,36:$V2,37:$V3,39:$Vr1,41:$V4,43:$V5,44:$V6,66:$Vh,122:$Vc1}),{7:395,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,396],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:397,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:[1,398],35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V81,[2,42]),o($Vw1,[2,40]),o($V22,[2,174]),o([6,33,119],$VB1,{73:399,74:$VR1}),o($Vs1,[2,113]),{7:400,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,90:[2,185],98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{90:[2,186],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($VJ1,[2,52],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{34:[1,401],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($V81,[2,106]),{32:402,33:$Ve1},o($VD1,[2,80]),{35:131,36:$V2,37:$V3,63:132,75:403,76:129,77:$Vb1,78:133,79:134,98:$Vm,122:$Vc1,123:$Vd1},o($Vn2,$Va1,{75:128,76:129,35:131,63:132,78:133,79:134,68:404,36:$V2,37:$V3,77:$Vb1,98:$Vm,122:$Vc1,123:$Vd1}),o($VD1,[2,85],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VS1,$Vf2),o($V92,[2,33]),{34:[1,405],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($VJ1,[2,280],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{32:406,33:$Ve1,136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},{32:407,33:$Ve1},o($V_,[2,200]),{32:408,33:$Ve1},{32:409,33:$Ve1},o($Vo2,[2,204]),{34:[1,410],155:[1,411],156:351,157:$VI1},o($V_,[2,243]),{32:412,33:$Ve1},o($Va2,[2,246]),{32:413,33:$Ve1,74:[1,414]},o($Vp2,[2,196],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V_,[2,126]),o($Vb2,[2,129],{145:80,136:106,142:107,32:415,33:$Ve1,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V71,[2,132]),{31:[1,416]},{33:$VL1,35:291,36:$V2,37:$V3,106:417,107:289,109:$VM1},o($V71,[2,133]),{42:418,43:$V5,44:$V6},{6:$Vq2,33:$Vr2,100:[1,419]},o($Vm2,$V62,{35:291,107:422,36:$V2,37:$V3,109:$VM1}),o($V52,$VB1,{73:423,74:$Vc2}),{35:424,36:$V2,37:$V3},{35:425,36:$V2,37:$V3},{31:[2,148]},{6:$Vs2,33:$Vt2,100:[1,426]},o($Vm2,$V62,{35:298,114:429,36:$V2,37:$V3,109:$VO1}),o($V52,$VB1,{73:430,74:$Vd2}),{35:431,36:$V2,37:$V3,109:[1,432]},{35:433,36:$V2,37:$V3},o($Ve2,[2,152],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:434,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:435,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V71,[2,156]),{135:[1,436]},{124:[1,437],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($VQ1,[2,180]),{7:263,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,127:438,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:263,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,33:$Vo1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,77:$Vp1,78:57,79:58,80:188,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,120:439,121:$Vq,122:$Vr,123:$Vs,127:186,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VS1,[2,189]),{6:$Vg2,33:$Vh2,34:[1,440]},o($VV1,[2,209],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VV1,[2,211],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VV1,[2,222],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VW1,[2,231]),{7:441,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:442,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:443,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:444,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($VQ1,[2,117]),{13:213,35:215,36:$V2,37:$V3,38:216,39:$Vr1,40:214,41:$V4,42:83,43:$V5,44:$V6,59:445,60:211,62:212,63:217,66:$Vh,122:$Vc1},o($Vn2,$Vt1,{42:83,59:210,60:211,62:212,13:213,40:214,35:215,38:216,63:217,99:446,36:$V2,37:$V3,39:$Vr1,41:$V4,43:$V5,44:$V6,66:$Vh,122:$Vc1}),o($V_1,[2,120]),o($V_1,[2,55],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:447,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_1,[2,57],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{7:448,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{6:$Vg2,33:$Vh2,119:[1,449]},{90:[2,184],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($V_,[2,53]),o($V_,[2,72]),o($VD1,[2,81]),o($V52,$VB1,{73:450,74:$VC1}),o($V_,[2,279]),o($Vi2,[2,250]),o($V_,[2,201]),o($Vo2,[2,202]),o($Vo2,[2,203]),o($V_,[2,241]),{32:451,33:$Ve1},{34:[1,452]},o($Va2,[2,247],{6:[1,453]}),{7:454,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},o($V_,[2,130]),{42:455,43:$V5,44:$V6},o($VY1,$VB1,{73:456,74:$Vc2}),o($V71,[2,134]),{31:[1,457]},{35:291,36:$V2,37:$V3,107:458,109:$VM1},{33:$VL1,35:291,36:$V2,37:$V3,106:459,107:289,109:$VM1},o($V_1,[2,139]),{6:$Vq2,33:$Vr2,34:[1,460]},o($V_1,[2,144]),o($V_1,[2,146]),o($V71,[2,150],{31:[1,461]}),{35:298,36:$V2,37:$V3,109:$VO1,114:462},{33:$VN1,35:298,36:$V2,37:$V3,109:$VO1,112:463,114:296},o($V_1,[2,159]),{6:$Vs2,33:$Vt2,34:[1,464]},o($V_1,[2,164]),o($V_1,[2,165]),o($V_1,[2,167]),o($Ve2,[2,153],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),{34:[1,465],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($V81,[2,207]),o($V81,[2,183]),o($VS1,[2,190]),o($V52,$VB1,{73:466,74:$VR1}),o($VS1,[2,191]),o([1,6,33,34,45,69,74,77,90,100,119,124,126,135,137,138,139,143,160],[2,234],{145:80,136:106,142:107,144:[1,467],163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($Vj2,[2,236],{145:80,136:106,142:107,138:[1,468],163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ1,[2,235],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ1,[2,240],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V_1,[2,121]),o($V52,$VB1,{73:469,74:$VZ1}),{34:[1,470],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},{34:[1,471],136:106,137:$Vw,139:$Vx,142:107,143:$Vz,145:80,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY},o($V22,[2,175]),{6:$V72,33:$V82,34:[1,472]},{34:[1,473]},o($V_,[2,244]),o($Va2,[2,248]),o($Vp2,[2,197],{145:80,136:106,142:107,137:$Vw,139:$Vx,143:$Vz,160:$VK,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V71,[2,136]),{6:$Vq2,33:$Vr2,100:[1,474]},{42:475,43:$V5,44:$V6},o($V_1,[2,140]),o($V52,$VB1,{73:476,74:$Vc2}),o($V_1,[2,141]),{42:477,43:$V5,44:$V6},o($V_1,[2,160]),o($V52,$VB1,{73:478,74:$Vd2}),o($V_1,[2,161]),o($V71,[2,154]),{6:$Vg2,33:$Vh2,34:[1,479]},{7:480,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{7:481,8:141,12:20,13:21,14:$V0,15:23,16:24,17:7,18:8,19:9,20:10,21:11,22:12,23:13,24:14,25:15,26:16,27:17,28:18,29:19,30:$Vf1,35:73,36:$V2,37:$V3,40:59,41:$V4,42:83,43:$V5,44:$V6,46:61,47:$V7,48:$V8,50:28,51:$V9,52:$Va,53:$Vb,54:$Vc,55:$Vd,56:$Ve,57:27,63:74,64:$Vf,65:$Vg1,66:$Vh,67:$Vi,70:35,71:$Vj,72:$Vk,78:57,79:58,81:43,83:29,84:30,85:31,86:32,87:$Vl,98:$Vm,101:$Vn,103:$Vo,111:$Vp,121:$Vq,122:$Vr,123:$Vs,129:$Vt,133:$Vu,134:$Vv,136:46,137:$Vw,139:$Vx,140:47,141:$Vy,142:48,143:$Vz,145:80,153:$VA,158:44,159:$VB,161:$VC,162:$VD,163:$VE,164:$VF,165:$VG,166:$VH},{6:$Vk2,33:$Vl2,34:[1,482]},o($V_1,[2,56]),o($V_1,[2,58]),o($VD1,[2,82]),o($V_,[2,242]),{31:[1,483]},o($V71,[2,135]),{6:$Vq2,33:$Vr2,34:[1,484]},o($V71,[2,157]),{6:$Vs2,33:$Vt2,34:[1,485]},o($VS1,[2,192]),o($VJ1,[2,237],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($VJ1,[2,238],{145:80,136:106,142:107,163:$VL,164:$VM,167:$VN,168:$VO,169:$VP,170:$VQ,171:$VR,172:$VS,173:$VT,174:$VU,175:$VV,176:$VW,177:$VX,178:$VY}),o($V_1,[2,122]),{42:486,43:$V5,44:$V6},o($V_1,[2,142]),o($V_1,[2,162]),o($V71,[2,137])], -defaultActions: {71:[2,74],72:[2,75],246:[2,116],366:[2,148]}, +table: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:24,11:25,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$V1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vg,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{1:[3]},{1:[2,2],6:$VH},o($VI,[2,3]),o($VI,[2,6],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI,[2,7],{143:78,134:107,140:108,135:$Vv,137:$Vw,141:$Vy,158:$VY}),o($VI,[2,8]),o($VZ,[2,15],{113:109,80:110,92:116,42:$V_,43:$V_,116:$V_,86:$V$,87:$V01,89:$V11,90:$V21,91:$V31,94:$V41,115:$V51}),o($VZ,[2,16],{92:116,113:119,80:120,86:$V$,87:$V01,89:$V11,90:$V21,91:$V31,94:$V41,115:$V51,116:$V_}),o($VZ,[2,17]),o($VZ,[2,18]),o($VZ,[2,19]),o($VZ,[2,20]),o($VZ,[2,21]),o($VZ,[2,22]),o($VZ,[2,23]),o($VZ,[2,24]),o($VZ,[2,25]),o($VZ,[2,26]),o($VZ,[2,27]),o($V61,[2,11]),o($V61,[2,12]),o($V61,[2,13]),o($V61,[2,14]),o($VI,[2,9]),o($VI,[2,10]),o($V71,$V81,{57:[1,121]}),o($V71,[2,97]),o($V71,[2,98]),o($V71,[2,99]),o($V71,[2,100]),o($V71,[2,101]),{86:[1,123],87:[1,124],113:122,115:$V51,116:$V_},o([6,32,67,72],$V91,{66:125,73:126,74:127,34:129,62:130,76:131,77:132,35:$V2,36:$V3,75:$Va1,96:$Vl,120:$Vb1,121:$Vc1}),{31:135,32:$Vd1},{7:137,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:141,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:142,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:143,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:144,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:[1,145],64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{16:147,17:148,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:149,62:72,76:55,77:56,79:146,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,119:$Vp,120:$Vq,121:$Vr,132:$Vu},{16:147,17:148,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:149,62:72,76:55,77:56,79:150,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,119:$Vp,120:$Vq,121:$Vr,132:$Vu},o($Vg1,$Vh1,{163:[1,151],164:[1,152],177:[1,153]}),o($VZ,[2,248],{153:[1,154]}),{31:155,32:$Vd1},{31:156,32:$Vd1},o($VZ,[2,212]),{31:157,32:$Vd1},{7:158,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,159],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($Vi1,[2,120],{49:27,81:28,82:29,83:30,84:31,76:55,77:56,39:57,45:59,34:71,62:72,41:81,16:147,17:148,56:149,31:160,79:162,32:$Vd1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,85:$Vk,96:$Vl,100:[1,161],119:$Vp,120:$Vq,121:$Vr,132:$Vu}),{7:163,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o([1,6,33,44,133,135,137,141,158,165,166,167,168,169,170,171,172,173,174,175,176],$Vj1,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,7:164,13:$V0,29:$Ve1,30:$Vk1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:[1,166],64:$Vf1,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,139:$Vx,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($V61,$Vl1,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,7:167,13:$V0,29:$Ve1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vf1,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,139:$Vx,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),{34:172,35:$V2,36:$V3,41:168,42:$V5,43:$V6,96:[1,171],102:169,103:170,108:$Vm1},{26:175,34:176,35:$V2,36:$V3,96:[1,174],99:$Vm,107:[1,177],111:[1,178]},o($Vg1,[2,94]),o($Vg1,[2,95]),o($V71,[2,42]),o($V71,[2,43]),o($V71,[2,44]),o($V71,[2,45]),o($V71,[2,46]),o($V71,[2,47]),o($V71,[2,48]),o($V71,[2,49]),{4:179,5:3,7:4,8:5,9:6,10:24,11:25,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$V1,32:[1,180],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vg,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:181,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:$Vn1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,118:183,119:$Vp,120:$Vq,121:$Vr,122:$Vp1,125:184,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($V71,[2,173]),o($V71,[2,174],{37:188,38:$Vq1}),{32:[2,71]},{32:[2,72]},o($Vr1,[2,89]),o($Vr1,[2,92]),{7:190,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:191,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:192,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:194,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,31:193,32:$Vd1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{34:199,35:$V2,36:$V3,62:200,76:201,77:202,82:195,96:$Vl,120:$Vb1,121:$Vr,145:196,146:[1,197],147:198},{144:203,148:[1,204],149:[1,205],150:[1,206]},o([6,32,72,98],$Vs1,{41:81,97:207,58:208,59:209,61:210,39:211,34:212,37:213,62:214,35:$V2,36:$V3,38:$Vq1,40:$V4,42:$V5,43:$V6,120:$Vb1}),o($Vt1,[2,36]),o($Vt1,[2,37]),o($V71,[2,40]),{16:147,17:215,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:149,62:72,76:55,77:56,79:216,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,119:$Vp,120:$Vq,121:$Vr,132:$Vu},o($Vu1,[2,33]),o($Vu1,[2,34]),o($Vv1,[2,38]),{4:217,5:3,7:4,8:5,9:6,10:24,11:25,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$V1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vg,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VI,[2,5],{7:4,8:5,9:6,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,10:24,11:25,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,5:218,13:$V0,29:$V1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vg,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,135:$Vv,137:$Vw,139:$Vx,141:$Vy,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($VZ,[2,261]),{7:219,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:220,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:221,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:222,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:223,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:224,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:225,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:226,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:227,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:228,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:229,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:230,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:231,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:232,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,211]),o($VZ,[2,216]),{7:233,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,210]),o($VZ,[2,215]),{41:234,42:$V5,43:$V6,114:235,116:$Vw1},o($Vr1,[2,90]),o($Vx1,[2,170]),{37:237,38:$Vq1},{37:238,38:$Vq1},o($Vr1,[2,108],{37:239,38:$Vq1}),{37:240,38:$Vq1},o($Vr1,[2,109]),{7:242,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vy1,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,93:241,95:243,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,123:244,124:$Vz1,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{87:$V01,92:247,94:$V41},{114:248,116:$Vw1},o($Vr1,[2,91]),{6:[1,250],7:249,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,251],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{114:252,116:$Vw1},{37:253,38:$Vq1},{7:254,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o([6,32],$VA1,{71:257,67:[1,255],72:$VB1}),o($VC1,[2,76]),o($VC1,[2,80],{57:[1,259],75:[1,258]}),o($VC1,[2,83]),o($VD1,[2,84]),o($VD1,[2,85]),o($VD1,[2,86]),o($VD1,[2,87]),{37:188,38:$Vq1},{7:260,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:$Vn1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,118:183,119:$Vp,120:$Vq,121:$Vr,122:$Vp1,125:184,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,70]),{4:262,5:3,7:4,8:5,9:6,10:24,11:25,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$V1,33:[1,261],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vg,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VE1,[2,252],{143:78,134:104,140:105,165:$VM}),{7:144,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{134:107,135:$Vv,137:$Vw,140:108,141:$Vy,143:78,158:$VY},o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,165,166,167,168,169,170,171,172,173,174,175,176],$Vj1,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,7:164,13:$V0,29:$Ve1,30:$Vk1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vf1,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,139:$Vx,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($VF1,[2,253],{143:78,134:104,140:105,165:$VM,167:$VO}),o($VF1,[2,254],{143:78,134:104,140:105,165:$VM,167:$VO}),o($VF1,[2,255],{143:78,134:104,140:105,165:$VM,167:$VO}),o($VE1,[2,256],{143:78,134:104,140:105,165:$VM}),o($VI,[2,68],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,7:263,13:$V0,29:$Ve1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vf1,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,135:$Vl1,137:$Vl1,141:$Vl1,158:$Vl1,139:$Vx,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($VZ,[2,257],{42:$Vh1,43:$Vh1,86:$Vh1,87:$Vh1,89:$Vh1,90:$Vh1,91:$Vh1,94:$Vh1,115:$Vh1,116:$Vh1}),o($Vx1,$V_,{113:109,80:110,92:116,86:$V$,87:$V01,89:$V11,90:$V21,91:$V31,94:$V41,115:$V51}),{80:120,86:$V$,87:$V01,89:$V11,90:$V21,91:$V31,92:116,94:$V41,113:119,115:$V51,116:$V_},o($VG1,$V81),o($VZ,[2,258],{42:$Vh1,43:$Vh1,86:$Vh1,87:$Vh1,89:$Vh1,90:$Vh1,91:$Vh1,94:$Vh1,115:$Vh1,116:$Vh1}),o($VZ,[2,259]),o($VZ,[2,260]),{6:[1,266],7:264,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,265],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{31:267,32:$Vd1,157:[1,268]},o($VZ,[2,195],{128:269,129:[1,270],130:[1,271]}),o($VZ,[2,209]),o($VZ,[2,217]),{32:[1,272],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},{152:273,154:274,155:$VH1},o($VZ,[2,121]),{7:276,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($Vi1,[2,124],{31:277,32:$Vd1,42:$Vh1,43:$Vh1,86:$Vh1,87:$Vh1,89:$Vh1,90:$Vh1,91:$Vh1,94:$Vh1,115:$Vh1,116:$Vh1,100:[1,278]}),o($VI1,[2,202],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI1,[2,29],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:279,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VI,[2,66],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,7:280,13:$V0,29:$Ve1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vf1,65:$Vh,69:$Vi,70:$Vj,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,135:$Vl1,137:$Vl1,141:$Vl1,158:$Vl1,139:$Vx,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($V61,$VJ1,{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($V61,[2,128]),{30:[1,281],72:[1,282]},{30:[1,283]},{32:$VK1,34:288,35:$V2,36:$V3,98:[1,284],104:285,105:286,107:$VL1},o([30,72],[2,144]),{106:[1,290]},{32:$VM1,34:295,35:$V2,36:$V3,98:[1,291],107:$VN1,110:292,112:293},o($V61,[2,148]),{57:[1,297]},{7:298,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{30:[1,299]},{6:$VH,133:[1,300]},{4:301,5:3,7:4,8:5,9:6,10:24,11:25,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$V1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vg,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o([6,32,72,122],$VO1,{143:78,134:104,140:105,123:302,75:[1,303],124:$Vz1,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VP1,[2,176]),o([6,32,122],$VA1,{71:304,72:$VQ1}),o($VR1,[2,185]),{7:260,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:$Vn1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,118:306,119:$Vp,120:$Vq,121:$Vr,125:184,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VR1,[2,191]),o($VR1,[2,192]),o($VS1,[2,175]),o($VS1,[2,35]),{31:307,32:$Vd1,134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($VT1,[2,205],{143:78,134:104,140:105,135:$Vv,136:[1,308],137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VT1,[2,207],{143:78,134:104,140:105,135:$Vv,136:[1,309],137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VZ,[2,213]),o($VU1,[2,214],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,158,161,162,165,166,167,168,169,170,171,172,173,174,175,176],[2,218],{142:[1,310]}),o($VV1,[2,221]),{34:199,35:$V2,36:$V3,62:200,76:201,77:202,96:$Vl,120:$Vb1,121:$Vc1,145:311,147:198},o($VV1,[2,227],{72:[1,312]}),o($VW1,[2,223]),o($VW1,[2,224]),o($VW1,[2,225]),o($VW1,[2,226]),o($VZ,[2,220]),{7:313,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:314,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:315,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VX1,$VA1,{71:316,72:$VY1}),o($VZ1,[2,116]),o($VZ1,[2,53],{60:[1,318]}),o($V_1,[2,61],{57:[1,319]}),o($V_1,[2,62]),o($V$1,[2,58]),o($V$1,[2,59]),o($V$1,[2,60]),{48:[1,320],80:120,86:$V$,87:$V01,89:$V11,90:$V21,91:$V31,92:116,94:$V41,113:119,115:$V51,116:$V_},o($VG1,$Vh1),{6:$VH,44:[1,321]},o($VI,[2,4]),o($V02,[2,262],{143:78,134:104,140:105,165:$VM,166:$VN,167:$VO}),o($V02,[2,263],{143:78,134:104,140:105,165:$VM,166:$VN,167:$VO}),o($VF1,[2,264],{143:78,134:104,140:105,165:$VM,167:$VO}),o($VF1,[2,265],{143:78,134:104,140:105,165:$VM,167:$VO}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,168,169,170,171,172,173,174,175,176],[2,266],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,169,170,171,172,173,174,175],[2,267],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,170,171,172,173,174,175],[2,268],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,171,172,173,174,175],[2,269],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,172,173,174,175],[2,270],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,173,174,175],[2,271],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,174,175],[2,272],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,175],[2,273],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,176:$VX}),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,142,158,169,170,171,172,173,174,175,176],[2,274],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP}),o($VU1,[2,251],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VU1,[2,250],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($V12,[2,165]),o($V12,[2,166]),{7:260,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:$Vn1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,117:[1,322],118:323,119:$Vp,120:$Vq,121:$Vr,125:184,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($Vr1,[2,104]),o($Vr1,[2,105]),o($Vr1,[2,106]),o($Vr1,[2,107]),{88:[1,324]},{75:$Vy1,88:[2,112],123:325,124:$Vz1,134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},{88:[2,113]},{7:326,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,88:[2,184],96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($V22,[2,178]),o($V22,$V32),o($Vr1,[2,111]),o($V12,[2,167]),o($VI1,[2,50],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:327,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:328,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($V12,[2,168]),o($V71,[2,102]),{88:[1,329],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},{68:330,69:$Vi,70:$Vj},o($V42,$V52,{74:127,34:129,62:130,76:131,77:132,73:331,35:$V2,36:$V3,75:$Va1,96:$Vl,120:$Vb1,121:$Vc1}),{6:$V62,32:$V72},o($VC1,[2,81]),{7:334,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VR1,$VO1,{143:78,134:104,140:105,75:[1,335],135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($V82,[2,31]),{6:$VH,33:[1,336]},o($VI,[2,67],{143:78,134:104,140:105,135:$VJ1,137:$VJ1,141:$VJ1,158:$VJ1,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI1,[2,275],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:337,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:338,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,249]),{7:339,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,196],{129:[1,340]}),{31:341,32:$Vd1},{31:344,32:$Vd1,34:342,35:$V2,36:$V3,77:343,96:$Vl},{152:345,154:274,155:$VH1},{33:[1,346],153:[1,347],154:348,155:$VH1},o($V92,[2,242]),{7:350,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,126:349,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($Va2,[2,122],{143:78,134:104,140:105,31:351,32:$Vd1,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VZ,[2,125]),{7:352,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VI1,[2,30],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI,[2,65],{143:78,134:104,140:105,135:$VJ1,137:$VJ1,141:$VJ1,158:$VJ1,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{41:353,42:$V5,43:$V6},{96:[1,355],103:354,108:$Vm1},{41:356,42:$V5,43:$V6},{30:[1,357]},o($VX1,$VA1,{71:358,72:$Vb2}),o($VZ1,[2,135]),{32:$VK1,34:288,35:$V2,36:$V3,104:360,105:286,107:$VL1},o($VZ1,[2,140],{106:[1,361]}),o($VZ1,[2,142],{106:[1,362]}),{34:363,35:$V2,36:$V3},o($V61,[2,146]),o($VX1,$VA1,{71:364,72:$Vc2}),o($VZ1,[2,155]),{32:$VM1,34:295,35:$V2,36:$V3,107:$VN1,110:366,112:293},o($VZ1,[2,160],{106:[1,367]}),o($VZ1,[2,163],{106:[1,368]}),{6:[1,370],7:369,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,371],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($Vd2,[2,152],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{41:372,42:$V5,43:$V6},o($V71,[2,203]),{6:$VH,33:[1,373]},{7:374,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o([13,29,35,36,40,42,43,46,47,50,51,52,53,54,55,63,64,65,69,70,85,96,99,101,109,119,120,121,127,131,132,135,137,139,141,151,157,159,160,161,162,163,164],$V32,{6:$Ve2,32:$Ve2,72:$Ve2,122:$Ve2}),{6:$Vf2,32:$Vg2,122:[1,375]},o([6,32,33,117,122],$V52,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,12:20,14:22,15:23,56:26,49:27,81:28,82:29,83:30,84:31,68:34,79:42,156:43,134:45,138:46,140:47,76:55,77:56,39:57,45:59,34:71,62:72,143:78,41:81,8:139,78:186,7:260,125:378,13:$V0,29:$Ve1,35:$V2,36:$V3,40:$V4,42:$V5,43:$V6,46:$V7,47:$V8,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,63:$Vf,64:$Vf1,65:$Vh,69:$Vi,70:$Vj,75:$Vo1,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,135:$Vv,137:$Vw,139:$Vx,141:$Vy,151:$Vz,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG}),o($V42,$VA1,{71:379,72:$VQ1}),o($Vh2,[2,246]),{7:380,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:381,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:382,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VV1,[2,222]),{34:199,35:$V2,36:$V3,62:200,76:201,77:202,96:$Vl,120:$Vb1,121:$Vc1,147:383},o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,137,141,158],[2,229],{143:78,134:104,140:105,136:[1,384],142:[1,385],161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($Vi2,[2,230],{143:78,134:104,140:105,136:[1,386],161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($Vi2,[2,236],{143:78,134:104,140:105,136:[1,387],161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{6:$Vj2,32:$Vk2,98:[1,388]},o($Vl2,$V52,{41:81,59:209,61:210,39:211,34:212,37:213,62:214,58:391,35:$V2,36:$V3,38:$Vq1,40:$V4,42:$V5,43:$V6,120:$Vb1}),{7:392,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,393],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:394,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:[1,395],34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($V71,[2,41]),o($Vv1,[2,39]),o($V12,[2,171]),o([6,32,117],$VA1,{71:396,72:$VQ1}),o($Vr1,[2,110]),{7:397,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,88:[2,182],96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{88:[2,183],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($VI1,[2,51],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{33:[1,398],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($V71,[2,103]),{31:399,32:$Vd1},o($VC1,[2,77]),{34:129,35:$V2,36:$V3,62:130,73:400,74:127,75:$Va1,76:131,77:132,96:$Vl,120:$Vb1,121:$Vc1},o($Vm2,$V91,{73:126,74:127,34:129,62:130,76:131,77:132,66:401,35:$V2,36:$V3,75:$Va1,96:$Vl,120:$Vb1,121:$Vc1}),o($VC1,[2,82],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VR1,$Ve2),o($V82,[2,32]),{33:[1,402],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($VI1,[2,277],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{31:403,32:$Vd1,134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},{31:404,32:$Vd1},o($VZ,[2,197]),{31:405,32:$Vd1},{31:406,32:$Vd1},o($Vn2,[2,201]),{33:[1,407],153:[1,408],154:348,155:$VH1},o($VZ,[2,240]),{31:409,32:$Vd1},o($V92,[2,243]),{31:410,32:$Vd1,72:[1,411]},o($Vo2,[2,193],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VZ,[2,123]),o($Va2,[2,126],{143:78,134:104,140:105,31:412,32:$Vd1,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($V61,[2,129]),{30:[1,413]},{32:$VK1,34:288,35:$V2,36:$V3,104:414,105:286,107:$VL1},o($V61,[2,130]),{41:415,42:$V5,43:$V6},{6:$Vp2,32:$Vq2,98:[1,416]},o($Vl2,$V52,{34:288,105:419,35:$V2,36:$V3,107:$VL1}),o($V42,$VA1,{71:420,72:$Vb2}),{34:421,35:$V2,36:$V3},{34:422,35:$V2,36:$V3},{30:[2,145]},{6:$Vr2,32:$Vs2,98:[1,423]},o($Vl2,$V52,{34:295,112:426,35:$V2,36:$V3,107:$VN1}),o($V42,$VA1,{71:427,72:$Vc2}),{34:428,35:$V2,36:$V3,107:[1,429]},{34:430,35:$V2,36:$V3},o($Vd2,[2,149],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:431,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:432,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($V61,[2,153]),{133:[1,433]},{122:[1,434],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($VP1,[2,177]),{7:260,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,125:435,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:260,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,32:$Vn1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,75:$Vo1,76:55,77:56,78:186,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,118:436,119:$Vp,120:$Vq,121:$Vr,125:184,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VR1,[2,186]),{6:$Vf2,32:$Vg2,33:[1,437]},o($VU1,[2,206],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VU1,[2,208],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VU1,[2,219],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VV1,[2,228]),{7:438,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:439,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:440,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:441,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VP1,[2,114]),{34:212,35:$V2,36:$V3,37:213,38:$Vq1,39:211,40:$V4,41:81,42:$V5,43:$V6,58:442,59:209,61:210,62:214,120:$Vb1},o($Vm2,$Vs1,{41:81,58:208,59:209,61:210,39:211,34:212,37:213,62:214,97:443,35:$V2,36:$V3,38:$Vq1,40:$V4,42:$V5,43:$V6,120:$Vb1}),o($VZ1,[2,117]),o($VZ1,[2,54],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:444,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ1,[2,56],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{7:445,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{6:$Vf2,32:$Vg2,117:[1,446]},{88:[2,181],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($VZ,[2,52]),o($VZ,[2,69]),o($VC1,[2,78]),o($V42,$VA1,{71:447,72:$VB1}),o($VZ,[2,276]),o($Vh2,[2,247]),o($VZ,[2,198]),o($Vn2,[2,199]),o($Vn2,[2,200]),o($VZ,[2,238]),{31:448,32:$Vd1},{33:[1,449]},o($V92,[2,244],{6:[1,450]}),{7:451,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},o($VZ,[2,127]),{41:452,42:$V5,43:$V6},o($VX1,$VA1,{71:453,72:$Vb2}),o($V61,[2,131]),{30:[1,454]},{34:288,35:$V2,36:$V3,105:455,107:$VL1},{32:$VK1,34:288,35:$V2,36:$V3,104:456,105:286,107:$VL1},o($VZ1,[2,136]),{6:$Vp2,32:$Vq2,33:[1,457]},o($VZ1,[2,141]),o($VZ1,[2,143]),o($V61,[2,147],{30:[1,458]}),{34:295,35:$V2,36:$V3,107:$VN1,112:459},{32:$VM1,34:295,35:$V2,36:$V3,107:$VN1,110:460,112:293},o($VZ1,[2,156]),{6:$Vr2,32:$Vs2,33:[1,461]},o($VZ1,[2,161]),o($VZ1,[2,162]),o($VZ1,[2,164]),o($Vd2,[2,150],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),{33:[1,462],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($V71,[2,204]),o($V71,[2,180]),o($VR1,[2,187]),o($V42,$VA1,{71:463,72:$VQ1}),o($VR1,[2,188]),o([1,6,32,33,44,67,72,75,88,98,117,122,124,133,135,136,137,141,158],[2,231],{143:78,134:104,140:105,142:[1,464],161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($Vi2,[2,233],{143:78,134:104,140:105,136:[1,465],161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI1,[2,232],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI1,[2,237],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VZ1,[2,118]),o($V42,$VA1,{71:466,72:$VY1}),{33:[1,467],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},{33:[1,468],134:104,135:$Vv,137:$Vw,140:105,141:$Vy,143:78,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX},o($V12,[2,172]),{6:$V62,32:$V72,33:[1,469]},{33:[1,470]},o($VZ,[2,241]),o($V92,[2,245]),o($Vo2,[2,194],{143:78,134:104,140:105,135:$Vv,137:$Vw,141:$Vy,158:$VJ,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($V61,[2,133]),{6:$Vp2,32:$Vq2,98:[1,471]},{41:472,42:$V5,43:$V6},o($VZ1,[2,137]),o($V42,$VA1,{71:473,72:$Vb2}),o($VZ1,[2,138]),{41:474,42:$V5,43:$V6},o($VZ1,[2,157]),o($V42,$VA1,{71:475,72:$Vc2}),o($VZ1,[2,158]),o($V61,[2,151]),{6:$Vf2,32:$Vg2,33:[1,476]},{7:477,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{7:478,8:139,12:20,13:$V0,14:22,15:23,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:$Ve1,34:71,35:$V2,36:$V3,39:57,40:$V4,41:81,42:$V5,43:$V6,45:59,46:$V7,47:$V8,49:27,50:$V9,51:$Va,52:$Vb,53:$Vc,54:$Vd,55:$Ve,56:26,62:72,63:$Vf,64:$Vf1,65:$Vh,68:34,69:$Vi,70:$Vj,76:55,77:56,79:42,81:28,82:29,83:30,84:31,85:$Vk,96:$Vl,99:$Vm,101:$Vn,109:$Vo,119:$Vp,120:$Vq,121:$Vr,127:$Vs,131:$Vt,132:$Vu,134:45,135:$Vv,137:$Vw,138:46,139:$Vx,140:47,141:$Vy,143:78,151:$Vz,156:43,157:$VA,159:$VB,160:$VC,161:$VD,162:$VE,163:$VF,164:$VG},{6:$Vj2,32:$Vk2,33:[1,479]},o($VZ1,[2,55]),o($VZ1,[2,57]),o($VC1,[2,79]),o($VZ,[2,239]),{30:[1,480]},o($V61,[2,132]),{6:$Vp2,32:$Vq2,33:[1,481]},o($V61,[2,154]),{6:$Vr2,32:$Vs2,33:[1,482]},o($VR1,[2,189]),o($VI1,[2,234],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VI1,[2,235],{143:78,134:104,140:105,161:$VK,162:$VL,165:$VM,166:$VN,167:$VO,168:$VP,169:$VQ,170:$VR,171:$VS,172:$VT,173:$VU,174:$VV,175:$VW,176:$VX}),o($VZ1,[2,119]),{41:483,42:$V5,43:$V6},o($VZ1,[2,139]),o($VZ1,[2,159]),o($V61,[2,134])], +defaultActions: {69:[2,71],70:[2,72],243:[2,113],363:[2,145]}, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); diff --git a/src/grammar.coffee b/src/grammar.coffee index 5190e6aedd..1d4ea9a3f8 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -33,24 +33,27 @@ unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/ o = (patternString, action, options) -> patternString = patternString.replace /\s{2,}/g, ' ' patternCount = patternString.split(' ').length - return [patternString, '$$ = $1;', options] unless action - action = if match = unwrap.exec action then match[1] else "(#{action}())" + if action + action = if match = unwrap.exec action then match[1] else "(#{action}())" - # All runtime functions we need are defined on `yy` - action = action.replace /\bnew /g, '$&yy.' - action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&' + # All runtime functions we need are defined on `yy` + action = action.replace /\bnew /g, '$&yy.' + action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&' - # Returns strings of functions to add to `parser.js` which add extra data - # that nodes may have, such as comments or location data. Location data - # is added to the first parameter passed in, and the parameter is returned. - # If the parameter is not a node, it will just be passed through unaffected. - getFunctionString = (first, last) -> - "yy.addDataToNode(yy, @#{first}#{if last then ", @#{last}" else ''})" + # Returns strings of functions to add to `parser.js` which add extra data + # that nodes may have, such as comments or location data. Location data + # is added to the first parameter passed in, and the parameter is returned. + # If the parameter is not a node, it will just be passed through unaffected. + getAddDataToNodeFunctionString = (first, last) -> + "yy.addDataToNode(yy, @#{first}#{if last then ", @#{last}" else ''})" - action = action.replace /LOC\(([0-9]*)\)/g, getFunctionString('$1') - action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, getFunctionString('$1', '$2') + action = action.replace /LOC\(([0-9]*)\)/g, getAddDataToNodeFunctionString('$1') + action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, getAddDataToNodeFunctionString('$1', '$2') + performActionFunctionString = "$$ = #{getAddDataToNodeFunctionString(1, patternCount)}(#{action});" + else + performActionFunctionString = '$$ = $1;' - [patternString, "$$ = #{getFunctionString(1, patternCount)}(#{action});", options] + [patternString, performActionFunctionString, options] # Grammatical Rules # ----------------- @@ -98,7 +101,6 @@ grammar = # Pure statements which cannot be expressions. Statement: [ o 'Return' - o 'Comment' o 'STATEMENT', -> new StatementLiteral $1 o 'Import' o 'Export' @@ -198,7 +200,6 @@ grammar = o 'SimpleObjAssignable = INDENT Expression OUTDENT', -> new Assign LOC(1)(new Value $1), $4, null, operatorToken: LOC(2)(new Literal $2) - o 'Comment' ] SimpleObjAssignable: [ @@ -228,11 +229,6 @@ grammar = o 'AWAIT RETURN', -> new AwaitReturn ] - # A block comment. - Comment: [ - o 'HERECOMMENT', -> new Comment $1 - ] - # The **Code** node is the function literal. It's defined by an indented block # of **Block** preceded by a function arrow, with an optional parameter list. Code: [ diff --git a/src/helpers.coffee b/src/helpers.coffee index a98a94236a..5188a7416c 100644 --- a/src/helpers.coffee +++ b/src/helpers.coffee @@ -111,16 +111,31 @@ buildLocationData = (first, last) -> # This returns a function which takes an object as a parameter, and if that # object is an AST node, updates that object's locationData. # The object is returned either way. -exports.addDataToNode = (parser, first, last) -> +exports.addDataToNode = (parserState, first, last) -> (obj) -> # Add location data - if ((typeof obj) is 'object') and (!!obj['updateLocationDataIfMissing']) + if obj?.updateLocationDataIfMissing? and first? obj.updateLocationDataIfMissing buildLocationData(first, last) # Add comments data - # TODO - - return obj + unless parserState.tokenComments + parserState.tokenComments = {} + for token in parserState.parser.tokens when token.comments + tokenHash = "#{token[2].first_line}x#{token[2].first_column}-#{token[2].last_line}x#{token[2].last_column}" + unless parserState.tokenComments[tokenHash]? + parserState.tokenComments[tokenHash] = token.comments + else + parserState.tokenComments[tokenHash] = parserState.tokenComments[tokenHash].concat token.comments + + if obj.locationData? + objHash = "#{obj.locationData.first_line}x#{obj.locationData.first_column}-#{obj.locationData.last_line}x#{obj.locationData.last_column}" + if parserState.tokenComments[objHash]? + unless obj.comments + obj.comments = parserState.tokenComments[objHash] + else + obj.comments = obj.comments.concat parserState.tokenComments[objHash] + + obj # Convert jison location data to a string. # `obj` can be a token, or a locationData. From feef8cafc686b2101c1fd421a144a7e72938ab0e Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 14 Jun 2017 01:49:30 -0700 Subject: [PATCH 08/91] New implementation of compiling block comments: the lexer pulls them out of the token stream, attaching them as a property to a token; the rewriter moves the attachment around so it lives on a token that is destined to make it through to compilation (and in a good placement); and the nodes render the block comment. All tests but one pass (commented out). --- lib/coffeescript/lexer.js | 50 ++++++++++--- lib/coffeescript/nodes.js | 84 +++++++++++++++++----- lib/coffeescript/rewriter.js | 134 +++++++++++++++++++++++++++++++---- src/lexer.coffee | 59 ++++++++++++--- src/nodes.coffee | 60 ++++++++++++---- src/rewriter.coffee | 106 +++++++++++++++++++++++---- test/comments.coffee | 115 +++++++++++++++--------------- 7 files changed, 474 insertions(+), 134 deletions(-) diff --git a/lib/coffeescript/lexer.js b/lib/coffeescript/lexer.js index 01c88b8661..e0f681c187 100644 --- a/lib/coffeescript/lexer.js +++ b/lib/coffeescript/lexer.js @@ -329,22 +329,50 @@ } commentToken() { - var comment, here, match; + var chunk, comment, commentAttachment, content, here, match, matchIllegal, newLine, prev; if (!(match = this.chunk.match(COMMENT))) { return 0; } [comment, here] = match; + content = null; + newLine = /^\s*\n+\s*#/.test(comment); if (here) { - if (match = HERECOMMENT_ILLEGAL.exec(comment)) { - this.error(`block comments cannot contain ${match[0]}`, { - offset: match.index, - length: match[0].length + matchIllegal = HERECOMMENT_ILLEGAL.exec(comment); + if (matchIllegal) { + this.error(`block comments cannot contain ${matchIllegal[0]}`, { + offset: matchIllegal.index, + length: matchIllegal[0].length }); } - if (here.indexOf('\n') >= 0) { - here = here.replace(RegExp(`\\n${repeat(' ', this.indent)}`, "g"), '\n'); + chunk = this.chunk.replace(`###${here}###`, ''); + chunk = this.chunk.replace(/^\n+/, ''); + this.lineToken(chunk); + content = here; + content = content.replace(/^(\s*)###/, ''); + content = content.replace(/###$/, ''); + if (indexOf.call(content, '\n') >= 0) { + content = content.replace(RegExp(`\\n${repeat(' ', this.indent)}`, "g"), '\n'); + } + } else { + content = comment.replace(/^(\s*)#/, ''); + } + commentAttachment = { + content: content, + here: here != null, + newLine: newLine + }; + prev = this.prev(); + if (!prev) { + this.lineToken(this.chunk.slice(comment.length)); + this.token('JS', ''); + this.tokens[0].comments = [commentAttachment]; + this.newlineToken(0); + } else { + if (prev.comments) { + prev.comments.push(commentAttachment); + } else { + prev.comments = [commentAttachment]; } - this.token('HERECOMMENT', here, 0, comment.length); } return comment.length; } @@ -439,9 +467,9 @@ return end; } - lineToken() { + lineToken(chunk = this.chunk) { var diff, indent, match, minLiteralLength, newIndentLiteral, noNewlines, size; - if (!(match = MULTI_DENT.exec(this.chunk))) { + if (!(match = MULTI_DENT.exec(chunk))) { return 0; } indent = match[0]; @@ -1211,7 +1239,7 @@ WHITESPACE = /^[^\n\S]+/; - COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/; + COMMENT = /^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/; CODE = /^[-=]>/; diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 4bb62e623a..16469169be 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -1,8 +1,8 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, CSXTag, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, - splice = [].splice, indexOf = [].indexOf, + splice = [].splice, slice = [].slice; Error.stackTraceLimit = 2e308; @@ -38,8 +38,9 @@ constructor(parent, code) { var ref1; this.code = `${code}`; - this.locationData = parent != null ? parent.locationData : void 0; this.type = (parent != null ? (ref1 = parent.constructor) != null ? ref1.name : void 0 : void 0) || 'unknown'; + this.locationData = parent != null ? parent.locationData : void 0; + this.comments = parent != null ? parent.comments : void 0; } toString() { @@ -68,18 +69,18 @@ } compileToFragments(o, lvl) { - var node; + var fragments, node; o = extend({}, o); if (lvl) { o.level = lvl; } node = this.unfoldSoak(o) || this; node.tab = o.indent; - if (o.level === LEVEL_TOP || !node.isStatement(o)) { - return node.compileNode(o); - } else { - return node.compileClosure(o); + fragments = o.level === LEVEL_TOP || !node.isStatement(o) ? node.compileNode(o) : node.compileClosure(o); + if (node.comments) { + this.compileComments(o, node, fragments); } + return fragments; } compileClosure(o) { @@ -117,6 +118,44 @@ return parts; } + compileComments(o, node, fragments) { + var code, comment, commentFragment, hasLeadingMarks, j, len1, ref1, results; + ref1 = node.comments; + results = []; + for (j = 0, len1 = ref1.length; j < len1; j++) { + comment = ref1[j]; + if (!(indexOf.call(this.compiledComments, comment) < 0)) { + continue; + } + this.compiledComments.push(comment); + if (comment.here) { + hasLeadingMarks = /\n\s*[#|\*]/.test(comment.content); + comment.content = comment.content.replace(/^(\s*)#(?=\s)/gm, '$1 *'); + code = `/*${comment.content}${(hasLeadingMarks ? ' ' : '')}*/`; + if (o.level === LEVEL_TOP) { + code = o.indent + code; + } + if (comment.unshift) { + code = this.tab + code; + } + if (comment.newLine) { + code = code + '\n'; + } + commentFragment = this.makeCode(code); + commentFragment.comment = comment; + commentFragment.suppressTrailingSemicolon = true; + if (comment.unshift) { + results.push(fragments.unshift(commentFragment)); + } else { + results.push(fragments.push(commentFragment)); + } + } else { + results.push(void 0); + } + } + return results; + } + cache(o, level, shouldCache) { var complex, ref, sub; complex = shouldCache != null ? shouldCache(this) : this.shouldCache(); @@ -336,6 +375,8 @@ Base.prototype.assigns = NO; + Base.prototype.compiledComments = []; + return Base; })(); @@ -466,7 +507,7 @@ } compileNode(o) { - var answer, compiledNodes, fragments, index, j, len1, node, ref1, top; + var answer, compiledNodes, fragments, index, j, lastFragment, len1, node, ref1, top; this.tab = o.indent; top = o.level === LEVEL_TOP; compiledNodes = []; @@ -483,8 +524,13 @@ node.front = true; fragments = node.compileToFragments(o); if (!node.isStatement(o)) { - fragments.unshift(this.makeCode(`${this.tab}`)); - fragments.push(this.makeCode(';')); + lastFragment = fragments[fragments.length - 1]; + if (lastFragment.code !== '') { + fragments.unshift(this.makeCode(`${this.tab}`)); + if (!lastFragment.suppressTrailingSemicolon) { + fragments.push(this.makeCode(';')); + } + } } compiledNodes.push(fragments); } else { @@ -501,7 +547,7 @@ if (compiledNodes.length) { answer = this.joinFragmentArrays(compiledNodes, ', '); } else { - answer = [this.makeCode("void 0")]; + answer = [this.makeCode('void 0')]; } if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) { return this.wrapInParentheses(answer); @@ -793,13 +839,19 @@ } compileNode(o) { - var answer; + var answer, fragments; answer = []; - answer.push(this.makeCode(this.tab + `return${(this.expression ? " " : "")}`)); if (this.expression) { - answer = answer.concat(this.expression.compileToFragments(o, LEVEL_PAREN)); + fragments = this.expression.compileToFragments(o, LEVEL_PAREN); + if (fragments[0].comment && indexOf.call(fragments[0].code, '\n') >= 0) { + answer.push(fragments.shift()); + } + answer.push(this.makeCode(`${this.tab}return `)); + answer = answer.concat(fragments); + } else { + answer.push(this.makeCode(`${this.tab}return`)); } - answer.push(this.makeCode(";")); + answer.push(this.makeCode(';')); return answer; } @@ -4288,7 +4340,7 @@ }; multident = function(code, tab) { - code = code.replace(/\n/g, '$&' + tab); + code = code.replace(/\n/g, `$&${tab}`); return code.replace(/\s+$/, ''); }; diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 112d36b249..c7ddf6e829 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -1,18 +1,42 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, right, throwSyntaxError, + var BALANCED_PAIRS, CALL_CLOSERS, DISCARDED, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, moveComments, right, throwSyntaxError, indexOf = [].indexOf; ({throwSyntaxError} = require('./helpers')); - generate = function(tag, value, origin) { - var tok; - tok = [tag, value]; - tok.generated = true; + moveComments = function(fromToken, toToken) { + var comment, k, len, ref; + if (!fromToken.comments) { + return; + } + if (toToken.comments && toToken.comments.length !== 0) { + ref = fromToken.comments; + for (k = 0, len = ref.length; k < len; k++) { + comment = ref[k]; + if (comment.unshift) { + toToken.comments.unshift(comment); + } else { + toToken.comments.push(comment); + } + } + } else { + toToken.comments = fromToken.comments; + } + return delete fromToken.comments; + }; + + generate = function(tag, value, origin, commentsToken) { + var token; + token = [tag, value]; + token.generated = true; if (origin) { - tok.origin = origin; + token.origin = origin; + } + if (commentsToken) { + moveComments(commentsToken, token); } - return tok; + return token; }; exports.Rewriter = Rewriter = (function() { @@ -21,13 +45,16 @@ var t; this.tokens = tokens1; if (process.env.DEBUG_TOKEN_STREAM) { + if (process.env.DEBUG_REWRITTEN_TOKEN_STREAM) { + console.log('Initial token stream:'); + } console.log(((function() { var k, len, ref, results; ref = this.tokens; results = []; for (k = 0, len = ref.length; k < len; k++) { t = ref[k]; - results.push(t[0] + '/' + t[1]); + results.push(t[0] + '/' + t[1] + (t.comments ? '*' : '')); } return results; }).call(this)).join(' ')); @@ -38,9 +65,25 @@ this.normalizeLines(); this.tagPostfixConditionals(); this.addImplicitBracesAndParens(); + this.rescueStowawayComments(); this.addLocationDataToGeneratedTokens(); this.enforceValidCSXAttributes(); this.fixOutdentLocationData(); + if (process.env.DEBUG_REWRITTEN_TOKEN_STREAM) { + if (process.env.DEBUG_TOKEN_STREAM) { + console.log('Rewritten token stream:'); + } + console.log(((function() { + var k, len, ref, results; + ref = this.tokens; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + t = ref[k]; + results.push(t[0] + '/' + t[1] + (t.comments ? '*' : '')); + } + return results; + }).call(this)).join(' ')); + } return this.tokens; } @@ -79,7 +122,7 @@ } removeLeadingNewlines() { - var i, k, len, ref, tag; + var i, k, l, leadingNewlineToken, len, len1, ref, ref1, tag; ref = this.tokens; for (i = k = 0, len = ref.length; k < len; i = ++k) { [tag] = ref[i]; @@ -87,9 +130,15 @@ break; } } - if (i) { - return this.tokens.splice(0, i); + if (i === 0) { + return; + } + ref1 = this.tokens.slice(0, i); + for (l = 0, len1 = ref1.length; l < len1; l++) { + leadingNewlineToken = ref1[l]; + moveComments(leadingNewlineToken, this.tokens[i]); } + return this.tokens.splice(0, i); } closeOpenCalls() { @@ -227,11 +276,11 @@ ours: true } ]); - return tokens.splice(idx, 0, generate('CALL_START', '(')); + return tokens.splice(idx, 0, generate('CALL_START', '(', null, prevToken)); }; endImplicitCall = function() { stack.pop(); - tokens.splice(i, 0, generate('CALL_END', ')', ['', 'end of input', token[2]])); + tokens.splice(i, 0, generate('CALL_END', ')', ['', 'end of input', token[2]], prevToken)); return i += 1; }; startImplicitObject = function(idx, startsLine = true) { @@ -245,12 +294,12 @@ ]); val = new String('{'); val.generated = true; - return tokens.splice(idx, 0, generate('{', val, token)); + return tokens.splice(idx, 0, generate('{', val, token, prevToken)); }; endImplicitObject = function(j) { j = j != null ? j : i; stack.pop(); - tokens.splice(j, 0, generate('}', '}', token)); + tokens.splice(j, 0, generate('}', '}', token, prevToken)); return i += 1; }; implicitObjectContinues = (j) => { @@ -391,6 +440,59 @@ }); } + rescueStowawayComments() { + var shiftCommentsForward; + shiftCommentsForward = function(token, i, tokens) { + var comment, j, k, len, ref, ref1, ref2; + j = i; + while (j !== tokens.length && (ref = tokens[j][0], indexOf.call(DISCARDED, ref) >= 0)) { + j++; + } + if (!(j === tokens.length || (ref1 = tokens[j][0], indexOf.call(DISCARDED, ref1) >= 0))) { + ref2 = token.comments; + for (k = 0, len = ref2.length; k < len; k++) { + comment = ref2[k]; + comment.unshift = true; + } + moveComments(token, tokens[j]); + return 1; + } else { + j = tokens.length - 1; + if (tokens[j][0] !== 'TERMINATOR') { + tokens.push(generate('TERMINATOR', '\n', tokens[j])); + } + tokens.push(generate('JS', '', tokens[j], token)); + return 1; + } + }; + return this.scanTokens(function(token, i, tokens) { + var dummyToken, j, ref, ref1, ref2; + if (!(token.comments && !token.generated)) { + return 1; + } + if (ref = token[0], indexOf.call(DISCARDED, ref) >= 0) { + return shiftCommentsForward(token, i, tokens); + } else { + dummyToken = { + comments: [] + }; + j = token.comments.length - 1; + while (j !== -1) { + if (token.comments[j].newLine && ((token.comments[j].unshift === true && i !== tokens.length - 1 && (ref1 = tokens[i + 1][0], indexOf.call(LINEBREAKS, ref1) < 0)) || (token.comments[j].unshift !== true && i !== 0 && (ref2 = tokens[i - 1][0], indexOf.call(LINEBREAKS, ref2) < 0)))) { + dummyToken.comments.unshift(token.comments[j]); + token.comments.splice(j, 1); + } + j--; + } + if (dummyToken.comments.length !== 0) { + return shiftCommentsForward(dummyToken, i, tokens); + } else { + return 1; + } + } + }); + } + addLocationDataToGeneratedTokens() { return this.scanTokens(function(token, i, tokens) { var column, line, nextLocation, prevLocation, ref, ref1; @@ -571,4 +673,6 @@ CALL_CLOSERS = ['.', '?.', '::', '?::']; + DISCARDED = LINEBREAKS.concat(['CALL_END', '->', '=>', '{', '}']); + }).call(this); diff --git a/src/lexer.coffee b/src/lexer.coffee index 2ffc967aa1..ac939609d1 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -301,17 +301,56 @@ exports.Lexer = class Lexer end - # Matches and consumes comments. + # Matches and consumes comments. The comments are taken out of the token + # stream and saved for later, to be reinserted into the output after + # everything has been parsed and the JavaScript code generated. commentToken: -> return 0 unless match = @chunk.match COMMENT [comment, here] = match + content = null + # Does this comment follow code on the same line? + newLine = /^\s*\n+\s*#/.test comment if here - if match = HERECOMMENT_ILLEGAL.exec comment - @error "block comments cannot contain #{match[0]}", - offset: match.index, length: match[0].length - if here.indexOf('\n') >= 0 - here = here.replace /// \n #{repeat ' ', @indent} ///g, '\n' - @token 'HERECOMMENT', here, 0, comment.length + matchIllegal = HERECOMMENT_ILLEGAL.exec comment + if matchIllegal + @error "block comments cannot contain #{matchIllegal[0]}", + offset: matchIllegal.index, length: matchIllegal[0].length + + # Parse indentation or outdentation as if this block comment didn’t exist. + chunk = @chunk.replace "####{here}###", '' + # Remove leading newlines, like `Rewriter::removeLeadingNewlines`, to + # avoid the creation of unwanted `TERMINATOR` tokens. + chunk = @chunk.replace /^\n+/, '' + @lineToken chunk + + # Pull out the ###-style comment’s content, and format it. + content = here + content = content.replace /^(\s*)###/, '' + content = content.replace /###$/, '' + if '\n' in content + content = content.replace /// \n #{repeat ' ', @indent} ///g, '\n' + else + content = comment.replace /^(\s*)#/, '' + + commentAttachment = + content: content + here: here? + newLine: newLine + + prev = @prev() + unless prev + # If there’s no previous token, create a placeholder token to attach + # this comment to; and follow with a newline. + @lineToken @chunk[comment.length..] # Set the indent. + @token 'JS', '' + @tokens[0].comments = [commentAttachment] + @newlineToken 0 + else + if prev.comments + prev.comments.push commentAttachment + else + prev.comments = [commentAttachment] + comment.length # Matches JavaScript interpolated directly into the source via backticks. @@ -387,8 +426,8 @@ exports.Lexer = class Lexer # # Keeps track of the level of indentation, because a single outdent token # can close multiple indents, so we need to know how far in we happen to be. - lineToken: -> - return 0 unless match = MULTI_DENT.exec @chunk + lineToken: (chunk = @chunk) -> + return 0 unless match = MULTI_DENT.exec chunk indent = match[0] @seenFor = no @@ -1103,7 +1142,7 @@ OPERATOR = /// ^ ( WHITESPACE = /^[^\n\S]+/ -COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/ +COMMENT = /^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/ CODE = /^[-=]>/ diff --git a/src/nodes.coffee b/src/nodes.coffee index 4c3fc4dc76..d1aa612668 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -31,8 +31,9 @@ NEGATE = -> @negated = not @negated; this exports.CodeFragment = class CodeFragment constructor: (parent, code) -> @code = "#{code}" - @locationData = parent?.locationData @type = parent?.constructor?.name or 'unknown' + @locationData = parent?.locationData + @comments = parent?.comments toString: -> # This is only intended for debugging. @@ -69,10 +70,13 @@ exports.Base = class Base o.level = lvl if lvl node = @unfoldSoak(o) or this node.tab = o.indent - if o.level is LEVEL_TOP or not node.isStatement(o) + + fragments = if o.level is LEVEL_TOP or not node.isStatement(o) node.compileNode o else node.compileClosure o + @compileComments o, node, fragments if node.comments + fragments # Statements converted into expressions via closure-wrapping share a scope # object with their parent closure, to preserve the expected lexical scope. @@ -103,6 +107,24 @@ exports.Base = class Base parts.push @makeCode ")" parts + compileComments: (o, node, fragments) -> + for comment in node.comments when comment not in @compiledComments + @compiledComments.push comment # Don’t output this comment twice. + if comment.here + hasLeadingMarks = /\n\s*[#|\*]/.test comment.content + comment.content = comment.content.replace /^(\s*)#(?=\s)/gm, '$1 *' + code = "/*#{comment.content}#{if hasLeadingMarks then ' ' else ''}*/" + code = o.indent + code if o.level is LEVEL_TOP + code = @tab + code if comment.unshift + code = code + '\n' if comment.newLine + commentFragment = @makeCode code + commentFragment.comment = comment + commentFragment.suppressTrailingSemicolon = yes + if comment.unshift + fragments.unshift commentFragment + else + fragments.push commentFragment + # If the code generation wishes to use the result of a complex expression # in multiple places, ensure that the expression is only ever evaluated once, # by assigning it to a temporary variable. Pass a level to precompile. @@ -264,6 +286,9 @@ exports.Base = class Base # Is this node used to assign a certain variable? assigns: NO + # Track which comments have been output. + compiledComments: [] + # For this node and all descendents, set the location data to `locationData` # if the location data is not already set. updateLocationDataIfMissing: (locationData) -> @@ -422,8 +447,10 @@ exports.Block = class Block extends Base node.front = true fragments = node.compileToFragments o unless node.isStatement o - fragments.unshift @makeCode "#{@tab}" - fragments.push @makeCode ';' + [..., lastFragment] = fragments + unless lastFragment.code is '' + fragments.unshift @makeCode "#{@tab}" + fragments.push @makeCode ';' unless lastFragment.suppressTrailingSemicolon compiledNodes.push fragments else compiledNodes.push node.compileToFragments o, LEVEL_LIST @@ -435,7 +462,7 @@ exports.Block = class Block extends Base if compiledNodes.length answer = @joinFragmentArrays(compiledNodes, ', ') else - answer = [@makeCode "void 0"] + answer = [@makeCode 'void 0'] if compiledNodes.length > 1 and o.level >= LEVEL_LIST then @wrapInParentheses answer else answer # If we happen to be the top-level **Block**, wrap everything in a safety @@ -521,6 +548,7 @@ exports.Literal = class Literal extends Base [@makeCode @value] toString: -> + # This is only intended for debugging. " #{if @isStatement() then super() else @constructor.name}: #{@value}" exports.NumberLiteral = class NumberLiteral extends Literal @@ -616,12 +644,21 @@ exports.Return = class Return extends Base compileNode: (o) -> answer = [] - # TODO: If we call expression.compile() here twice, we'll sometimes get back different results! - answer.push @makeCode @tab + "return#{if @expression then " " else ""}" + # TODO: If we call `expression.compile()` here twice, we’ll sometimes + # get back different results! if @expression - answer = answer.concat @expression.compileToFragments o, LEVEL_PAREN - answer.push @makeCode ";" - return answer + fragments = @expression.compileToFragments o, LEVEL_PAREN + # If the `return` is followed by a block comment that contains a newline, + # move the comment before the `return` so that JavaScript doesn’t infer + # a semicolon between the `return` and the comment. + if fragments[0].comment and '\n' in fragments[0].code + answer.push fragments.shift() + answer.push @makeCode "#{@tab}return " + answer = answer.concat fragments + else + answer.push @makeCode "#{@tab}return" + answer.push @makeCode ';' + answer # `yield return` works exactly like `return`, except that it turns the function # into a generator. @@ -631,7 +668,6 @@ exports.YieldReturn = class YieldReturn extends Return @error 'yield can only occur inside functions' super o - exports.AwaitReturn = class AwaitReturn extends Return compileNode: (o) -> unless o.scope.parent? @@ -3184,7 +3220,7 @@ utility = (name, o) -> root.utilities[name] = ref multident = (code, tab) -> - code = code.replace /\n/g, '$&' + tab + code = code.replace /\n/g, "$&#{tab}" code.replace /\s+$/, '' isLiteralArguments = (node) -> diff --git a/src/rewriter.coffee b/src/rewriter.coffee index c692841e3c..4c08b5d924 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -7,12 +7,27 @@ {throwSyntaxError} = require './helpers' +# Move attached comments from one token to another. +moveComments = (fromToken, toToken) -> + return unless fromToken.comments + if toToken.comments and toToken.comments.length isnt 0 + for comment in fromToken.comments + if comment.unshift + toToken.comments.unshift comment + else + toToken.comments.push comment + else + toToken.comments = fromToken.comments + delete fromToken.comments + # Create a generated token: one that exists due to a use of implicit syntax. -generate = (tag, value, origin) -> - tok = [tag, value] - tok.generated = yes - tok.origin = origin if origin - tok +# Optionally have this new token take the attached comments from another token. +generate = (tag, value, origin, commentsToken) -> + token = [tag, value] + token.generated = yes + token.origin = origin if origin + moveComments commentsToken, token if commentsToken + token # The **Rewriter** class is used by the [Lexer](lexer.html), directly against # its internal array of tokens. @@ -25,18 +40,24 @@ exports.Rewriter = class Rewriter # corrected before implicit parentheses can be wrapped around blocks of code. rewrite: (@tokens) -> # Set environment variable `DEBUG_TOKEN_STREAM` to `true` to output token - # debugging info. + # debugging info. Also set `DEBUG_REWRITTEN_TOKEN_STREAM` to `true` to + # output the token stream after it has been rewritten by this file. if process.env.DEBUG_TOKEN_STREAM - console.log (t[0] + '/' + t[1] for t in @tokens).join ' ' + console.log 'Initial token stream:' if process.env.DEBUG_REWRITTEN_TOKEN_STREAM + console.log (t[0] + '/' + t[1] + (if t.comments then '*' else '') for t in @tokens).join ' ' @removeLeadingNewlines() @closeOpenCalls() @closeOpenIndexes() @normalizeLines() @tagPostfixConditionals() @addImplicitBracesAndParens() + @rescueStowawayComments() @addLocationDataToGeneratedTokens() @enforceValidCSXAttributes() @fixOutdentLocationData() + if process.env.DEBUG_REWRITTEN_TOKEN_STREAM + console.log 'Rewritten token stream:' if process.env.DEBUG_TOKEN_STREAM + console.log (t[0] + '/' + t[1] + (if t.comments then '*' else '') for t in @tokens).join ' ' @tokens # Rewrite the token stream, looking one token ahead and behind. @@ -68,8 +89,15 @@ exports.Rewriter = class Rewriter # Leading newlines would introduce an ambiguity in the grammar, so we # dispatch them here. removeLeadingNewlines: -> + # Find the index of the first non-`TERMINATOR` token. break for [tag], i in @tokens when tag isnt 'TERMINATOR' - @tokens.splice 0, i if i + return if i is 0 + # If there are any comments attached to the tokens we’re about to discard, + # shift them forward to what will become the new first token. + for leadingNewlineToken in @tokens[0...i] + moveComments leadingNewlineToken, @tokens[i] + # Discard all the leading newline tokens. + @tokens.splice 0, i # The lexer has tagged the opening parenthesis of a method call. Match it with # its paired close. @@ -166,23 +194,23 @@ exports.Rewriter = class Rewriter startImplicitCall = (idx) -> stack.push ['(', idx, ours: yes] - tokens.splice idx, 0, generate 'CALL_START', '(' + tokens.splice idx, 0, generate 'CALL_START', '(', null, prevToken endImplicitCall = -> stack.pop() - tokens.splice i, 0, generate 'CALL_END', ')', ['', 'end of input', token[2]] + tokens.splice i, 0, generate 'CALL_END', ')', ['', 'end of input', token[2]], prevToken i += 1 startImplicitObject = (idx, startsLine = yes) -> stack.push ['{', idx, sameLine: yes, startsLine: startsLine, ours: yes] val = new String '{' val.generated = yes - tokens.splice idx, 0, generate '{', val, token + tokens.splice idx, 0, generate '{', val, token, prevToken endImplicitObject = (j) -> j = j ? i stack.pop() - tokens.splice j, 0, generate '}', '}', token + tokens.splice j, 0, generate '}', '}', token, prevToken i += 1 implicitObjectContinues = (j) => @@ -366,6 +394,55 @@ exports.Rewriter = class Rewriter throwSyntaxError 'expected wrapped or quoted CSX attribute', next[2] return 1 + # Not all tokens survive processing by the parser. To avoid comments getting + # lost into the ether, find comments attached to doomed tokens and move them + # to a token that will make it to the other side. + rescueStowawayComments: -> + shiftCommentsForward = (token, i, tokens) -> + # Find the next surviving token and attach this token’s comments to + # it, with a flag that we know to output such comments *before* that + # token’s own compilation. (Usually comments are output following + # the token they’re attached to.) + j = i + j++ while j isnt tokens.length and tokens[j][0] in DISCARDED + unless j is tokens.length or tokens[j][0] in DISCARDED + comment.unshift = yes for comment in token.comments + moveComments token, tokens[j] + return 1 + else # All following tokens are doomed! + j = tokens.length - 1 + tokens.push generate 'TERMINATOR', '\n', tokens[j] unless tokens[j][0] is 'TERMINATOR' + tokens.push generate 'JS', '', tokens[j], token + # The generated tokens were added to the end, not inline, so we don’t skip. + return 1 + + @scanTokens (token, i, tokens) -> + return 1 unless token.comments and not token.generated + if token[0] in DISCARDED + return shiftCommentsForward token, i, tokens + else + # If any of this token’s comments start a line, i.e. there’s only + # whitespace between the preceding newline and the start of the + # comment; *and* the comment would abut code either to the right + # (if it has `unshift`) or to the left; shift the comments. + dummyToken = comments: [] + j = token.comments.length - 1 + until j is -1 + if token.comments[j].newLine and (( + token.comments[j].unshift is yes and + i isnt tokens.length - 1 and tokens[i + 1][0] not in LINEBREAKS + ) or ( + token.comments[j].unshift isnt yes and + i isnt 0 and tokens[i - 1][0] not in LINEBREAKS + )) + dummyToken.comments.unshift token.comments[j] + token.comments.splice j, 1 + j-- + if dummyToken.comments.length isnt 0 + return shiftCommentsForward dummyToken, i, tokens + else + return 1 + # Add location data to all tokens generated by the rewriter. addLocationDataToGeneratedTokens: -> @scanTokens (token, i, tokens) -> @@ -539,3 +616,8 @@ LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'] # Tokens that close open calls when they follow a newline. CALL_CLOSERS = ['.', '?.', '::', '?::'] + +# Tokens that are swallowed up by the parser, never leading to code generation. +# You can spot these in `grammar.coffee` because the `o` function second +# argument doesn’t contain a `new` call for these tokens. +DISCARDED = LINEBREAKS.concat ['CALL_END', '->', '=>', '{', '}'] # TODO: flesh out this list diff --git a/test/comments.coffee b/test/comments.coffee index a0660c0ad8..e07663a22a 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -244,13 +244,13 @@ test "#3132: Format simple block comment nicely", -> /* No Preceding hash - */ + */ """ test "#3132: Format indented block-comment nicely", -> eqJS """ - fn = () -> + fn = -> ### # Indented Multiline @@ -260,7 +260,6 @@ test "#3132: Format indented block-comment nicely", -> var fn; fn = function() { - /* * Indented Multiline @@ -315,61 +314,61 @@ test "#3132: Format hand-made (raw) jsdoc-style block-comment nicely", -> return 1; };""" -# Although adequately working, block comment-placement is not yet perfect. -# (Considering a case where multiple variables have been declared …) -test "#3132: Place block-comments nicely", -> - eqJS """ - ###* - # A dummy class definition - # - # @class - ### - class DummyClass - - ###* - # @constructor - ### - constructor: -> - - ###* - # Singleton reference - # - # @type {DummyClass} - ### - @instance = new DummyClass() - - """, - """ - /** - * A dummy class definition - * - * @class - */ - var DummyClass; - - DummyClass = (function() { - class DummyClass { - - /** - * @constructor - */ - - constructor() {} - - }; - - - /** - * Singleton reference - * - * @type {DummyClass} - */ - - DummyClass.instance = new DummyClass(); - - return DummyClass; - - })();""" +# # Although adequately working, block comment-placement is not yet perfect. +# # (Considering a case where multiple variables have been declared …) +# test "#3132: Place block-comments nicely", -> +# eqJS """ +# ###* +# # A dummy class definition +# # +# # @class +# ### +# class DummyClass + +# ###* +# # @constructor +# ### +# constructor: -> + +# ###* +# # Singleton reference +# # +# # @type {DummyClass} +# ### +# @instance = new DummyClass() + +# """, +# """ +# /** +# * A dummy class definition +# * +# * @class +# */ +# var DummyClass; + +# DummyClass = (function() { +# class DummyClass { + +# /** +# * @constructor +# */ + +# constructor() {} + +# }; + + +# /** +# * Singleton reference +# * +# * @type {DummyClass} +# */ + +# DummyClass.instance = new DummyClass(); + +# return DummyClass; + +# })();""" test "#3638: Demand a whitespace after # symbol", -> eqJS """ From 3e5692595e3d18f0685181cdf3bd95b170b9ff15 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 21 Jun 2017 00:34:30 -0700 Subject: [PATCH 09/91] If a comment follows a class declaration, move the comment inside the class body --- lib/coffeescript/rewriter.js | 6 ++++-- src/rewriter.coffee | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 524f5cee51..ea63431994 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -467,19 +467,21 @@ } }; return this.scanTokens(function(token, i, tokens) { - var dummyToken, j, ref, ref1, ref2; + var dummyToken, j, ref, ref1, ref2, ref3; if (!(token.comments && !token.generated)) { return 1; } if (ref = token[0], indexOf.call(DISCARDED, ref) >= 0) { return shiftCommentsForward(token, i, tokens); + } else if (i !== 0 && token[0] === 'IDENTIFIER' && ((ref1 = tokens[i - 1][0]) === 'CLASS' || ref1 === 'EXTENDS')) { + return shiftCommentsForward(token, i + 1, tokens); } else { dummyToken = { comments: [] }; j = token.comments.length - 1; while (j !== -1) { - if (token.comments[j].newLine && ((token.comments[j].unshift === true && i !== tokens.length - 1 && (ref1 = tokens[i + 1][0], indexOf.call(LINEBREAKS, ref1) < 0)) || (token.comments[j].unshift !== true && i !== 0 && (ref2 = tokens[i - 1][0], indexOf.call(LINEBREAKS, ref2) < 0)))) { + if (token.comments[j].newLine && ((token.comments[j].unshift === true && i !== tokens.length - 1 && (ref2 = tokens[i + 1][0], indexOf.call(LINEBREAKS, ref2) < 0)) || (token.comments[j].unshift !== true && i !== 0 && (ref3 = tokens[i - 1][0], indexOf.call(LINEBREAKS, ref3) < 0)))) { dummyToken.comments.unshift(token.comments[j]); token.comments.splice(j, 1); } diff --git a/src/rewriter.coffee b/src/rewriter.coffee index 4c08b5d924..1aa8eb2d6c 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -420,6 +420,12 @@ exports.Rewriter = class Rewriter return 1 unless token.comments and not token.generated if token[0] in DISCARDED return shiftCommentsForward token, i, tokens + else if i isnt 0 and token[0] is 'IDENTIFIER' and tokens[i - 1][0] in ['CLASS', 'EXTENDS'] + # If this is a comment following `class ClassName` or + # `class Child extends Parent`, shift it forward to precede the next + # valid token, rather than following this one but ending up outside + # the class wrapper. + return shiftCommentsForward token, i + 1, tokens else # If any of this token’s comments start a line, i.e. there’s only # whitespace between the preceding newline and the start of the From 8b735b6f621385770ee77025ee29eced3616cb59 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 21 Jun 2017 00:35:30 -0700 Subject: [PATCH 10/91] Style --- src/nodes.coffee | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/nodes.coffee b/src/nodes.coffee index ad8f455e74..e0633622cd 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -335,10 +335,10 @@ exports.HoistTarget = class HoistTarget extends Base constructor: (@source) -> super() - # Holds presentational options to apply when the source node is compiled + # Holds presentational options to apply when the source node is compiled. @options = {} - # Placeholder fragments to be replaced by the source node's compilation + # Placeholder fragments to be replaced by the source node’s compilation. @targetFragments = { fragments: [] } isStatement: (o) -> @@ -2237,7 +2237,8 @@ exports.Code = class Code extends Base body = @body.compileWithDeclarations o unless @body.isEmpty() - # We need to compile the body before method names to ensure super references are handled + # We need to compile the body before method names to ensure `super` + # references are handled. if @isMethod [methodScope, o.scope] = [o.scope, o.scope.parent] name = @name.compileToFragments o From 0ac1135d72a6969f5d0ba0cbd704ab71bea6a9da Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Wed, 21 Jun 2017 22:20:05 -0700 Subject: [PATCH 11/91] Improve indentation of multiline comments --- lib/coffeescript/nodes.js | 46 +++++++++++++++++++++++++++++++-------- src/nodes.coffee | 33 +++++++++++++++++++++++----- 2 files changed, 64 insertions(+), 15 deletions(-) diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 74913ee8b9..295b7f3e32 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, CSXTag, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, + var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, CSXTag, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, indentFirstNonCommentLine, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, indexOf = [].indexOf, splice = [].splice, slice = [].slice; @@ -120,7 +120,7 @@ } compileComments(o, node, fragments) { - var code, comment, commentFragment, hasLeadingMarks, j, len1, ref1, results; + var code, comment, commentFragment, hasLeadingMarks, j, k, largestIndent, leadingWhitespace, len1, len2, line, multiline, ref1, ref2, results; ref1 = node.comments; results = []; for (j = 0, len1 = ref1.length; j < len1; j++) { @@ -130,13 +130,27 @@ } this.compiledComments.push(comment); if (comment.here) { - hasLeadingMarks = /\n\s*[#|\*]/.test(comment.content); - comment.content = comment.content.replace(/^(\s*)#(?=\s)/gm, '$1 *'); - code = `/*${comment.content}${(hasLeadingMarks ? ' ' : '')}*/`; - if (o.level === LEVEL_TOP) { - code = o.indent + code; + code = comment.content; + multiline = indexOf.call(code, '\n') >= 0; + hasLeadingMarks = /\n\s*[#|\*]/.test(code); + if (hasLeadingMarks) { + code = code.replace(/^([ \t]*)#(?=\s)/gm, '$1 *'); } - if (comment.unshift) { + if (multiline) { + largestIndent = ''; + ref2 = code.split('\n'); + for (k = 0, len2 = ref2.length; k < len2; k++) { + line = ref2[k]; + leadingWhitespace = /^\s*/.exec(line)[0]; + if (leadingWhitespace.length > largestIndent.length) { + largestIndent = leadingWhitespace; + } + } + code = code.replace(RegExp(`^(${leadingWhitespace})`, "gm"), ''); + code = multident(code, this.tab) + `\n${this.tab}`; + } + code = `/*${code}${(hasLeadingMarks ? ' ' : '')}*/`; + if (o.level === LEVEL_TOP) { code = this.tab + code; } if (comment.newLine) { @@ -845,6 +859,7 @@ if (this.expression) { fragments = this.expression.compileToFragments(o, LEVEL_PAREN); if (fragments[0].comment && indexOf.call(fragments[0].code, '\n') >= 0) { + fragments[0].code = this.tab + fragments[0].code; answer.push(fragments.shift()); } answer.push(this.makeCode(`${this.tab}return `)); @@ -2978,7 +2993,7 @@ } answer.push(this.makeCode('}')); if (this.isMethod) { - return [this.makeCode(this.tab), ...answer]; + return indentFirstNonCommentLine(answer, this); } if (this.front || (o.level >= LEVEL_ACCESS)) { return this.wrapInParentheses(answer); @@ -4344,6 +4359,19 @@ return code.replace(/\s+$/, ''); }; + indentFirstNonCommentLine = function(fragments, node) { + var fragment, i, j, len1, ref1; + for (i = j = 0, len1 = fragments.length; j < len1; i = ++j) { + fragment = fragments[i]; + if (!(!((ref1 = fragment.comment) != null ? ref1.newLine : void 0))) { + continue; + } + fragments.splice(i, 0, node.makeCode(`${node.tab}`)); + break; + } + return fragments; + }; + isLiteralArguments = function(node) { return node instanceof IdentifierLiteral && node.value === 'arguments'; }; diff --git a/src/nodes.coffee b/src/nodes.coffee index e0633622cd..405859d642 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -111,11 +111,23 @@ exports.Base = class Base for comment in node.comments when comment not in @compiledComments @compiledComments.push comment # Don’t output this comment twice. if comment.here - hasLeadingMarks = /\n\s*[#|\*]/.test comment.content - comment.content = comment.content.replace /^(\s*)#(?=\s)/gm, '$1 *' - code = "/*#{comment.content}#{if hasLeadingMarks then ' ' else ''}*/" - code = o.indent + code if o.level is LEVEL_TOP - code = @tab + code if comment.unshift + code = comment.content + multiline = '\n' in code + hasLeadingMarks = /\n\s*[#|\*]/.test code + if hasLeadingMarks + code = code.replace /^([ \t]*)#(?=\s)/gm, '$1 *' + # Unindent multiline comments. + if multiline + largestIndent = '' + for line in code.split '\n' + leadingWhitespace = /^\s*/.exec(line)[0] + if leadingWhitespace.length > largestIndent.length + largestIndent = leadingWhitespace + code = code.replace ///^(#{leadingWhitespace})///gm, '' + # Reindent by the indent of this block. + code = multident(code, @tab) + "\n#{@tab}" + code = "/*#{code}#{if hasLeadingMarks then ' ' else ''}*/" + code = @tab + code if o.level is LEVEL_TOP code = code + '\n' if comment.newLine commentFragment = @makeCode code commentFragment.comment = comment @@ -652,6 +664,7 @@ exports.Return = class Return extends Base # move the comment before the `return` so that JavaScript doesn’t infer # a semicolon between the `return` and the comment. if fragments[0].comment and '\n' in fragments[0].code + fragments[0].code = @tab + fragments[0].code answer.push fragments.shift() answer.push @makeCode "#{@tab}return " answer = answer.concat fragments @@ -2254,7 +2267,7 @@ exports.Code = class Code extends Base answer.push @makeCode('\n'), body..., @makeCode("\n#{@tab}") if body?.length answer.push @makeCode '}' - return [@makeCode(@tab), answer...] if @isMethod + return indentFirstNonCommentLine answer, @ if @isMethod if @front or (o.level >= LEVEL_ACCESS) then @wrapInParentheses answer else answer eachParamName: (iterator) -> @@ -3225,6 +3238,14 @@ multident = (code, tab) -> code = code.replace /\n/g, "$&#{tab}" code.replace /\s+$/, '' +# Insert `node.tab` before the first fragment that isn’t a comment that starts +# a new line. +indentFirstNonCommentLine = (fragments, node) -> + for fragment, i in fragments when not fragment.comment?.newLine + fragments.splice i, 0, node.makeCode "#{node.tab}" + break + fragments + isLiteralArguments = (node) -> node instanceof IdentifierLiteral and node.value is 'arguments' From 7df3ea5cf0789fc6858e5b841b3448d7e5a8cb1b Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Thu, 22 Jun 2017 22:15:26 -0700 Subject: [PATCH 12/91] Fix indentation for block comments, at least in the cases covered by the one failing test --- lib/coffeescript/nodes.js | 58 ++++++++++++--------- src/nodes.coffee | 59 +++++++++++++-------- test/comments.coffee | 106 ++++++++++++++++++-------------------- 3 files changed, 122 insertions(+), 101 deletions(-) diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 1a7d79a95f..4e4a1dd2b7 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, CSXTag, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, indentFirstNonCommentLine, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, + var Access, Arr, Assign, AwaitReturn, Base, Block, BooleanLiteral, CSXTag, Call, Class, Code, CodeFragment, Comment, ExecutableClassBody, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, HoistTarget, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, Super, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addDataToNode, compact, del, ends, extend, flatten, fragmentsToText, indentInitial, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, shouldCacheOrIsAssignable, some, starts, throwSyntaxError, unfoldSoak, utility, indexOf = [].indexOf, splice = [].splice, slice = [].slice; @@ -134,7 +134,7 @@ multiline = indexOf.call(code, '\n') >= 0; hasLeadingMarks = /\n\s*[#|\*]/.test(code); if (hasLeadingMarks) { - code = code.replace(/^([ \t]*)#(?=\s)/gm, '$1 *'); + code = code.replace(/^([ \t]*)#(?=\s)/gm, ' *'); } if (multiline) { largestIndent = ''; @@ -147,17 +147,14 @@ } } code = code.replace(RegExp(`^(${leadingWhitespace})`, "gm"), ''); - code = multident(code, this.tab) + `\n${this.tab}`; } code = `/*${code}${(hasLeadingMarks ? ' ' : '')}*/`; - if (o.level === LEVEL_TOP) { - code = this.tab + code; - } if (comment.newLine) { code = code + '\n'; } commentFragment = this.makeCode(code); commentFragment.comment = comment; + commentFragment.multiline = true; commentFragment.suppressTrailingSemicolon = true; if (comment.unshift) { results.push(fragments.unshift(commentFragment)); @@ -539,12 +536,10 @@ node.front = true; fragments = node.compileToFragments(o); if (!node.isStatement(o)) { + fragments = indentInitial(fragments, this); lastFragment = fragments[fragments.length - 1]; - if (lastFragment.code !== '') { - fragments.unshift(this.makeCode(`${this.tab}`)); - if (!lastFragment.suppressTrailingSemicolon) { - fragments.push(this.makeCode(';')); - } + if (!(lastFragment.code === '' || lastFragment.suppressTrailingSemicolon)) { + fragments.push(this.makeCode(';')); } } compiledNodes.push(fragments); @@ -854,14 +849,20 @@ } compileNode(o) { - var answer, fragments; + var answer, fragment, fragments, i, j, len1; answer = []; if (this.expression) { fragments = this.expression.compileToFragments(o, LEVEL_PAREN); - if (fragments[0].comment && indexOf.call(fragments[0].code, '\n') >= 0) { - fragments[0].code = this.tab + fragments[0].code; - answer.push(fragments.shift()); + for (i = j = 0, len1 = fragments.length; j < len1; i = ++j) { + fragment = fragments[i]; + if ((fragment != null ? fragment.comment : void 0) && fragment.multiline) { + fragment.code = multident(fragment.code, this.tab); + answer.push(fragment); + } else { + break; + } } + fragments = fragments.slice(i); answer.push(this.makeCode(`${this.tab}return `)); answer = answer.concat(fragments); } else { @@ -3045,7 +3046,7 @@ } answer.push(this.makeCode('}')); if (this.isMethod) { - return indentFirstNonCommentLine(answer, this); + return indentInitial(answer, this); } if (this.front || (o.level >= LEVEL_ACCESS)) { return this.wrapInParentheses(answer); @@ -4410,19 +4411,28 @@ }; multident = function(code, tab) { - code = code.replace(/\n/g, `$&${tab}`); - return code.replace(/\s+$/, ''); + var endsWithNewLine; + endsWithNewLine = code[code.length - 1] === '\n'; + code = tab + code.replace(/\n/g, `$&${tab}`); + code = code.replace(/\s+$/, ''); + if (endsWithNewLine) { + code = code + '\n'; + } + return code; }; - indentFirstNonCommentLine = function(fragments, node) { - var fragment, i, j, len1, ref1; + indentInitial = function(fragments, node) { + var fragment, i, j, len1; for (i = j = 0, len1 = fragments.length; j < len1; i = ++j) { fragment = fragments[i]; - if (!(!((ref1 = fragment.comment) != null ? ref1.newLine : void 0))) { - continue; + if (fragment.comment != null) { + fragment.code = multident(fragment.code, node.tab); + } else if (fragment.code === '') { + break; + } else { + fragments.splice(i, 0, node.makeCode(`${node.tab}`)); + break; } - fragments.splice(i, 0, node.makeCode(`${node.tab}`)); - break; } return fragments; }; diff --git a/src/nodes.coffee b/src/nodes.coffee index 6c74be2e77..49cde8d388 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -114,8 +114,8 @@ exports.Base = class Base code = comment.content multiline = '\n' in code hasLeadingMarks = /\n\s*[#|\*]/.test code - if hasLeadingMarks - code = code.replace /^([ \t]*)#(?=\s)/gm, '$1 *' + code = code.replace /^([ \t]*)#(?=\s)/gm, ' *' if hasLeadingMarks + # Unindent multiline comments. if multiline largestIndent = '' @@ -124,13 +124,12 @@ exports.Base = class Base if leadingWhitespace.length > largestIndent.length largestIndent = leadingWhitespace code = code.replace ///^(#{leadingWhitespace})///gm, '' - # Reindent by the indent of this block. - code = multident(code, @tab) + "\n#{@tab}" + code = "/*#{code}#{if hasLeadingMarks then ' ' else ''}*/" - code = @tab + code if o.level is LEVEL_TOP code = code + '\n' if comment.newLine commentFragment = @makeCode code commentFragment.comment = comment + commentFragment.multiline = yes commentFragment.suppressTrailingSemicolon = yes if comment.unshift fragments.unshift commentFragment @@ -456,13 +455,13 @@ exports.Block = class Block extends Base # We want to compile this and ignore the result. node.compileToFragments o else if top - node.front = true + node.front = yes fragments = node.compileToFragments o unless node.isStatement o + fragments = indentInitial fragments, @ [..., lastFragment] = fragments - unless lastFragment.code is '' - fragments.unshift @makeCode "#{@tab}" - fragments.push @makeCode ';' unless lastFragment.suppressTrailingSemicolon + unless lastFragment.code is '' or lastFragment.suppressTrailingSemicolon + fragments.push @makeCode ';' compiledNodes.push fragments else compiledNodes.push node.compileToFragments o, LEVEL_LIST @@ -663,9 +662,13 @@ exports.Return = class Return extends Base # If the `return` is followed by a block comment that contains a newline, # move the comment before the `return` so that JavaScript doesn’t infer # a semicolon between the `return` and the comment. - if fragments[0].comment and '\n' in fragments[0].code - fragments[0].code = @tab + fragments[0].code - answer.push fragments.shift() + for fragment, i in fragments + if fragment?.comment and fragment.multiline + fragment.code = multident fragment.code, @tab + answer.push fragment + else + break + fragments = fragments[i...] answer.push @makeCode "#{@tab}return " answer = answer.concat fragments else @@ -2299,7 +2302,7 @@ exports.Code = class Code extends Base answer.push @makeCode('\n'), body..., @makeCode("\n#{@tab}") if body?.length answer.push @makeCode '}' - return indentFirstNonCommentLine answer, @ if @isMethod + return indentInitial answer, @ if @isMethod if @front or (o.level >= LEVEL_ACCESS) then @wrapInParentheses answer else answer eachParamName: (iterator) -> @@ -3274,15 +3277,27 @@ utility = (name, o) -> root.utilities[name] = ref multident = (code, tab) -> - code = code.replace /\n/g, "$&#{tab}" - code.replace /\s+$/, '' - -# Insert `node.tab` before the first fragment that isn’t a comment that starts -# a new line. -indentFirstNonCommentLine = (fragments, node) -> - for fragment, i in fragments when not fragment.comment?.newLine - fragments.splice i, 0, node.makeCode "#{node.tab}" - break + endsWithNewLine = code[code.length - 1] is '\n' + code = tab + code.replace /\n/g, "$&#{tab}" + code = code.replace /\s+$/, '' + code = code + '\n' if endsWithNewLine + code + +# Wherever in CoffeeScript 1 we might’ve inserted a `makeCode "#{@tab}"` to +# indent a line of code, now we must account for the possibility of comments +# preceding that line of code. If there are such comments, indent each line of +# such comments, and _then_ indent the first following line of code. +indentInitial = (fragments, node) -> + for fragment, i in fragments + if fragment.comment? + fragment.code = multident fragment.code, node.tab + else if fragment.code is '' # Placeholder token to hold initial comments. + # TODO: Remove this `else` when we start outputting line comments, to + # allow the line comment to get the indentation of the following line. + break + else + fragments.splice i, 0, node.makeCode "#{node.tab}" + break fragments isLiteralArguments = (node) -> diff --git a/test/comments.coffee b/test/comments.coffee index e07663a22a..ae9e2e6681 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -314,61 +314,57 @@ test "#3132: Format hand-made (raw) jsdoc-style block-comment nicely", -> return 1; };""" -# # Although adequately working, block comment-placement is not yet perfect. -# # (Considering a case where multiple variables have been declared …) -# test "#3132: Place block-comments nicely", -> -# eqJS """ -# ###* -# # A dummy class definition -# # -# # @class -# ### -# class DummyClass - -# ###* -# # @constructor -# ### -# constructor: -> - -# ###* -# # Singleton reference -# # -# # @type {DummyClass} -# ### -# @instance = new DummyClass() - -# """, -# """ -# /** -# * A dummy class definition -# * -# * @class -# */ -# var DummyClass; - -# DummyClass = (function() { -# class DummyClass { - -# /** -# * @constructor -# */ - -# constructor() {} - -# }; - - -# /** -# * Singleton reference -# * -# * @type {DummyClass} -# */ - -# DummyClass.instance = new DummyClass(); - -# return DummyClass; - -# })();""" +# Although adequately working, block comment-placement is not yet perfect. +# (Considering a case where multiple variables have been declared …) +test "#3132: Place block-comments nicely", -> + eqJS """ + ###* + # A dummy class definition + # + # @class + ### + class DummyClass + + ###* + # @constructor + ### + constructor: -> + + ###* + # Singleton reference + # + # @type {DummyClass} + ### + @instance = new DummyClass() + + """, + """ + /** + * A dummy class definition + * + * @class + */ + var DummyClass; + + DummyClass = (function() { + class DummyClass { + /** + * @constructor + */ + constructor() {} + + }; + + /** + * Singleton reference + * + * @type {DummyClass} + */ + DummyClass.instance = new DummyClass(); + + return DummyClass; + + })();""" test "#3638: Demand a whitespace after # symbol", -> eqJS """ From 4d1fe1b894f6ee8c5f06a70f6b4e23bbf19ee425 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Thu, 22 Jun 2017 22:52:31 -0700 Subject: [PATCH 13/91] =?UTF-8?q?Don=E2=80=99t=20reverse=20the=20order=20o?= =?UTF-8?q?f=20unshifted=20comments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/coffeescript/rewriter.js | 6 ++++-- src/rewriter.coffee | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 2bccdc7022..5a64d2a06d 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -7,20 +7,22 @@ ({throwSyntaxError} = require('./helpers')); moveComments = function(fromToken, toToken) { - var comment, k, len, ref; + var comment, k, len, ref, unshiftedComments; if (!fromToken.comments) { return; } if (toToken.comments && toToken.comments.length !== 0) { + unshiftedComments = []; ref = fromToken.comments; for (k = 0, len = ref.length; k < len; k++) { comment = ref[k]; if (comment.unshift) { - toToken.comments.unshift(comment); + unshiftedComments.push(comment); } else { toToken.comments.push(comment); } } + toToken.comments = unshiftedComments.concat(toToken.comments); } else { toToken.comments = fromToken.comments; } diff --git a/src/rewriter.coffee b/src/rewriter.coffee index 14f4803604..b710d0e837 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -11,11 +11,13 @@ moveComments = (fromToken, toToken) -> return unless fromToken.comments if toToken.comments and toToken.comments.length isnt 0 + unshiftedComments = [] for comment in fromToken.comments if comment.unshift - toToken.comments.unshift comment + unshiftedComments.push comment else toToken.comments.push comment + toToken.comments = unshiftedComments.concat toToken.comments else toToken.comments = fromToken.comments delete fromToken.comments From 6c73b543916b12c1ca7f53254b8db2d1ca7f96ba Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Thu, 22 Jun 2017 23:19:13 -0700 Subject: [PATCH 14/91] =?UTF-8?q?Simplify=20rewriter=E2=80=99s=20handling?= =?UTF-8?q?=20of=20comments,=20generalizing=20the=20special=20case?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/coffeescript/rewriter.js | 8 +++----- src/rewriter.coffee | 24 +++++++----------------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 5a64d2a06d..e9d791efe0 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -472,28 +472,26 @@ } }; return this.scanTokens(function(token, i, tokens) { - var dummyToken, j, ref, ref1, ref2, ref3; + var dummyToken, j, ref, ref1, ref2; if (!(token.comments && !token.generated)) { return 1; } if (ref = token[0], indexOf.call(DISCARDED, ref) >= 0) { return shiftCommentsForward(token, i, tokens); - } else if (i !== 0 && token[0] === 'IDENTIFIER' && ((ref1 = tokens[i - 1][0]) === 'CLASS' || ref1 === 'EXTENDS')) { - return shiftCommentsForward(token, i + 1, tokens); } else { dummyToken = { comments: [] }; j = token.comments.length - 1; while (j !== -1) { - if (token.comments[j].newLine && ((token.comments[j].unshift === true && i !== tokens.length - 1 && (ref2 = tokens[i + 1][0], indexOf.call(LINEBREAKS, ref2) < 0)) || (token.comments[j].unshift !== true && i !== 0 && (ref3 = tokens[i - 1][0], indexOf.call(LINEBREAKS, ref3) < 0)))) { + if (token.comments[j].newLine && !token.comments[j].unshift && (ref1 = (ref2 = tokens[i + 1]) != null ? ref2[0] : void 0, indexOf.call(LINEBREAKS, ref1) >= 0)) { dummyToken.comments.unshift(token.comments[j]); token.comments.splice(j, 1); } j--; } if (dummyToken.comments.length !== 0) { - return shiftCommentsForward(dummyToken, i, tokens); + return shiftCommentsForward(dummyToken, i + 1, tokens); } else { return 1; } diff --git a/src/rewriter.coffee b/src/rewriter.coffee index b710d0e837..2641134af0 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -424,32 +424,22 @@ exports.Rewriter = class Rewriter return 1 unless token.comments and not token.generated if token[0] in DISCARDED return shiftCommentsForward token, i, tokens - else if i isnt 0 and token[0] is 'IDENTIFIER' and tokens[i - 1][0] in ['CLASS', 'EXTENDS'] - # If this is a comment following `class ClassName` or - # `class Child extends Parent`, shift it forward to precede the next - # valid token, rather than following this one but ending up outside - # the class wrapper. - return shiftCommentsForward token, i + 1, tokens else - # If any of this token’s comments start a line, i.e. there’s only + # If any of this token’s comments start a line—there’s only # whitespace between the preceding newline and the start of the - # comment; *and* the comment would abut code either to the right - # (if it has `unshift`) or to the left; shift the comments. + # comment—and the *next* token isn’t a line break, then + # shift this comment forward to precede the next valid token. + # We move this to follow the line break so that this unshifted + # comment is output as starting a line. dummyToken = comments: [] j = token.comments.length - 1 until j is -1 - if token.comments[j].newLine and (( - token.comments[j].unshift is yes and - i isnt tokens.length - 1 and tokens[i + 1][0] not in LINEBREAKS - ) or ( - token.comments[j].unshift isnt yes and - i isnt 0 and tokens[i - 1][0] not in LINEBREAKS - )) + if token.comments[j].newLine and not token.comments[j].unshift and tokens[i + 1]?[0] in LINEBREAKS dummyToken.comments.unshift token.comments[j] token.comments.splice j, 1 j-- if dummyToken.comments.length isnt 0 - return shiftCommentsForward dummyToken, i, tokens + return shiftCommentsForward dummyToken, i + 1, tokens else return 1 From 7ce851430fcf5c684960753e97b2b99b7a53d414 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Fri, 23 Jun 2017 00:01:44 -0700 Subject: [PATCH 15/91] Expand the list of tokens we need to avoid for passing comments through the parser; get some literal tokens to have nodes created for them so that the comments pass through --- lib/coffeescript/grammar.js | 10 +++++----- lib/coffeescript/rewriter.js | 9 +++++++-- src/grammar.coffee | 10 +++++----- src/rewriter.coffee | 6 +++++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js index 9f0e39791c..9a79b044cf 100644 --- a/lib/coffeescript/grammar.js +++ b/lib/coffeescript/grammar.js @@ -99,15 +99,15 @@ o('AlphaNumeric'), o('JS', function() { return new PassthroughLiteral($1); }), o('Regex'), o('UNDEFINED', function() { - return new UndefinedLiteral; + return new UndefinedLiteral($1); }), o('NULL', function() { - return new NullLiteral; + return new NullLiteral($1); }), o('BOOL', function() { return new BooleanLiteral($1); }), o('INFINITY', function() { return new InfinityLiteral($1); }), o('NAN', function() { - return new NaNLiteral; + return new NaNLiteral($1); }) ], Assign: [ @@ -437,9 +437,9 @@ ], This: [ o('THIS', function() { - return new Value(new ThisLiteral); + return new Value(new ThisLiteral($1)); }), o('@', function() { - return new Value(new ThisLiteral); + return new Value(new ThisLiteral($1)); }) ], ThisProperty: [ diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index e9d791efe0..fc4d97ae14 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - var BALANCED_PAIRS, CALL_CLOSERS, CONTROL_IN_IMPLICIT, DISCARDED, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, moveComments, right, throwSyntaxError, + var BALANCED_PAIRS, CALL_CLOSERS, CONTROL_IN_IMPLICIT, DISCARDED, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, l, left, len, len1, moveComments, pair, right, throwSyntaxError, indexOf = [].indexOf; ({throwSyntaxError} = require('./helpers')); @@ -681,6 +681,11 @@ CONTROL_IN_IMPLICIT = ['IF', 'TRY', 'FINALLY', 'CATCH', 'CLASS', 'SWITCH']; - DISCARDED = LINEBREAKS.concat(['CALL_END', '->', '=>', '{', '}']); + DISCARDED = ['->', '=>', '.', '..', '...', ',', '=', '++', '--', '?', 'AS', 'AWAIT', 'DEFAULT', 'ELSE', 'EXTENDS', 'EXPORT', 'FORIN', 'FOROF', 'FORFROM', 'IMPORT', 'INDEX_SOAK', 'LEADING_WHEN', 'RETURN', 'SUPER', 'THROW', 'YIELD'].concat(IMPLICIT_UNSPACED_CALL.concat(IMPLICIT_END.concat(CALL_CLOSERS.concat(CONTROL_IN_IMPLICIT)))); + + for (l = 0, len1 = BALANCED_PAIRS.length; l < len1; l++) { + pair = BALANCED_PAIRS[l]; + DISCARDED = DISCARDED.concat(pair); + } }).call(this); diff --git a/src/grammar.coffee b/src/grammar.coffee index 1d4ea9a3f8..1768c08ebf 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -172,11 +172,11 @@ grammar = o 'AlphaNumeric' o 'JS', -> new PassthroughLiteral $1 o 'Regex' - o 'UNDEFINED', -> new UndefinedLiteral - o 'NULL', -> new NullLiteral + o 'UNDEFINED', -> new UndefinedLiteral $1 + o 'NULL', -> new NullLiteral $1 o 'BOOL', -> new BooleanLiteral $1 o 'INFINITY', -> new InfinityLiteral $1 - o 'NAN', -> new NaNLiteral + o 'NAN', -> new NaNLiteral $1 ] # Assignment of a variable, property, or index to a value. @@ -448,8 +448,8 @@ grammar = # A reference to the *this* current object. This: [ - o 'THIS', -> new Value new ThisLiteral - o '@', -> new Value new ThisLiteral + o 'THIS', -> new Value new ThisLiteral $1 + o '@', -> new Value new ThisLiteral $1 ] # A reference to a property on *this*. diff --git a/src/rewriter.coffee b/src/rewriter.coffee index 2641134af0..c43ba7dbe0 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -623,4 +623,8 @@ CONTROL_IN_IMPLICIT = ['IF', 'TRY', 'FINALLY', 'CATCH', 'CLASS', 'SWITCH'] # Tokens that are swallowed up by the parser, never leading to code generation. # You can spot these in `grammar.coffee` because the `o` function second # argument doesn’t contain a `new` call for these tokens. -DISCARDED = LINEBREAKS.concat ['CALL_END', '->', '=>', '{', '}'] # TODO: flesh out this list +DISCARDED = ['->', '=>', '.', '..', '...', ',', '=', '++', '--', '?', + 'AS', 'AWAIT', 'DEFAULT', 'ELSE', 'EXTENDS', 'EXPORT', 'FORIN', 'FOROF', 'FORFROM', + 'IMPORT', 'INDEX_SOAK', 'LEADING_WHEN', 'RETURN', 'SUPER', 'THROW', 'YIELD' +].concat IMPLICIT_UNSPACED_CALL.concat IMPLICIT_END.concat CALL_CLOSERS.concat CONTROL_IN_IMPLICIT +DISCARDED = DISCARDED.concat pair for pair in BALANCED_PAIRS From 115bffc370b916ef36d47af07dfa3480db99104c Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Sun, 25 Jun 2017 20:19:04 -0700 Subject: [PATCH 16/91] Improve comments; fix multiline flag --- src/nodes.coffee | 8 ++++---- test/comments.coffee | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/nodes.coffee b/src/nodes.coffee index 49cde8d388..796ce17f54 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -110,13 +110,13 @@ exports.Base = class Base compileComments: (o, node, fragments) -> for comment in node.comments when comment not in @compiledComments @compiledComments.push comment # Don’t output this comment twice. - if comment.here + if comment.here # Comment delimited by `###`. code = comment.content multiline = '\n' in code hasLeadingMarks = /\n\s*[#|\*]/.test code code = code.replace /^([ \t]*)#(?=\s)/gm, ' *' if hasLeadingMarks - # Unindent multiline comments. + # Unindent multiline comments. They will be reindented later. if multiline largestIndent = '' for line in code.split '\n' @@ -126,10 +126,10 @@ exports.Base = class Base code = code.replace ///^(#{leadingWhitespace})///gm, '' code = "/*#{code}#{if hasLeadingMarks then ' ' else ''}*/" - code = code + '\n' if comment.newLine + code = "#{code}\n" if comment.newLine commentFragment = @makeCode code commentFragment.comment = comment - commentFragment.multiline = yes + commentFragment.multiline = multiline commentFragment.suppressTrailingSemicolon = yes if comment.unshift fragments.unshift commentFragment diff --git a/test/comments.coffee b/test/comments.coffee index ae9e2e6681..e74cee4d47 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -52,14 +52,14 @@ test "comments in functions", -> false # comment - # comment + # comment before return true ok fn() fn2 = -> #comment fn() - # comment + # comment after return ok fn2() From d8bc20dc8796f08dd46d1028d640ba53601d8a9e Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Tue, 27 Jun 2017 21:27:56 -0700 Subject: [PATCH 17/91] Prepare HereComments for processing line comments --- lib/coffeescript/lexer.js | 1 + lib/coffeescript/nodes.js | 36 ++++++++++++++++++++++++------------ src/lexer.coffee | 1 + src/nodes.coffee | 27 ++++++++++++++++++--------- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/lib/coffeescript/lexer.js b/lib/coffeescript/lexer.js index 89300d8f4c..bc58aeddc6 100644 --- a/lib/coffeescript/lexer.js +++ b/lib/coffeescript/lexer.js @@ -364,6 +364,7 @@ }; prev = this.prev(); if (!prev) { + commentAttachment.newLine = true; this.lineToken(this.chunk.slice(comment.length)); this.token('JS', ''); this.tokens[0].comments = [commentAttachment]; diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 4e4a1dd2b7..da2b9ffd92 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -79,7 +79,7 @@ node.tab = o.indent; fragments = o.level === LEVEL_TOP || !node.isStatement(o) ? node.compileNode(o) : node.compileClosure(o); if (node.comments) { - this.compileComments(o, node, fragments); + this.attachComments(o, node, fragments); } return fragments; } @@ -119,16 +119,16 @@ return parts; } - compileComments(o, node, fragments) { - var code, comment, commentFragment, hasLeadingMarks, j, k, largestIndent, leadingWhitespace, len1, len2, line, multiline, ref1, ref2, results; + attachComments(o, node, fragments) { + var base1, base2, code, comment, commentFragment, fragment, fragmentIndex, hasLeadingMarks, j, k, largestIndent, leadingWhitespace, len1, len2, line, multiline, ref1, ref2, results; ref1 = node.comments; results = []; for (j = 0, len1 = ref1.length; j < len1; j++) { comment = ref1[j]; - if (!(indexOf.call(this.compiledComments, comment) < 0)) { + if (!(indexOf.call(this.attachedComments, comment) < 0)) { continue; } - this.compiledComments.push(comment); + this.attachedComments.push(comment); if (comment.here) { code = comment.content; multiline = indexOf.call(code, '\n') >= 0; @@ -150,14 +150,26 @@ } code = `/*${code}${(hasLeadingMarks ? ' ' : '')}*/`; if (comment.newLine) { - code = code + '\n'; + code = `${code}\n`; } commentFragment = this.makeCode(code); - commentFragment.comment = comment; - commentFragment.multiline = true; + commentFragment.type = 'HereComment'; + commentFragment.multiline = multiline; commentFragment.suppressTrailingSemicolon = true; if (comment.unshift) { - results.push(fragments.unshift(commentFragment)); + results.push((function() { + var l, len3, results1; + results1 = []; + for (fragmentIndex = l = 0, len3 = fragments.length; l < len3; fragmentIndex = ++l) { + fragment = fragments[fragmentIndex]; + if (!(fragment.type !== 'HereComment')) { + continue; + } + fragments.splice(fragmentIndex, 0, commentFragment); + break; + } + return results1; + })()); } else { results.push(fragments.push(commentFragment)); } @@ -387,7 +399,7 @@ Base.prototype.assigns = NO; - Base.prototype.compiledComments = []; + Base.prototype.attachedComments = []; return Base; @@ -855,7 +867,7 @@ fragments = this.expression.compileToFragments(o, LEVEL_PAREN); for (i = j = 0, len1 = fragments.length; j < len1; i = ++j) { fragment = fragments[i]; - if ((fragment != null ? fragment.comment : void 0) && fragment.multiline) { + if ((fragment != null ? fragment.type : void 0) === 'HereComment' && fragment.multiline) { fragment.code = multident(fragment.code, this.tab); answer.push(fragment); } else { @@ -4425,7 +4437,7 @@ var fragment, i, j, len1; for (i = j = 0, len1 = fragments.length; j < len1; i = ++j) { fragment = fragments[i]; - if (fragment.comment != null) { + if (fragment.type === 'HereComment') { fragment.code = multident(fragment.code, node.tab); } else if (fragment.code === '') { break; diff --git a/src/lexer.coffee b/src/lexer.coffee index ac939609d1..3ee61cc0c1 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -341,6 +341,7 @@ exports.Lexer = class Lexer unless prev # If there’s no previous token, create a placeholder token to attach # this comment to; and follow with a newline. + commentAttachment.newLine = yes @lineToken @chunk[comment.length..] # Set the indent. @token 'JS', '' @tokens[0].comments = [commentAttachment] diff --git a/src/nodes.coffee b/src/nodes.coffee index 796ce17f54..3c1961f800 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -75,7 +75,7 @@ exports.Base = class Base node.compileNode o else node.compileClosure o - @compileComments o, node, fragments if node.comments + @attachComments o, node, fragments if node.comments fragments # Statements converted into expressions via closure-wrapping share a scope @@ -107,9 +107,15 @@ exports.Base = class Base parts.push @makeCode ")" parts - compileComments: (o, node, fragments) -> - for comment in node.comments when comment not in @compiledComments - @compiledComments.push comment # Don’t output this comment twice. + attachComments: (o, node, fragments) -> + for comment in node.comments when comment not in @attachedComments + # For block/here comments, denoted by `###`, create fragments and insert + # them into the fragments array, whether they’re multiline comments or + # inline comments like `1 + ### comment ### 2`. + # For line comments, just attach them to their closest fragment for now, + # so they can be inserted into the output later after all the newlines + # have been added. + @attachedComments.push comment # Don’t output this comment twice. if comment.here # Comment delimited by `###`. code = comment.content multiline = '\n' in code @@ -128,11 +134,14 @@ exports.Base = class Base code = "/*#{code}#{if hasLeadingMarks then ' ' else ''}*/" code = "#{code}\n" if comment.newLine commentFragment = @makeCode code - commentFragment.comment = comment + commentFragment.type = 'HereComment' commentFragment.multiline = multiline commentFragment.suppressTrailingSemicolon = yes if comment.unshift - fragments.unshift commentFragment + # Find index of first non-comment fragment, to insert before. + for fragment, fragmentIndex in fragments when fragment.type isnt 'HereComment' + fragments.splice fragmentIndex, 0, commentFragment + break else fragments.push commentFragment @@ -298,7 +307,7 @@ exports.Base = class Base assigns: NO # Track which comments have been output. - compiledComments: [] + attachedComments: [] # For this node and all descendents, set the location data to `locationData` # if the location data is not already set. @@ -663,7 +672,7 @@ exports.Return = class Return extends Base # move the comment before the `return` so that JavaScript doesn’t infer # a semicolon between the `return` and the comment. for fragment, i in fragments - if fragment?.comment and fragment.multiline + if fragment?.type is 'HereComment' and fragment.multiline fragment.code = multident fragment.code, @tab answer.push fragment else @@ -3289,7 +3298,7 @@ multident = (code, tab) -> # such comments, and _then_ indent the first following line of code. indentInitial = (fragments, node) -> for fragment, i in fragments - if fragment.comment? + if fragment.type is 'HereComment' fragment.code = multident fragment.code, node.tab else if fragment.code is '' # Placeholder token to hold initial comments. # TODO: Remove this `else` when we start outputting line comments, to From d9334bbbda7d01c991e9ff4d2945d95222ce3bf5 Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Tue, 27 Jun 2017 22:36:59 -0700 Subject: [PATCH 18/91] =?UTF-8?q?Line=20comments,=20first=20draft:=20the?= =?UTF-8?q?=20tests=20pass,=20but=20the=20line=20comments=20aren=E2=80=99t?= =?UTF-8?q?=20indented=20and=20sometimes=20trail=20previous=20lines=20when?= =?UTF-8?q?=20they=20shouldn=E2=80=99t;=20updated=20compiler=20output=20in?= =?UTF-8?q?=20following=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/coffeescript/nodes.js | 112 ++++++++++++++++++++++++++++++++++++-- src/nodes.coffee | 81 +++++++++++++++++++++++++-- test/comments.coffee | 12 ++-- test/csx.coffee | 22 +++++++- 4 files changed, 210 insertions(+), 17 deletions(-) diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index da2b9ffd92..a2966e1162 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -120,7 +120,7 @@ } attachComments(o, node, fragments) { - var base1, base2, code, comment, commentFragment, fragment, fragmentIndex, hasLeadingMarks, j, k, largestIndent, leadingWhitespace, len1, len2, line, multiline, ref1, ref2, results; + var code, codes, comment, commentFragment, fragment, fragmentIndex, hasLeadingMarks, j, k, largestIndent, leadingWhitespace, len1, len2, line, multiline, ref1, ref2, results; ref1 = node.comments; results = []; for (j = 0, len1 = ref1.length; j < len1; j++) { @@ -174,7 +174,39 @@ results.push(fragments.push(commentFragment)); } } else { - results.push(void 0); + code = comment.content; + multiline = indexOf.call(code, '\n') >= 0; + if (multiline) { + code = code.replace(/^([ \t]*)#/gm, '//'); + } + code = code.replace(/\n+$/, ''); + code = `//${code}`; + codes = multiline ? code.split('\n') : [code]; + results.push((function() { + var base1, base2, l, len3, results1; + results1 = []; + for (l = 0, len3 = codes.length; l < len3; l++) { + code = codes[l]; + if (!(code !== '')) { + continue; + } + commentFragment = this.makeCode(code); + commentFragment.type = 'LineComment'; + commentFragment.trail = !comment.newLine && !comment.unshift; + if (comment.unshift) { + if ((base1 = fragments[0]).precedingComments == null) { + base1.precedingComments = []; + } + results1.push(fragments[0].precedingComments.push(commentFragment)); + } else { + if ((base2 = fragments[fragments.length - 1]).trailingComments == null) { + base2.trailingComments = []; + } + results1.push(fragments[fragments.length - 1].trailingComments.push(commentFragment)); + } + } + return results1; + }).call(this)); } } return results; @@ -616,6 +648,7 @@ } fragments = this.compileWithDeclarations(o); HoistTarget.expand(fragments); + fragments = this.compileComments(fragments); if (o.bare) { return fragments; } @@ -670,6 +703,79 @@ return fragments.concat(post); } + compileComments(fragments) { + var code, commentFragment, fragment, fragmentIndex, j, k, l, len1, len2, newLineIndex, pastFragment, pastFragmentIndex, ref1, ref2, upcomingFragment, upcomingFragmentIndex; + for (fragmentIndex = j = 0, len1 = fragments.length; j < len1; fragmentIndex = ++j) { + fragment = fragments[fragmentIndex]; + if (fragment.precedingComments) { + code = '\n' + ((function() { + var k, len2, ref1, results; + ref1 = fragment.precedingComments; + results = []; + for (k = 0, len2 = ref1.length; k < len2; k++) { + commentFragment = ref1[k]; + results.push(commentFragment.code); + } + return results; + })()).join('\n'); + ref1 = fragments.slice(0, fragmentIndex + 1); + for (pastFragmentIndex = k = ref1.length - 1; k >= 0; pastFragmentIndex = k += -1) { + pastFragment = ref1[pastFragmentIndex]; + newLineIndex = pastFragment.code.lastIndexOf('\n'); + if (newLineIndex === -1) { + if (pastFragmentIndex === 0) { + pastFragment.code = '\n' + pastFragment.code; + newLineIndex = 0; + } else if (pastFragment.type === 'StringWithInterpolations' && pastFragment.code === '{') { + code = code.slice(1) + '\n'; + newLineIndex = 1; + } else { + continue; + } + } + delete fragment.precedingComments; + pastFragment.code = pastFragment.code.slice(0, newLineIndex) + code + pastFragment.code.slice(newLineIndex); + break; + } + } + if (fragment.trailingComments) { + code = ((function() { + var l, len2, ref2, results; + ref2 = fragment.trailingComments; + results = []; + for (l = 0, len2 = ref2.length; l < len2; l++) { + commentFragment = ref2[l]; + results.push(commentFragment.code); + } + return results; + })()).join('\n'); + if (fragment.trailingComments[0].trail) { + code = ` ${code}`; + } + ref2 = fragments.slice(fragmentIndex); + for (upcomingFragmentIndex = l = 0, len2 = ref2.length; l < len2; upcomingFragmentIndex = ++l) { + upcomingFragment = ref2[upcomingFragmentIndex]; + newLineIndex = upcomingFragment.code.indexOf('\n'); + if (newLineIndex === -1) { + if (upcomingFragmentIndex === fragments.length - 1) { + upcomingFragment.code = upcomingFragment.code + '\n'; + newLineIndex = upcomingFragment.code.length; + } else if (upcomingFragment.type === 'StringWithInterpolations' && upcomingFragment.code === '}') { + code = `\n${code}\n`; + newLineIndex = 0; + } else { + continue; + } + } + delete fragment.trailingComments; + upcomingFragment.code = upcomingFragment.code.slice(0, newLineIndex) + code + upcomingFragment.code.slice(newLineIndex); + break; + } + } + } + return fragments; + } + static wrap(nodes) { if (nodes.length === 1 && nodes[0] instanceof Block) { return nodes[0]; @@ -4439,8 +4545,6 @@ fragment = fragments[i]; if (fragment.type === 'HereComment') { fragment.code = multident(fragment.code, node.tab); - } else if (fragment.code === '') { - break; } else { fragments.splice(i, 0, node.makeCode(`${node.tab}`)); break; diff --git a/src/nodes.coffee b/src/nodes.coffee index 3c1961f800..3386f1ec3c 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -145,6 +145,28 @@ exports.Base = class Base else fragments.push commentFragment + else # Line comment, delimited by `#`. + # Successive line comments are joined together, so even line comments + # might be multiline. + code = comment.content + multiline = '\n' in code + code = code.replace /^([ \t]*)#/gm, '//' if multiline + code = code.replace /\n+$/, '' + code = "//#{code}" + + codes = if multiline then code.split('\n') else [code] + for code in codes when code isnt '' + commentFragment = @makeCode code + commentFragment.type = 'LineComment' + commentFragment.trail = not comment.newLine and not comment.unshift + + if comment.unshift + fragments[0].precedingComments ?= [] + fragments[0].precedingComments.push commentFragment + else + fragments[fragments.length - 1].trailingComments ?= [] + fragments[fragments.length - 1].trailingComments.push commentFragment + # If the code generation wishes to use the result of a complex expression # in multiple places, ensure that the expression is only ever evaluated once, # by assigning it to a temporary variable. Pass a level to precompile. @@ -509,6 +531,7 @@ exports.Block = class Block extends Base @expressions = rest fragments = @compileWithDeclarations o HoistTarget.expand fragments + fragments = @compileComments fragments return fragments if o.bare [].concat prelude, @makeCode("(function() {\n"), fragments, @makeCode("\n}).call(this);\n") @@ -544,6 +567,60 @@ exports.Block = class Block extends Base fragments.push @makeCode "\n" fragments.concat post + compileComments: (fragments) -> + for fragment, fragmentIndex in fragments + # Insert comments into the output at the next or previous newline. + # If there are no newlines at which to place comments, create them. + if fragment.precedingComments + code = '\n' + (commentFragment.code for commentFragment in fragment.precedingComments).join '\n' + for pastFragment, pastFragmentIndex in fragments[0...(fragmentIndex + 1)] by -1 + newLineIndex = pastFragment.code.lastIndexOf '\n' + if newLineIndex is -1 + # Keep searching previous fragments until we can’t go back any + # further, either because there are no fragments left or we’ve + # discovered that we’re in a code block that is interpolated + # inside a string. + if pastFragmentIndex is 0 + pastFragment.code = '\n' + pastFragment.code + newLineIndex = 0 + else if pastFragment.type is 'StringWithInterpolations' and pastFragment.code is '{' + code = code[1..] + '\n' # Move newline to end. + newLineIndex = 1 + else + continue + delete fragment.precedingComments + pastFragment.code = pastFragment.code[0...newLineIndex] + + code + pastFragment.code[newLineIndex..] + break + + # Yes, this is awfully similar to the previous `if` block, but if you + # look closely you’ll find lots of tiny differences that make this + # impractical to abstract into a function that both blocks can share. + if fragment.trailingComments + code = (commentFragment.code for commentFragment in fragment.trailingComments).join '\n' + code = " #{code}" if fragment.trailingComments[0].trail + for upcomingFragment, upcomingFragmentIndex in fragments[fragmentIndex...] + newLineIndex = upcomingFragment.code.indexOf '\n' + if newLineIndex is -1 + # Keep searching upcoming fragments until we can’t go any + # further, either because there are no fragments left or we’ve + # discovered that we’re in a code block that is interpolated + # inside a string. + if upcomingFragmentIndex is fragments.length - 1 + upcomingFragment.code = upcomingFragment.code + '\n' + newLineIndex = upcomingFragment.code.length + else if upcomingFragment.type is 'StringWithInterpolations' and upcomingFragment.code is '}' + code = "\n#{code}\n" + newLineIndex = 0 + else + continue + delete fragment.trailingComments + upcomingFragment.code = upcomingFragment.code[0...newLineIndex] + + code + upcomingFragment.code[newLineIndex..] + break + + fragments + # Wrap up the given nodes as a **Block**, unless it already happens # to be one. @wrap: (nodes) -> @@ -3300,10 +3377,6 @@ indentInitial = (fragments, node) -> for fragment, i in fragments if fragment.type is 'HereComment' fragment.code = multident fragment.code, node.tab - else if fragment.code is '' # Placeholder token to hold initial comments. - # TODO: Remove this `else` when we start outputting line comments, to - # allow the line comment to get the indentation of the following line. - break else fragments.splice i, 0, node.makeCode "#{node.tab}" break diff --git a/test/comments.coffee b/test/comments.coffee index e74cee4d47..e1594dc847 100644 --- a/test/comments.coffee +++ b/test/comments.coffee @@ -280,13 +280,13 @@ test "#3132: Format jsdoc-style block-comment nicely", -> fn = () -> 1 """, """ + var fn; + /** * Multiline for jsdoc-"@doctags" * * @type {Function} */ - var fn; - fn = function() { return 1; };""" @@ -303,13 +303,13 @@ test "#3132: Format hand-made (raw) jsdoc-style block-comment nicely", -> fn = () -> 1 """, """ + var fn; + /** * Multiline for jsdoc-"@doctags" * * @type {Function} */ - var fn; - fn = function() { return 1; };""" @@ -339,13 +339,13 @@ test "#3132: Place block-comments nicely", -> """, """ + var DummyClass; + /** * A dummy class definition * * @class */ - var DummyClass; - DummyClass = (function() { class DummyClass { /** diff --git a/test/csx.coffee b/test/csx.coffee index e326afe64c..2ac4d9f593 100644 --- a/test/csx.coffee +++ b/test/csx.coffee @@ -360,9 +360,9 @@ test 'heregex', -> ''', ''' var REGEX, test; - test = /432/gm; + test = /432/gm; // this is a regex - 6 / 432 / gm; + 6 / 432 / gm; // this is division {(test = //)} this is a regex containing something which looks like a tag @@ -395,7 +395,23 @@ test 'comment at start of CSX escape', -> ''', ''' - {"i am a string"} + {// i am a comment + "i am a string"} + ; + ''' + +test 'comment at end of CSX escape', -> + eqJS ''' + + {"i am a string" + # i am a comment + } + + ''', ''' + + {"i am a string" + // i am a comment + } ; ''' From 1636c90da60b7db35d2bc4926e4fd4a6d65f8c4f Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Tue, 27 Jun 2017 22:43:41 -0700 Subject: [PATCH 19/91] Updated compiler, now with line comments --- lib/coffeescript/browser.js | 15 +- lib/coffeescript/cake.js | 19 +- lib/coffeescript/coffeescript.js | 43 +++- lib/coffeescript/command.js | 33 ++- lib/coffeescript/grammar.js | 140 ++++++++++- lib/coffeescript/helpers.js | 31 ++- lib/coffeescript/index.js | 14 +- lib/coffeescript/lexer.js | 210 ++++++++++++++-- lib/coffeescript/nodes.js | 405 +++++++++++++++++++++++++++++-- lib/coffeescript/optparse.js | 16 ++ lib/coffeescript/register.js | 5 + lib/coffeescript/repl.js | 16 +- lib/coffeescript/rewriter.js | 162 ++++++++++++- lib/coffeescript/scope.js | 34 ++- lib/coffeescript/sourcemap.js | 53 +++- 15 files changed, 1132 insertions(+), 64 deletions(-) diff --git a/lib/coffeescript/browser.js b/lib/coffeescript/browser.js index 11e9cb8995..65ca8ae296 100644 --- a/lib/coffeescript/browser.js +++ b/lib/coffeescript/browser.js @@ -1,13 +1,18 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - + var CoffeeScript, compile, runScripts, indexOf = [].indexOf; +// This **Browser** compatibility layer extends core CoffeeScript functions +// to make things work smoothly when compiling code directly in the browser. +// We add support for loading remote Coffee scripts via **XHR**, and +// `text/coffeescript` script tags, source maps via data-URLs, and so on. CoffeeScript = require('./coffeescript'); compile = CoffeeScript.compile; +// Use standard JavaScript `eval` to eval code. CoffeeScript.eval = function(code, options = {}) { if (options.bare == null) { options.bare = true; @@ -21,6 +26,8 @@ return Function(compile(code, options))(); }; +// Export this more limited `CoffeeScript` than what is exported by +// `index.coffee`, which is intended for a Node environment. module.exports = CoffeeScript; if (typeof window === "undefined" || window === null) { @@ -99,6 +106,11 @@ return execute(); }, options, true); } else { +// `options.filename` defines the filename the source map appears as +// in Developer Tools. If a script tag has an `id`, use that as the +// filename; otherwise use `coffeescript`, or `coffeescript1` etc., +// leaving the first one unnumbered for the common case that there’s +// only one CoffeeScript script block to parse. options.filename = script.id && script.id !== '' ? script.id : `coffeescript${(i !== 0 ? i : '')}`; options.sourceFiles = ['embedded']; return coffees[i] = [script.innerHTML, options]; @@ -111,6 +123,7 @@ return execute(); }; +// Listen for window load, both in decent browsers and in IE. if (window.addEventListener) { window.addEventListener('DOMContentLoaded', runScripts, false); } else { diff --git a/lib/coffeescript/cake.js b/lib/coffeescript/cake.js index ff4cac6b8c..f90bebb9ca 100644 --- a/lib/coffeescript/cake.js +++ b/lib/coffeescript/cake.js @@ -1,8 +1,16 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - + var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks; +// `cake` is a simplified version of [Make](http://www.gnu.org/software/make/) +// ([Rake](http://rake.rubyforge.org/), [Jake](https://github.com/280north/jake)) +// for CoffeeScript. You define tasks with names and descriptions in a Cakefile, +// and can call them from the command line, or invoke them from other tasks. +// +// Running `cake` with no arguments will print out a list of all the tasks in the +// current directory's Cakefile. +// External dependencies. fs = require('fs'); path = require('path'); @@ -15,6 +23,7 @@ CoffeeScript.register(); +// Keep track of the list of defined tasks, the accepted options, and so on. tasks = {}; options = {}; @@ -23,13 +32,19 @@ oparse = null; +// Mixin the top-level Cake functions for Cakefiles to use directly. helpers.extend(global, { +// Define a Cake task with a short name, an optional sentence description, +// and the function to run as the action itself. task: function(name, description, action) { if (!action) { [action, description] = [description, action]; } return tasks[name] = {name, description, action}; }, +// Define an option that the Cakefile accepts. The parsed options hash, +// containing all of the command-line options passed, will be made available +// as the first argument to the action. option: function(letter, flag, description) { return switches.push([letter, flag, description]); }, @@ -68,6 +83,7 @@ return results; }; +// Display the list of Cake tasks in a format similar to `rake -T` printTasks = function() { var cakefilePath, desc, name, relative, spaces, task; relative = path.relative || path.resolve; @@ -85,6 +101,7 @@ } }; +// Print an error and exit when attempting to use an invalid task/option. fatalError = function(message) { console.error(message + '\n'); console.log('To see a list of all tasks/options, run "cake"'); diff --git a/lib/coffeescript/coffeescript.js b/lib/coffeescript/coffeescript.js index ad11591ed6..1ef901752c 100644 --- a/lib/coffeescript/coffeescript.js +++ b/lib/coffeescript/coffeescript.js @@ -1,8 +1,12 @@ // Generated by CoffeeScript 2.0.0-beta2 (function() { - + var Lexer, SourceMap, base64encode, compile, formatSourcePosition, getSourceMap, helpers, lexer, packageJson, parser, sourceMaps, sources, withPrettyErrors; +// CoffeeScript can be used both on the server, as a command-line compiler based +// on Node.js/V8, or to run CoffeeScript directly in the browser. This module +// contains the main entry functions for tokenizing, parsing, and compiling +// source CoffeeScript into JavaScript. ({Lexer} = require('./lexer')); ({parser} = require('./parser')); @@ -17,13 +21,19 @@ exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md']; +// Expose helpers for testing. exports.helpers = helpers; +// Function that allows for btoa in both nodejs and the browser. base64encode = function(src) { switch (false) { case typeof Buffer !== 'function': return Buffer.from(src).toString('base64'); case typeof btoa !== 'function': +// The contents of a `