From ae7f97b6395e965f69627ad576ee8e7aaad5f23a Mon Sep 17 00:00:00 2001 From: Geoffrey Booth Date: Thu, 3 Aug 2017 18:11:19 -0700 Subject: [PATCH] 2.0.0-beta4 (#4628) * 2.0.0-beta4 changelog * Recompile parser, update browser compiler * Updated annotated source and browser tests * Bump version to 2.0.0-beta4 --- docs/v2/annotated-source/coffeescript.html | 21 +- docs/v2/annotated-source/command.html | 21 +- docs/v2/annotated-source/grammar.html | 403 ++-- docs/v2/annotated-source/helpers.html | 99 +- docs/v2/annotated-source/lexer.html | 580 +++-- docs/v2/annotated-source/nodes.html | 2340 ++++++++++++++------ docs/v2/annotated-source/optparse.html | 283 ++- docs/v2/annotated-source/repl.html | 155 +- docs/v2/annotated-source/rewriter.html | 605 +++-- docs/v2/browser-compiler/coffeescript.js | 4 +- docs/v2/index.html | 22 +- docs/v2/test.html | 1376 ++++++++++-- documentation/sections/changelog.md | 17 + lib/coffeescript/browser.js | 2 +- lib/coffeescript/cake.js | 2 +- lib/coffeescript/coffeescript.js | 2 +- lib/coffeescript/command.js | 2 +- lib/coffeescript/grammar.js | 2 +- lib/coffeescript/helpers.js | 2 +- lib/coffeescript/index.js | 2 +- lib/coffeescript/lexer.js | 2 +- lib/coffeescript/nodes.js | 2 +- lib/coffeescript/optparse.js | 2 +- lib/coffeescript/parser.js | 349 ++- lib/coffeescript/register.js | 2 +- lib/coffeescript/repl.js | 2 +- lib/coffeescript/rewriter.js | 2 +- lib/coffeescript/scope.js | 2 +- lib/coffeescript/sourcemap.js | 2 +- package.json | 2 +- 30 files changed, 4569 insertions(+), 1738 deletions(-) diff --git a/docs/v2/annotated-source/coffeescript.html b/docs/v2/annotated-source/coffeescript.html index 5353a0bf..f406c8cb 100644 --- a/docs/v2/annotated-source/coffeescript.html +++ b/docs/v2/annotated-source/coffeescript.html @@ -315,6 +315,8 @@ we need to recompile it to get a source map for prepareStackTrace.<
  generateSourceMap = options.sourceMap or options.inlineMap or not options.filename?
   filename = options.filename or '<anonymous>'
 
+  checkShebangLine filename, code
+
   sources[filename] = code
   map = new SourceMap if generateSourceMap
 
@@ -540,13 +542,11 @@ directly as a “Jison lexer”.

@yylineno = @yylloc.first_line else tag = '' - tag setInput: (tokens) -> parser.tokens = tokens @pos = 0 - upcomingInput: -> - ""
+ upcomingInput: -> '' @@ -757,7 +757,20 @@ positions.

break if frame.getFunction() is exports.run " at #{formatSourcePosition frame, getSourceMapping}" - "#{err.toString()}\n#{frames.join '\n'}\n" + "#{err.toString()}\n#{frames.join '\n'}\n" + +checkShebangLine = (file, input) -> + firstLine = input.split(/$/m)[0] + rest = firstLine?.match(/^#!\s*([^\s]+\s*)(.*)/) + args = rest?[2]?.split(/\s/).filter (s) -> s isnt '' + if args?.length > 1 + console.error ''' + The script to be run begins with a shebang line with more than one + argument. This script will fail on platforms such as Linux which only + allow a single argument. + ''' + console.error "The shebang line was: '#{firstLine}' in file '#{file}'" + console.error "The arguments were: #{JSON.stringify args}" diff --git a/docs/v2/annotated-source/command.html b/docs/v2/annotated-source/command.html index ac073b48..2d047c48 100644 --- a/docs/v2/annotated-source/command.html +++ b/docs/v2/annotated-source/command.html @@ -180,7 +180,7 @@ useWinPathSep = path.sep is
BANNER = '''
-  Usage: coffee [options] path/to/script.coffee -- [args]
+  Usage: coffee [options] path/to/script.coffee [args]
 
   If called without options, `coffee` will run your script.
 '''
@@ -260,7 +260,21 @@ Many flags cause us to divert before compiling anything. Flags passed after
exports.run = ->
   optionParser = buildCSOptionParser()
-  parseOptions()
+ try parseOptions() + catch err + console.error "option parsing error: #{err.message}" + process.exit 1 + + if (not opts.doubleDashed) and (opts.arguments[1] is '--') + printWarn ''' + coffee was invoked with '--' as the second positional argument, which is + now deprecated. To pass '--' as an argument to a script to run, put an + additional '--' before the path to your script. + + '--' will be removed from the argument list. + ''' + printWarn "The positional arguments were: #{JSON.stringify opts.arguments}" + opts.arguments = [opts.arguments[0]].concat opts.arguments[2..] @@ -842,6 +856,9 @@ the node binary, preserving the other options.

cwd: process.cwd() env: process.env stdio: [0, 1, 2] + for signal in ['SIGINT', 'SIGTERM'] + process.on signal, do (signal) -> + -> p.kill signal p.on 'exit', (code) -> process.exit code diff --git a/docs/v2/annotated-source/grammar.html b/docs/v2/annotated-source/grammar.html index 0f506c65..8867d22e 100644 --- a/docs/v2/annotated-source/grammar.html +++ b/docs/v2/annotated-source/grammar.html @@ -209,8 +209,8 @@ previous nonterminal.

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}())" @@ -225,8 +225,8 @@ previous nonterminal.

-
  action = action.replace /\bnew /g, '$&yy.'
-  action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&'
+
    action = action.replace /\bnew /g, '$&yy.'
+    action = action.replace /\b(?:Block\.wrap|extend)\b/g, 'yy.$&'
@@ -237,22 +237,23 @@ previous nonterminal.

-

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.

+

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.

-
  addLocationDataFn = (first, last) ->
-    if not last
-      "yy.addLocationDataFn(@#{first})"
-    else
-      "yy.addLocationDataFn(@#{first}, @#{last})"
+            
    getAddDataToNodeFunctionString = (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, getAddDataToNodeFunctionString('$1')
+    action = action.replace /LOC\(([0-9]*),\s*([0-9]*)\)/g, getAddDataToNodeFunctionString('$1', '$2')
+    performActionFunctionString = "$$ = #{getAddDataToNodeFunctionString(1, patternCount)}(#{action});"
+  else
+    performActionFunctionString = '$$ = $1;'
 
-  [patternString, "$$ = #{addLocationDataFn(1, patternCount)}(#{action});", options]
+ [patternString, performActionFunctionString, options]
@@ -380,7 +381,6 @@ grammar.

  Statement: [
     o 'Return'
-    o 'Comment'
     o 'STATEMENT',                              -> new StatementLiteral $1
     o 'Import'
     o 'Export'
@@ -404,7 +404,6 @@ them somewhat circular.

  Expression: [
     o 'Value'
-    o 'Invocation'
     o 'Code'
     o 'Operation'
     o 'Assign'
@@ -500,11 +499,11 @@ through and printed to JavaScript.

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 ]
@@ -553,7 +552,6 @@ the ordinary Assign is that these allow numbers and strings as o 'SimpleObjAssignable = INDENT Expression OUTDENT', -> new Assign LOC(1)(new Value $1), $4, null, operatorToken: LOC(2)(new Literal $2) - o 'Comment' ] SimpleObjAssignable: [ @@ -582,7 +580,9 @@ the ordinary Assign is that these allow numbers and strings as
  ObjRestValue: [
     o 'SimpleObjAssignable ...', -> new Splat new Value $1
+    o '... SimpleObjAssignable', -> new Splat new Value $2
     o 'ObjSpreadExpr ...',       -> new Splat $1
+    o '... ObjSpreadExpr',       -> new Splat $2
   ]
 
   ObjSpreadExpr: [
@@ -591,14 +591,19 @@ the ordinary Assign is that these allow numbers and strings as
     o 'Parenthetical'
     o 'Super'
     o 'This'
-    o 'SUPER Arguments',               -> new SuperCall LOC(1)(new Super), $2
+    o 'SUPER Arguments',               -> new SuperCall LOC(1)(new Super), $2, no, $1
     o 'SimpleObjAssignable Arguments', -> new Call (new Value $1), $2
     o 'ObjSpreadExpr Arguments',       -> new Call $1, $2
   ]
 
   ObjSpreadIdentifier: [
-    o 'SimpleObjAssignable . Property',                             -> (new Value $1).add(new Access $3)
-    o 'SimpleObjAssignable INDEX_START IndexValue INDEX_END',       -> (new Value $1).add($3)
+    o 'SimpleObjAssignable ObjSpreadAccessor', -> (new Value $1).add $2
+    o 'ObjSpreadExpr ObjSpreadAccessor',       -> (new Value $1).add $2
+  ]
+
+  ObjSpreadAccessor: [
+    o '. Property',                             -> new Access $2
+    o 'INDEX_START IndexValue INDEX_END',       -> $2
   ]
@@ -616,6 +621,7 @@ the ordinary Assign is that these allow numbers and strings as
  Return: [
     o 'RETURN Expression',                      -> new Return $2
+    o 'RETURN INDENT Object OUTDENT',           -> new Return new Value $3
     o 'RETURN',                                 -> new Return
   ]
 
@@ -638,23 +644,6 @@ the ordinary Assign is that these allow numbers and strings as
               
-

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.

    @@ -668,11 +657,11 @@ of Block preceded by a function arrow, with an optional paramet
  • -
  • +
  • - +

    CoffeeScript has two different symbols for functions. -> is for ordinary functions, and => is for functions bound to the current value of this.

    @@ -680,18 +669,18 @@ functions, and => is for functions bound to the current value of
      FuncGlyph: [
    -    o '->',                                     -> 'func'
    -    o '=>',                                     -> 'boundfunc'
    +    o '->',                                     -> new FuncGlyph $1
    +    o '=>',                                     -> new FuncGlyph $1
       ]
  • -
  • +
  • - +

    An optional, trailing comma.

    @@ -705,11 +694,11 @@ functions, and => is for functions bound to the current value of
  • -
  • +
  • - +

    The list of parameters that a function accepts can be of any length.

    @@ -726,11 +715,11 @@ functions, and => is for functions bound to the current value of
  • -
  • +
  • - +

    A single parameter in a function definition can be ordinary, or a splat that hoovers up the remaining arguments.

    @@ -740,6 +729,7 @@ that hoovers up the remaining arguments.

      Param: [
         o 'ParamVar',                               -> new Param $1
         o 'ParamVar ...',                           -> new Param $1, null, on
    +    o '... ParamVar',                           -> new Param $2, null, on
         o 'ParamVar = Expression',                  -> new Param $1, $3
         o '...',                                    -> new Expansion
       ]
    @@ -747,11 +737,11 @@ that hoovers up the remaining arguments.

  • -
  • +
  • - +

    Function Parameters

    @@ -767,11 +757,11 @@ that hoovers up the remaining arguments.

  • -
  • +
  • - +

    A splat that occurs outside of a parameter list.

    @@ -779,6 +769,26 @@ that hoovers up the remaining arguments.

      Splat: [
         o 'Expression ...',                         -> new Splat $1
    +    o '... Expression',                         -> new Splat $2
    +  ]
    + +
  • + + +
  • +
    + +
    + +
    +

    Variables and properties that can be assigned to.

    + +
    + +
      SimpleAssignable: [
    +    o 'Identifier',                             -> new Value $1
    +    o 'Value Accessor',                         -> $1.add $2
    +    o 'ThisProperty'
       ]
  • @@ -790,26 +800,6 @@ that hoovers up the remaining arguments.

    -

    Variables and properties that can be assigned to.

    - -
    - -
      SimpleAssignable: [
    -    o 'Identifier',                             -> new Value $1
    -    o 'Value Accessor',                         -> $1.add $2
    -    o 'Invocation Accessor',                    -> new Value $1, [].concat $2
    -    o 'ThisProperty'
    -  ]
    - - - - -
  • -
    - -
    - -

    Everything that can be assigned to.

    @@ -823,11 +813,11 @@ that hoovers up the remaining arguments.

  • -
  • +
  • - +

    The types of things that can be treated as values – assigned to, invoked as functions, indexed into, named as a class, etc.

    @@ -839,8 +829,27 @@ as functions, indexed into, named as a class, etc.

    o 'Literal', -> new Value $1 o 'Parenthetical', -> new Value $1 o 'Range', -> new Value $1 + o 'Invocation', -> new Value $1 o 'This' - o 'Super' + o 'Super', -> new Value $1 + ]
  • + + + + +
  • +
    + +
    + +
    +

    A super-based expression that can be used as a value.

    + +
    + +
      Super: [
    +    o 'SUPER . Property',                       -> new Super LOC(3)(new Access $3), [], no, $1
    +    o 'SUPER INDEX_START Expression INDEX_END', -> new Super LOC(3)(new Index $3),  [], no, $1
       ]
  • @@ -852,24 +861,6 @@ as functions, indexed into, named as a class, etc.

    -

    A super-based expression that can be used as a value.

    - - - -
      Super: [
    -    o 'SUPER . Property',                       -> new Super LOC(3) new Access $3
    -    o 'SUPER INDEX_START Expression INDEX_END', -> new Super LOC(3) new Index $3
    -  ]
    - - - - -
  • -
    - -
    - -

    The general group of accessors into an object, by property, by prototype or by array index or slice.

    @@ -887,11 +878,11 @@ or by array index or slice.

  • -
  • +
  • - +

    Indexing into an object or array using bracket notation.

    @@ -899,7 +890,7 @@ or by array index or slice.

      Index: [
         o 'INDEX_START IndexValue INDEX_END',       -> $2
    -    o 'INDEX_SOAK  Index',                      -> extend $2, soak : yes
    +    o 'INDEX_SOAK  Index',                      -> extend $2, soak: yes
       ]
     
       IndexValue: [
    @@ -910,11 +901,11 @@ or by array index or slice.

  • -
  • +
  • - +

    In CoffeeScript, an object literal is simply a list of assignments.

    @@ -927,11 +918,11 @@ or by array index or slice.

  • -
  • +
  • - +

    Assignment of properties within an object literal can be separated by comma, as in JavaScript, or simply by newline.

    @@ -949,11 +940,11 @@ comma, as in JavaScript, or simply by newline.

  • -
  • +
  • - +

    Class definitions have optional bodies of prototype property assignments, and optional references to the superclass.

    @@ -1038,11 +1029,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    Ordinary function invocation, or a chained series of calls.

    @@ -1051,18 +1042,17 @@ and optional references to the superclass.

      Invocation: [
         o 'Value OptFuncExist String',              -> new TaggedTemplateCall $1, $3, $2
         o 'Value OptFuncExist Arguments',           -> new Call $1, $3, $2
    -    o 'Invocation OptFuncExist Arguments',      -> new Call $1, $3, $2
    -    o 'SUPER OptFuncExist Arguments',           -> new SuperCall LOC(1)(new Super), $3, $2
    +    o 'SUPER OptFuncExist Arguments',           -> new SuperCall LOC(1)(new Super), $3, $2, $1
       ]
  • -
  • +
  • - +

    An optional existence check on a function.

    @@ -1076,11 +1066,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    The list of arguments to a function call.

    @@ -1094,19 +1084,36 @@ and optional references to the superclass.

  • -
  • +
  • - +

    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.

    + +
    + +
      ThisProperty: [
    +    o '@ Property',                             -> new Value LOC(1)(new ThisLiteral $1), [LOC(2)(new Access($2))], 'this'
       ]
  • @@ -1118,23 +1125,6 @@ and optional references to the superclass.

    -

    A reference to a property on this.

    - - - -
      ThisProperty: [
    -    o '@ Property',                             -> new Value LOC(1)(new ThisLiteral), [LOC(2)(new Access($2))], 'this'
    -  ]
    - - - - -
  • -
    - -
    - -

    The array literal.

    @@ -1147,11 +1137,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    Inclusive and exclusive range dots.

    @@ -1165,11 +1155,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    The CoffeeScript range literal.

    @@ -1182,11 +1172,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    Array slice literals.

    @@ -1202,11 +1192,11 @@ and optional references to the superclass.

  • -
  • +
  • - +

    The ArgList is both the list of objects passed into a function call, as well as the contents of an array literal @@ -1225,11 +1215,11 @@ as well as the contents of an array literal

  • -
  • +
  • - +

    Valid arguments are Blocks or Splats.

    @@ -1244,11 +1234,11 @@ as well as the contents of an array literal
  • -
  • +
  • - +

    Just simple, comma-separated, required arguments (no fancy syntax). We need this to be separate from the ArgList for use in Switch blocks, where @@ -1264,11 +1254,11 @@ having the newlines wouldn’t make sense.

  • -
  • +
  • - +

    The variants of try/catch/finally exception handling blocks.

    @@ -1284,11 +1274,11 @@ having the newlines wouldn’t make sense.

  • -
  • +
  • - +

    A catch clause names its error and runs a block of code.

    @@ -1303,11 +1293,11 @@ having the newlines wouldn’t make sense.

  • -
  • +
  • - +

    Throw an exception object.

    @@ -1315,16 +1305,17 @@ having the newlines wouldn’t make sense.

      Throw: [
         o 'THROW Expression',                       -> new Throw $2
    +    o 'THROW INDENT Object OUTDENT',            -> new Throw new Value $3
       ]
  • -
  • +
  • - +

    Parenthetical expressions. Note that the Parenthetical is a Value, not an Expression, so if you need to use an expression in a place @@ -1341,11 +1332,11 @@ the trick.

  • -
  • +
  • - +

    The condition portion of a while loop.

    @@ -1361,11 +1352,11 @@ the trick.

  • -
  • +
  • - +

    The while loop can either be normal, with a block of expressions to execute, or postfix, with a single expression. There is no do..while.

    @@ -1387,11 +1378,11 @@ or postfix, with a single expression. There is no do..while.

  • -
  • +
  • - +

    Array, object, and range comprehensions, at the most generic level. Comprehensions can either be normal, with a block of expressions to execute, @@ -1419,11 +1410,11 @@ or postfix, with a single expression.

  • -
  • +
  • - +

    An array of all accepted values for a variable inside the loop. This enables support for pattern matching.

    @@ -1440,11 +1431,11 @@ This enables support for pattern matching.

  • -
  • +
  • - +

    An array or range comprehension has variables for the current element and (optional) reference to the current index. Or, key, value, in the case @@ -1460,11 +1451,11 @@ of object comprehensions.

  • -
  • +
  • - +

    The source of a comprehension is an array or object with an optional guard clause. If it’s an array comprehension, you can also choose to step through @@ -1499,11 +1490,11 @@ in fixed-size increments.

  • -
  • +
  • - +

    An individual When clause, with action.

    @@ -1517,11 +1508,11 @@ in fixed-size increments.

  • -
  • +
  • - +

    The most basic form of if is a condition and an action. The following if-related rules are broken up along these lines in order to avoid @@ -1537,11 +1528,11 @@ ambiguity.

  • -
  • +
  • - +

    The full complement of if expressions, including postfix one-liner if and unless.

    @@ -1558,11 +1549,11 @@ ambiguity.

  • -
  • +
  • - +

    Arithmetic and logical operators, working on one or more operands. Here they are grouped by order of precedence. The actual precedence rules @@ -1589,11 +1580,11 @@ rules are necessary.

  • -
  • +
  • - +

    The existential operator.

    @@ -1631,14 +1622,26 @@ rules are necessary.

  • +
  • +
    + +
    + +
    +

    Precedence

    + +
    + +
  • + +
  • -

    Precedence

    - +
  • @@ -1650,18 +1653,6 @@ rules are necessary.

    - - - - - - -
  • -
    - -
    - -

    Operators at the top of this list have higher precedence than the ones lower down. Following these rules is what makes 2 + 3 * 4 parse as:

    2 + (3 * 4)
    @@ -1701,14 +1692,26 @@ down. Following these rules is what makes 2 + 3 * 4 parse as:

  • +
  • +
    + +
    + +
    +

    Wrapping Up

    + +
    + +
  • + +
  • -

    Wrapping Up

    - +
  • @@ -1720,18 +1723,6 @@ down. Following these rules is what makes 2 + 3 * 4 parse as:

    - - - - - - -
  • -
    - -
    - -

    Finally, now that we have our grammar and our operators, we can create our Jison.Parser. We do this by processing all of our rules, recording all terminals (every symbol which does not appear as the name of a rule above) @@ -1750,11 +1741,11 @@ as “tokens”.

  • -
  • +
  • - +

    Initialize the Parser with our list of terminal tokens, our grammar rules, and the name of the root. Reverse the operators because Jison orders diff --git a/docs/v2/annotated-source/helpers.html b/docs/v2/annotated-source/helpers.html index 46223624..834df0d9 100644 --- a/docs/v2/annotated-source/helpers.html +++ b/docs/v2/annotated-source/helpers.html @@ -382,7 +382,10 @@ If last is not provided, this will simply return first first_line: first.first_line first_column: first.first_column last_line: last.last_line - last_column: last.last_column

    + last_column: last.last_column + +buildLocationHash = (loc) -> + "#{loc.first_line}x#{loc.first_column}-#{loc.last_line}x#{loc.last_column}"
  • @@ -399,12 +402,8 @@ The object is returned either way.

    -
    exports.addLocationDataFn = (first, last) ->
    -  (obj) ->
    -    if ((typeof obj) is 'object') and (!!obj['updateLocationDataIfMissing'])
    -      obj.updateLocationDataIfMissing buildLocationData(first, last)
    -
    -    return obj
    +
    exports.addDataToNode = (parserState, first, last) ->
    +  (obj) ->
    @@ -415,6 +414,56 @@ The object is returned either way.

    +

    Add location data

    + + + +
        if obj?.updateLocationDataIfMissing? and first?
    +      obj.updateLocationDataIfMissing buildLocationData(first, last)
    + + + + +
  • +
    + +
    + +
    +

    Add comments data

    + +
    + +
        unless parserState.tokenComments
    +      parserState.tokenComments = {}
    +      for token in parserState.parser.tokens when token.comments
    +        tokenHash = buildLocationHash token[2]
    +        unless parserState.tokenComments[tokenHash]?
    +          parserState.tokenComments[tokenHash] = token.comments
    +        else
    +          parserState.tokenComments[tokenHash].push token.comments...
    +
    +    if obj.locationData?
    +      objHash = buildLocationHash obj.locationData
    +      if parserState.tokenComments[objHash]?
    +        attachCommentsToNode parserState.tokenComments[objHash], obj
    +
    +    obj
    +
    +exports.attachCommentsToNode = attachCommentsToNode = (comments, node) ->
    +  return if not comments? or comments.length is 0
    +  node.comments ?= []
    +  node.comments.push comments...
    + +
  • + + +
  • +
    + +
    + +

    Convert jison location data to a string. obj can be a token, or a locationData.

    @@ -433,11 +482,11 @@ The object is returned either way.

  • -
  • +
  • - +

    A .coffee.md compatible version of basename, that returns the file sans-extension.

    @@ -456,11 +505,11 @@ The object is returned either way.

  • -
  • +
  • - +

    Determine if a filename represents a CoffeeScript file.

    @@ -471,11 +520,11 @@ The object is returned either way.

  • -
  • +
  • - +

    Determine if a filename represents a Literate CoffeeScript file.

    @@ -486,11 +535,11 @@ The object is returned either way.

  • -
  • +
  • - +

    Throws a SyntaxError from a given location. The error’s toString will return an error message following the “standard” @@ -507,11 +556,11 @@ marker showing where the error is.

  • -
  • +
  • - +

    Instead of showing the compiler’s stacktrace, show our custom error message (this is useful when the error bubbles up in Node.js applications that @@ -526,11 +575,11 @@ compile CoffeeScript for example).

  • -
  • +
  • - +

    Update a compiler SyntaxError with source code information if it didn’t have it already.

    @@ -542,11 +591,11 @@ it already.

  • -
  • +
  • - +

    Avoid screwing up the stack property of other errors (i.e. possible bugs).

    @@ -572,11 +621,11 @@ it already.

  • -
  • +
  • - +

    Show only the first line on multi-line errors.

    @@ -588,11 +637,11 @@ it already.

  • -
  • +
  • - +

    Check to see if we’re running on a color-enabled TTY.

    diff --git a/docs/v2/annotated-source/lexer.html b/docs/v2/annotated-source/lexer.html index 12aab1e4..2fe6eb2b 100644 --- a/docs/v2/annotated-source/lexer.html +++ b/docs/v2/annotated-source/lexer.html @@ -143,7 +143,7 @@ are read by jison in the parser.lexer function defined in coffeescr
    {count, starts, compact, repeat, invertLiterate, merge,
    -locationDataToString, throwSyntaxError} = require './helpers'
    +attachCommentsToNode, locationDataToString, throwSyntaxError} = require './helpers'
  • @@ -210,19 +210,20 @@ it has consumed.

      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? ...`.
         @csxDepth = 0                # Used to optimize CSX checks, how deep in CSX we are.
    +    @csxObjAttribute = {}        # Used to detect if CSX attributes is wrapped in {} (<div {props...} />).
     
         @chunkLine =
           opts.line or 0             # The start line for the current @chunk.
    @@ -268,7 +269,7 @@ short-circuiting if any of them succeed. Their order determines precedence:
                   
    -

    Update position

    +

    Update position.

    @@ -392,6 +393,12 @@ though is means === otherwise.

    if id is 'default' and @seenExport and @tag() in ['EXPORT', 'AS'] @token 'DEFAULT', id return id.length + if id is 'do' and regExSuper = /^(\s*super)(?!\(\))/.exec @chunk[3...] + @token 'SUPER', 'super' + @token 'CALL_START', '(' + @token 'CALL_END', ')' + [input, sup] = regExSuper + return sup.length + 3 prev = @prev() @@ -628,21 +635,16 @@ properly tag the from.

    -

    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
    +            
      commentToken: (chunk = @chunk) ->
    +    return 0 unless match = chunk.match COMMENT
         [comment, here] = match
    -    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
    -    comment.length
    + contents = null
    @@ -653,6 +655,130 @@ properly tag the from.

    +

    Does this comment follow code on the same line?

    + + + +
        newLine = /^\s*\n+\s*#/.test comment
    +    if here
    +      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
    +      if '\n' in content
    +        content = content.replace /// \n #{repeat ' ', @indent} ///g, '\n'
    +      contents = [content]
    +    else
    + +
  • + + +
  • +
    + +
    + +
    +

    The COMMENT regex captures successive line comments as one token. +Remove any leading newlines before the first comment, but preserve +blank lines between line comments.

    + +
    + +
          content = comment.replace /^(\n*)/, ''
    +      content = content.replace /^([ |\t]*)#/gm, ''
    +      contents = content.split '\n'
    +
    +    commentAttachments = for content, i in contents
    +      content: content
    +      here: here?
    +      newLine: newLine or i isnt 0 # Line comments after the first one start new lines, by definition.
    +
    +    prev = @prev()
    +    unless prev
    + +
  • + + +
  • +
    + +
    + +
    +

    If there’s no previous token, create a placeholder token to attach +this comment to; and follow with a newline.

    + +
    + +
          commentAttachments[0].newLine = yes
    +      @lineToken @chunk[comment.length..] # Set the indent.
    +      placeholderToken = @makeToken 'JS', ''
    +      placeholderToken.generated = yes
    +      placeholderToken.comments = commentAttachments
    +      @tokens.push placeholderToken
    +      @newlineToken 0
    +    else
    +      attachCommentsToNode commentAttachments, prev
    +
    +    comment.length
    + +
  • + + +
  • +
    + +
    + +

    Matches JavaScript interpolated directly into the source via backticks.

    @@ -664,11 +790,11 @@ properly tag the from.

  • -
  • +
  • - +

    Convert escaped backticks to backticks, and escaped backslashes just before escaped backticks to backslashes

    @@ -680,11 +806,11 @@ just before escaped backticks to backslashes

  • -
  • +
  • - +

    string is always a value like ‘`‘, ‘\`‘, ‘\\`‘, etc. By reducing it to its latter half, we turn ‘`‘ to ‘', '\\\‘ to ‘`‘, etc.

    @@ -698,11 +824,11 @@ By reducing it to its latter half, we turn ‘`‘ to ‘', '\\\ -
  • +
  • - +

    Matches regular expression literals, as well as multiline extended ones. Lexing regular expressions is difficult to distinguish from division, so we @@ -717,6 +843,8 @@ borrow some basic heuristics from JavaScript and Ruby.

    offset: match.index + match[1].length when match = @matchWithInterpolations HEREGEX, '///' {tokens, index} = match + comments = @chunk[0...index].match /\s+(#(?!{).*)/g + @commentToken comment for comment in comments if comments when match = REGEX.exec @chunk [regex, body, closed] = match @validateEscapes body, isRegex: yes, offsetInChunk: 1 @@ -760,11 +888,11 @@ borrow some basic heuristics from JavaScript and Ruby.

  • -
  • +
  • - +

    Matches newlines, indents, and outdents, and determines which is which. If we can detect that the current line is continued onto the next line, @@ -777,8 +905,8 @@ 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
    @@ -803,7 +931,7 @@ can close multiple indents, so we need to know how far in we happen to be.

    return indent.length if size > @indent - if noNewlines or @tag() is 'RETURN' + if noNewlines @indebt = size - @indent @suppressNewlines() return indent.length @@ -828,11 +956,11 @@ can close multiple indents, so we need to know how far in we happen to be.

  • -
  • +
  • - +

    Record an outdent token or multiple tokens, if we happen to be moving back inwards past several recorded indents. Sets new @indent value.

    @@ -858,11 +986,11 @@ inwards past several recorded indents. Sets new @indent value.

  • -
  • +
  • - +

    pair might call outdentToken, so preserve decreasedIndent

    @@ -882,11 +1010,11 @@ inwards past several recorded indents. Sets new @indent value.

  • -
  • +
  • - +

    Matches and consumes non-meaningful whitespace. Tag the previous token as being “spaced”, because there are some cases where it makes a difference.

    @@ -903,11 +1031,11 @@ as being “spaced”, because there are some cases where it makes a difference.
  • -
  • +
  • - +

    Generate a newline token. Consecutive newlines get merged together.

    @@ -921,11 +1049,11 @@ as being “spaced”, because there are some cases where it makes a difference.
  • -
  • +
  • - +

    Use a \ at a line-ending to suppress the newline. The slash is removed here once its job is done.

    @@ -933,24 +1061,59 @@ The slash is removed here once its job is done.

      suppressNewlines: ->
    -    @tokens.pop() if @value() is '\\'
    +    prev = @prev()
    +    if prev[1] is '\\'
    +      if prev.comments and @tokens.length > 1
    + +
  • + + +
  • +
    + +
    + +
    +

    @tokens.length should be at least 2 (some code, then \). +If something puts a \ after nothing, they deserve to lose any +comments that trail it.

    + +
    + +
            attachCommentsToNode prev.comments, @tokens[@tokens.length - 2]
    +      @tokens.pop()
         this
  • -
  • +
  • - +

    CSX is like JSX but for CoffeeScript.

      csxToken: ->
    -    firstChar = @chunk[0]
    +    firstChar = @chunk[0]
    + +
  • + + +
  • +
    + +
    + +
    +

    Check the previous token to detect if attribute is spread.

    + +
    + +
        prevChar = if @tokens.length > 0 then @tokens[@tokens.length - 1][0] else ''
         if firstChar is '<'
           match = CSX_IDENTIFIER.exec @chunk[1...]
           return 0 unless match and (
    @@ -959,11 +1122,11 @@ The slash is removed here once its job is done.

  • -
  • +
  • - +

    Not the right hand side of an unspaced comparison (i.e. a<b).

    @@ -976,19 +1139,24 @@ The slash is removed here once its job is done.

    [input, id, colon] = match origin = @token 'CSX_TAG', id, 1, id.length @token 'CALL_START', '(' - @token '{', '{' + @token '[', '[' @ends.push tag: '/>', origin: origin, name: id @csxDepth++ return id.length + 1 else if csxTag = @atCSXTag() if @chunk[...2] is '/>' @pair '/>' - @token '}', '}', 0, 2 + @token ']', ']', 0, 2 @token 'CALL_END', ')', 0, 2 @csxDepth-- return 2 else if firstChar is '{' - token = @token '(', '(' + if prevChar is ':' + token = @token '(', '(' + @csxObjAttribute[@csxDepth] = no + else + token = @token '{', '{' + @csxObjAttribute[@csxDepth] = yes @ends.push {tag: '}', origin: token} return 1 else if firstChar is '>'
    @@ -996,18 +1164,18 @@ The slash is removed here once its job is done.

  • -
  • +
  • - +

    Ignore terminators inside a tag.

            @pair '/>' # As if the current tag was self-closing.
    -        origin = @token '}', '}'
    +        origin = @token ']', ']'
             @token ',', ','
             {tokens, index: end} =
               @matchWithInterpolations INSIDE_CSX, '>', '</', CSX_INTERPOLATION
    @@ -1024,11 +1192,11 @@ The slash is removed here once its job is done.

  • -
  • +
  • - +

    +1 for the closing >.

    @@ -1042,7 +1210,11 @@ The slash is removed here once its job is done.

    else if @atCSXTag 1 if firstChar is '}' @pair firstChar - @token ')', ')' + if @csxObjAttribute[@csxDepth] + @token '}', '}' + @csxObjAttribute[@csxDepth] = no + else + @token ')', ')' @token ',', ',' return 1 else @@ -1060,11 +1232,11 @@ The slash is removed here once its job is done.

  • -
  • +
  • - +

    We treat all other single characters as a token. E.g.: ( ) , . ! Multi-character operators are also literal tokens, so that Jison can assign @@ -1135,11 +1307,11 @@ parentheses that indicate a method call from regular parentheses, and so on.

  • -
  • +
  • - +

    Token Manipulators

    @@ -1148,11 +1320,11 @@ parentheses that indicate a method call from regular parentheses, and so on.

  • -
  • +
  • - +
    @@ -1160,11 +1332,11 @@ parentheses that indicate a method call from regular parentheses, and so on.

  • -
  • +
  • - +

    A source of ambiguity in our grammar used to be parameter lists in function definitions versus argument lists in function calls. Walk backwards, tagging @@ -1196,11 +1368,11 @@ parameters specially in order to make things easier for the parser.

  • -
  • +
  • - +

    Close up all remaining open blocks at the end of the file.

    @@ -1212,11 +1384,11 @@ parameters specially in order to make things easier for the parser.

  • -
  • +
  • - +

    Match the contents of a delimited token and expand variables and expressions inside it using Ruby-like notation for substitution of arbitrary @@ -1254,11 +1426,11 @@ ad infinitum.

  • -
  • +
  • - +

    Push a fake 'NEOSTRING' token, which will get turned into a real string later.

    @@ -1275,11 +1447,11 @@ ad infinitum.

  • -
  • +
  • - +

    To remove the # in #{.

    @@ -1294,11 +1466,11 @@ ad infinitum.

  • -
  • +
  • - +

    Account for the # in #{

    @@ -1312,11 +1484,11 @@ ad infinitum.

  • -
  • +
  • - +

    Turn the leading and trailing { and } into parentheses. Unnecessary parentheses will be removed later.

    @@ -1331,11 +1503,11 @@ parentheses will be removed later.

  • -
  • +
  • - +

    Remove leading 'TERMINATOR' (if any).

    @@ -1348,11 +1520,11 @@ parentheses will be removed later.

  • -
  • +
  • - +

    We are not using { and }, so wrap the interpolated tokens instead.

    @@ -1365,11 +1537,11 @@ parentheses will be removed later.

  • -
  • +
  • - +

    Push a fake 'TOKENS' token, which will get turned into real tokens later.

    @@ -1397,11 +1569,11 @@ parentheses will be removed later.

  • -
  • +
  • - +

    Merge the array tokens of the fake token types 'TOKENS' and 'NEOSTRING' (as returned by matchWithInterpolations) into the token stream. The value @@ -1423,11 +1595,11 @@ of 'NEOSTRING's are converted using fn and tur

  • -
  • +
  • - +

    Optimize out empty interpolations (an empty pair of parentheses).

    @@ -1438,11 +1610,11 @@ of 'NEOSTRING's are converted using fn and tur
  • -
  • +
  • - +

    Push all the tokens in the fake 'TOKENS' token. These already have sane location data.

    @@ -1456,11 +1628,11 @@ sane location data.

  • -
  • +
  • - +

    Convert 'NEOSTRING' into 'STRING'.

    @@ -1471,11 +1643,11 @@ sane location data.

  • -
  • +
  • - +

    Optimize out empty strings. We ensure that the tokens stream always starts with a string token, though, to make sure that the result @@ -1492,11 +1664,11 @@ really is a string.

  • -
  • +
  • - +

    However, there is one case where we can optimize away a starting empty string.

    @@ -1514,11 +1686,11 @@ empty string.

  • -
  • +
  • - +

    Create a 0-length “+” token.

    @@ -1540,6 +1712,7 @@ empty string.

    last_line: lastToken[2].last_line last_column: lastToken[2].last_column ] + lparen[2] = lparen.origin[2] rparen = @token 'STRING_END', ')' rparen[2] = first_line: lastToken[2].last_line @@ -1550,11 +1723,11 @@ empty string.

  • -
  • +
  • - +

    Pairs up a closing token, ensuring that all listed pairs of tokens are correctly balanced throughout the course of the token stream.

    @@ -1569,11 +1742,11 @@ correctly balanced throughout the course of the token stream.

  • -
  • +
  • - +

    Auto-close INDENT to support syntax like this:

    el.click((event) ->
    @@ -1589,11 +1762,11 @@ correctly balanced throughout the course of the token stream.

  • -
  • +
  • - +

    Helpers

    @@ -1602,11 +1775,11 @@ correctly balanced throughout the course of the token stream.

  • -
  • +
  • - +
    @@ -1614,11 +1787,11 @@ correctly balanced throughout the course of the token stream.

  • -
  • +
  • - +

    Returns the line and column number from an offset into the current chunk.

    offset is a number of characters into @chunk.

    @@ -1648,11 +1821,11 @@ correctly balanced throughout the course of the token stream.

  • -
  • +
  • - +

    Same as token, except this just returns the token without adding it to the results.

    @@ -1667,11 +1840,11 @@ to the results.

  • -
  • +
  • - +

    Use length - 1 for the final offset - we’re supplying the last_line and the last_column, so if last_column == first_column, then we’re looking at a character of length 1.

    @@ -1689,11 +1862,11 @@ so if last_column == first_column, then we’re looking at a character of length
  • -
  • +
  • - +

    Add a token to the results. offset is the offset into the current @chunk where the token starts. @@ -1712,11 +1885,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Peek at the last tag in the token stream.

    @@ -1729,11 +1902,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Peek at the last value in the token stream.

    @@ -1746,11 +1919,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Get the previous token in the token stream.

    @@ -1762,11 +1935,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Are we in the midst of an unfinished expression?

    @@ -1774,9 +1947,7 @@ not specified, the length of value will be used.

      unfinished: ->
         LINE_CONTINUER.test(@chunk) or
    -    @tag() in ['\\', '.', '?.', '?::', 'UNARY', 'MATH', 'UNARY_MATH', '+', '-',
    -               '**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||',
    -               'BIN?', 'THROW', 'EXTENDS', 'DEFAULT']
    +    @tag() in UNFINISHED
     
       formatString: (str, options) ->
         @replaceUnicodeCodePointEscapes str.replace(STRING_OMIT, '$1'), options
    @@ -1796,11 +1967,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    surrogate pair

    @@ -1813,11 +1984,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Replace \u{...} with \uxxxx[\uxxxx] in regexes without u flag

    @@ -1840,11 +2011,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Validates escapes in strings and regexes.

    @@ -1872,11 +2043,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Constructs a string or regex by escaping certain characters.

    @@ -1896,11 +2067,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Ignore escaped backslashes.

    @@ -1919,11 +2090,11 @@ not specified, the length of value will be used.

  • -
  • +
  • - +

    Throws an error at either a given offset from the current chunk or at the location of a token (token[2]).

    @@ -1942,11 +2113,11 @@ location of a token (token[2]).

  • -
  • +
  • - +

    Helper functions

    @@ -1955,11 +2126,11 @@ location of a token (token[2]).

  • -
  • +
  • - +
    @@ -1980,11 +2151,11 @@ exports.isUnassignable = isUnassignable
  • -
  • +
  • - +

    from isn’t a CoffeeScript keyword, but it behaves like one in import and export statements (handled above) and in the declaration line of a for @@ -1999,11 +2170,11 @@ loop. Try to detect when from is a variable identifier and when it

  • -
  • +
  • - +

    for i from from, for from from iterable

    @@ -2016,11 +2187,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    for i from iterable

    @@ -2031,11 +2202,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    for from…

    @@ -2047,11 +2218,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    for {from}…, for [from]…, for {a, from}…, for {a: from}…

    @@ -2065,11 +2236,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    Constants

    @@ -2078,11 +2249,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +
    @@ -2090,11 +2261,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    Keywords that CoffeeScript shares in common with JavaScript.

    @@ -2112,11 +2283,11 @@ loop. Try to detect when from is a variable identifier and when it
  • -
  • +
  • - +

    CoffeeScript-only keywords.

    @@ -2144,11 +2315,11 @@ COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat COFFEE_ALIASES
  • -
  • +
  • - +

    The list of keywords that are reserved by JavaScript, but not used, or are used by CoffeeScript internally. We throw an error when these are encountered, @@ -2167,11 +2338,11 @@ STRICT_PROSCRIBED = ['arguments', +

  • - +

    The superset of both JavaScript keywords and reserved words, none of which may be used as identifiers or properties.

    @@ -2183,11 +2354,11 @@ be used as identifiers or properties.

  • -
  • +
  • - +

    The character code of the nasty Microsoft madness otherwise known as the BOM.

    @@ -2198,11 +2369,11 @@ be used as identifiers or properties.

  • -
  • +
  • - +

    Token matching regexes.

    @@ -2244,7 +2415,7 @@ OPERATOR = /// ^ ( WHITESPACE = /^[^\n\S]+/ -COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/ +COMMENT = /^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/ CODE = /^[-=]>/ @@ -2256,11 +2427,11 @@ HERE_JSTOKEN = ///^ ``` ((?: [^`\\] | \\[\s\S] | `
  • -
  • +
  • - +

    String-matching-regexes.

    @@ -2294,11 +2465,11 @@ HEREDOC_INDENT = /\n+([^\n\S]*)(?=\S)/g -
  • +
  • - +

    Regex-matching-regexes.

    @@ -2332,11 +2503,11 @@ POSSIBLY_DIVISION = /// ^ /=?\s /// -
  • +
  • - +

    Other regexes.

    @@ -2379,11 +2550,11 @@ TRAILING_SPACES = /\s+$/
  • -
  • +
  • - +

    Compound assignment tokens.

    @@ -2397,11 +2568,11 @@ TRAILING_SPACES = /\s+$/
  • -
  • +
  • - +

    Unary tokens.

    @@ -2414,11 +2585,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Bit-shifting tokens.

    @@ -2429,11 +2600,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Comparison tokens.

    @@ -2444,11 +2615,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Mathematical tokens.

    @@ -2459,11 +2630,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Relational tokens that are negatable with not prefix.

    @@ -2474,11 +2645,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Boolean tokens.

    @@ -2489,11 +2660,11 @@ UNARY_MATH = ['!', '~
  • -
  • +
  • - +

    Tokens which could legitimately be invoked or indexed. An opening parentheses or bracket following these tokens will be recorded as the start @@ -2510,11 +2681,11 @@ INDEXABLE = CALLABLE.concat [

  • -
  • +
  • - +

    Tokens which can be the left-hand side of a less-than comparison, i.e. a<b.

    @@ -2525,11 +2696,11 @@ INDEXABLE = CALLABLE.concat [
  • -
  • +
  • - +

    Tokens which a regular expression will never immediately follow (except spaced CALLABLEs in some cases), but which a division operator can.

    @@ -2542,11 +2713,11 @@ CALLABLEs in some cases), but which a division operator can.

  • -
  • +
  • - +

    Tokens that, when immediately preceding a WHEN, indicate that the WHEN occurs at the start of a line. We disambiguate these from trailing whens to @@ -2559,11 +2730,11 @@ avoid an ambiguity in the grammar.

  • -
  • +
  • - +

    Additional indent in front of these is ignored.

    @@ -2573,6 +2744,23 @@ avoid an ambiguity in the grammar.

  • + +
  • +
    + +
    + +
    +

    Tokens that, when appearing at the end of a line, suppress a following TERMINATOR/INDENT token

    + +
    + +
    UNFINISHED = ['\\', '.', '?.', '?::', 'UNARY', 'MATH', 'UNARY_MATH', '+', '-',
    +           '**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||',
    +           'BIN?', 'EXTENDS', 'DEFAULT']
    + +
  • + diff --git a/docs/v2/annotated-source/nodes.html b/docs/v2/annotated-source/nodes.html index 83e2fe2b..41d7f4fb 100644 --- a/docs/v2/annotated-source/nodes.html +++ b/docs/v2/annotated-source/nodes.html @@ -142,7 +142,8 @@ Error.stackTraceLimit = Infinity
    {compact, flatten, extend, merge, del, starts, ends, some,
    -addLocationDataFn, locationDataToString, throwSyntaxError} = require './helpers'
    +addDataToNode, attachCommentsToNode, locationDataToString, +throwSyntaxError} = require './helpers' @@ -153,12 +154,12 @@ addLocationDataFn, locationDataToString, throwSyntaxError} = -

    Functions required by parser

    +

    Functions required by parser.

    exports.extend = extend
    -exports.addLocationDataFn = addLocationDataFn
    +exports.addDataToNode = addDataToNode @@ -210,11 +211,11 @@ all the CodeFragments’ code snippets, in order.

    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:   ->
    -    "#{@code}#{if @locationData then ": " + locationDataToString(@locationData) else ''}"
    + toString: -> @@ -225,6 +226,21 @@ all the CodeFragments’ code snippets, in order.

    +

    This is only intended for debugging.

    + + + +
        "#{@code}#{if @locationData then ": " + locationDataToString(@locationData) else ''}"
    + + + + +
  • +
    + +
    + +

    Convert an array of CodeFragments into a string.

    @@ -235,11 +251,11 @@ all the CodeFragments’ code snippets, in order.

  • -
  • +
  • - +

    Base

    @@ -248,11 +264,11 @@ all the CodeFragments’ code snippets, in order.

  • -
  • +
  • - +

    The Base is the abstract base class for all nodes in the syntax tree. Each subclass implements the compileNode method, which performs the @@ -274,11 +290,51 @@ scope, and indentation level.

  • -
  • +
  • - + +
    +

    Occasionally a node is compiled multiple times, for example to get the name +of a variable to add to scope tracking. When we know that a “premature” +compilation won’t result in comments being output, set those comments aside +so that they’re preserved for a later compile call that will result in +the comments being included in the output.

    + +
    + +
      compileWithoutComments: (o, lvl, method = 'compile') ->
    +    if @comments
    +      @ignoreTheseCommentsTemporarily = @comments
    +      delete @comments
    +    unwrapped = @unwrapAll()
    +    if unwrapped.comments
    +      unwrapped.ignoreTheseCommentsTemporarily = unwrapped.comments
    +      delete unwrapped.comments
    +
    +    fragments = @[method] o, lvl
    +
    +    if @ignoreTheseCommentsTemporarily
    +      @comments = @ignoreTheseCommentsTemporarily
    +      delete @ignoreTheseCommentsTemporarily
    +    if unwrapped.ignoreTheseCommentsTemporarily
    +      unwrapped.comments = unwrapped.ignoreTheseCommentsTemporarily
    +      delete unwrapped.ignoreTheseCommentsTemporarily
    +
    +    fragments
    +
    +  compileNodeWithoutComments: (o, lvl) ->
    +    @compileWithoutComments o, lvl, 'compileNode'
    + +
  • + + +
  • +
    + +
    +

    Common logic for determining whether to wrap this node in a closure before compiling it, or to compile directly. We need to wrap if this node is a @@ -294,19 +350,22 @@ return results).

    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
    + node.compileClosure o + @compileCommentFragments o, node, fragments + fragments
  • -
  • +
  • - +

    Statements converted into expressions via closure-wrapping share a scope object with their parent closure, to preserve the expected lexical scope.

    @@ -338,16 +397,116 @@ object with their parent closure, to preserve the expected lexical scope.

    when func.isAsync or func.base?.isAsync parts.unshift @makeCode "(await " parts.push @makeCode ")" - parts
    + parts + + compileCommentFragments: (o, node, fragments) -> + return fragments unless node.comments
  • -
  • +
  • - + +
    +

    This is where comments, that are attached to nodes as a comments +property, become CodeFragments. “Inline block comments,” e.g. +/* */-delimited comments that are interspersed within code on a line, +are added to the current fragments stream. All other fragments are +attached as properties to the nearest preceding or following fragment, +to remain stowaways until they get properly output in compileComments +later on.

    + +
    + +
        unshiftCommentFragment = (commentFragment) ->
    +      if commentFragment.unshift
    + +
  • + + +
  • +
    + +
    + +
    +

    Find the first non-comment fragment and insert commentFragment +before it.

    + +
    + +
            unshiftAfterComments fragments, commentFragment
    +      else
    +        if fragments.length isnt 0
    +          precedingFragment = fragments[fragments.length - 1]
    +          if commentFragment.newLine and precedingFragment.code isnt '' and
    +             not /\n\s*$/.test precedingFragment.code
    +            commentFragment.code = "\n#{commentFragment.code}"
    +        fragments.push commentFragment
    +
    +    for comment in node.comments when comment not in @compiledComments
    +      @compiledComments.push comment # Don’t output this comment twice.
    + +
  • + + +
  • +
    + +
    + +
    +

    For block/here comments, denoted by ###, that are inline comments +like 1 + ### comment ### 2, create fragments and insert them into +the fragments array. +Otherwise attach comment fragments to their closest fragment for now, +so they can be inserted into the output later after all the newlines +have been added.

    + +
    + +
          if comment.here # Block comment, delimited by `###`.
    +        commentFragment = new HereComment(comment).compileNode o
    +      else # Line comment, delimited by `#`.
    +        commentFragment = new LineComment(comment).compileNode o
    +      if (commentFragment.isHereComment and not commentFragment.newLine) or
    +         node.includeCommentFragments()
    + +
  • + + +
  • +
    + +
    + +
    +

    Inline block comments, like 1 + /* comment */ 2, or a node whose +compileToFragments method has logic for outputting comments.

    + +
    + +
            unshiftCommentFragment commentFragment
    +      else
    +        if commentFragment.unshift
    +          fragments[0].precedingComments ?= []
    +          fragments[0].precedingComments.push commentFragment
    +        else
    +          fragments[fragments.length - 1].followingComments ?= []
    +          fragments[fragments.length - 1].followingComments.push commentFragment
    +    fragments
    + +
  • + + +
  • +
    + +
    +

    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, @@ -371,11 +530,11 @@ the two values are raw nodes which have not been compiled.

  • -
  • +
  • - +

    Occasionally it may be useful to make an expression behave as if it was ‘hoisted’, whereby the result of the expression is available before its location in the source, but the expression’s @@ -408,11 +567,11 @@ call.

  • -
  • +
  • - +

    Construct a node that returns the current node’s result. Note that this is overridden for smarter behavior for @@ -430,11 +589,11 @@ many statement nodes (e.g. If, For)…

  • -
  • +
  • - +

    Does this node, or any of its children, contain a node of a certain kind? Recursively traverses down the children nodes and returns the first one @@ -454,29 +613,27 @@ scope boundaries.

  • -
  • +
  • - +
    -

    Pull out the last non-comment node of a node list.

    +

    Pull out the last node of a node list.

    -
      lastNonComment: (list) ->
    -    i = list.length
    -    return list[i] while i-- when list[i] not instanceof Comment
    -    null
    +
      lastNode: (list) ->
    +    if list.length is 0 then null else list[list.length - 1]
  • -
  • +
  • - +

    toString representation of the node, for inspecting the parse tree. This is what coffee --nodes prints out.

    @@ -492,11 +649,11 @@ This is what coffee --nodes prints out.

  • -
  • +
  • - +

    Passes each child to a function, breaking when the function returns false.

    @@ -517,11 +674,11 @@ This is what coffee --nodes prints out.

  • -
  • +
  • - +

    replaceInContext will traverse children looking for a node for which match returns true. Once found, the matching node will be replaced by the result of calling replacement.

    @@ -555,11 +712,11 @@ true. Once found, the matching node will be replaced by the result of calling -
  • +
  • - +

    Default implementations of the common node properties and methods. Nodes will override these with custom logic, if needed.

    @@ -569,11 +726,11 @@ will override these with custom logic, if needed.

  • -
  • +
  • - +

    children are the properties to recurse into when tree walking. The children list is the structure of the AST. The parent pointer, and @@ -586,11 +743,11 @@ the pointer to the children are how you can traverse the tree.

  • -
  • +
  • - +

    isStatement has to do with “everything is an expression”. A few things can’t be expressions, such as break. Things that isStatement returns @@ -605,11 +762,43 @@ in expression position.

  • -
  • +
  • - + +
    +

    Track comments that have been compiled into fragments, to avoid outputting +them twice.

    + +
    + +
      compiledComments: []
    + +
  • + + +
  • +
    + +
    + +
    +

    includeCommentFragments lets compileCommentFragments know whether this node +has special awareness of how to handle comments within its output.

    + +
    + +
      includeCommentFragments: NO
    + +
  • + + +
  • +
    + +
    +

    jumps tells you if an expression, or an internal part of an expression has a flow control construct (like break, or continue, or return, @@ -624,11 +813,11 @@ we have to disallow them.

  • -
  • +
  • - +

    If node.shouldCache() is false, it is safe to use node more than once. Otherwise you need to store the value of node in a variable and output @@ -654,11 +843,11 @@ for brevity.

  • -
  • +
  • - +

    Is this node used to assign a certain variable?

    @@ -669,11 +858,11 @@ for brevity.

  • -
  • +
  • - +

    For this node and all descendents, set the location data to locationData if the location data is not already set.

    @@ -681,7 +870,8 @@ if the location data is not already set.

      updateLocationDataIfMissing: (locationData) ->
    -    return this if @locationData
    +    return this if @locationData and not @forceUpdateLocation
    +    delete @forceUpdateLocation
         @locationData = locationData
     
         @eachChild (child) ->
    @@ -690,11 +880,11 @@ if the location data is not already set.

  • -
  • +
  • - +

    Throw a SyntaxError associated with this node’s location.

    @@ -715,21 +905,21 @@ if the location data is not already set.

  • -
  • +
  • - +

    fragmentsList is an array of arrays of fragments. Each array in fragmentsList will be -concatonated together, with joinStr added in between each, to produce a final flat array +concatenated together, with joinStr added in between each, to produce a final flat array of fragments.

      joinFragmentArrays: (fragmentsList, joinStr) ->
         answer = []
    -    for fragments,i in fragmentsList
    +    for fragments, i in fragmentsList
           if i then answer.push @makeCode joinStr
           answer = answer.concat fragments
         answer
    @@ -737,11 +927,11 @@ of fragments.

  • -
  • +
  • - +

    HoistTarget

    @@ -750,11 +940,11 @@ of fragments.

  • -
  • +
  • - +

    A HoistTargetNode represents the output location in the node tree for a hoisted node. See Base#hoist.

    @@ -766,11 +956,11 @@ See Base#hoist.

  • -
  • +
  • - +

    Expands hoisted fragments in the given array

    @@ -787,13 +977,13 @@ See Base#hoist.

  • -
  • +
  • - +
    -

    Holds presentational options to apply when the source node is compiled

    +

    Holds presentational options to apply when the source node is compiled.

    @@ -802,13 +992,13 @@ See Base#hoist.

  • -
  • +
  • - +
    -

    Placeholder fragments to be replaced by the source node’s compilation

    +

    Placeholder fragments to be replaced by the source node’s compilation.

    @@ -820,11 +1010,11 @@ See Base#hoist.

  • -
  • +
  • - +

    Update the target fragments with the result of compiling the source. Calls the given compile function with the node and options (overriden with the target @@ -838,11 +1028,11 @@ presentational options).

  • -
  • +
  • - +

    Copies the target indent and level, and returns the placeholder fragments

    @@ -862,11 +1052,11 @@ presentational options).

  • -
  • +
  • - +

    Block

    @@ -875,11 +1065,11 @@ presentational options).

  • -
  • +
  • - +

    The block is the list of expressions that forms the body of an indented block of code – the implementation of a function, a clause in an @@ -898,11 +1088,11 @@ indented block of code – the implementation of a function, a clause in an

  • -
  • +
  • - +

    Tack an expression on to the end of this expression list.

    @@ -915,11 +1105,11 @@ indented block of code – the implementation of a function, a clause in an
  • -
  • +
  • - +

    Remove and return the last expression of this expression list.

    @@ -931,11 +1121,11 @@ indented block of code – the implementation of a function, a clause in an
  • -
  • +
  • - +

    Add an expression at the beginning of this expression list.

    @@ -948,11 +1138,11 @@ indented block of code – the implementation of a function, a clause in an
  • -
  • +
  • - +

    If this Block consists of just a single node, unwrap it by pulling it back out.

    @@ -965,11 +1155,11 @@ it back out.

  • -
  • +
  • - +

    Is this an empty block of code?

    @@ -990,11 +1180,11 @@ it back out.

  • -
  • +
  • - +

    A Block node does not return its entire body, rather it ensures that the final expression is returned.

    @@ -1005,20 +1195,19 @@ ensures that the final expression is returned.

    len = @expressions.length while len-- expr = @expressions[len] - if expr not instanceof Comment - @expressions[len] = expr.makeReturn res - @expressions.splice(len, 1) if expr instanceof Return and not expr.expression - break + @expressions[len] = expr.makeReturn res + @expressions.splice(len, 1) if expr instanceof Return and not expr.expression + break this
  • -
  • +
  • - +

    A Block is the only node that can serve as the root.

    @@ -1030,15 +1219,15 @@ ensures that the final expression is returned.

  • -
  • +
  • - +
    -

    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.

    @@ -1055,15 +1244,15 @@ statement, ask the statement to do so.

  • -
  • +
  • - +
    -

    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.

    @@ -1073,50 +1262,52 @@ our own

  • -
  • +
  • - +
    -

    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
    +        node.front = yes
             fragments = node.compileToFragments o
             unless node.isStatement o
    -          fragments.unshift @makeCode "#{@tab}"
    -          fragments.push @makeCode ';'
    +          fragments = indentInitial fragments, @
    +          [..., lastFragment] = fragments
    +          unless lastFragment.code is '' or lastFragment.isComment
    +            fragments.push @makeCode ';'
             compiledNodes.push fragments
           else
             compiledNodes.push node.compileToFragments o, LEVEL_LIST
         if top
           if @spaced
    -        return [].concat @joinFragmentArrays(compiledNodes, '\n\n'), @makeCode("\n")
    +        return [].concat @joinFragmentArrays(compiledNodes, '\n\n'), @makeCode('\n')
           else
             return @joinFragmentArrays(compiledNodes, '\n')
         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 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.

    @@ -1129,11 +1320,11 @@ clean up obvious double-parentheses.

  • -
  • +
  • - +

    Mark given local variables in the root scope as parameters so they don’t end up being declared on this block.

    @@ -1141,30 +1332,20 @@ end up being declared on this block.

        o.scope.parameter name for name in o.locals or []
    -    prelude   = []
    -    unless o.bare
    -      preludeExps = for exp, i in @expressions
    -        break unless exp.unwrap() instanceof Comment
    -        exp
    -      rest = @expressions[preludeExps.length...]
    -      @expressions = preludeExps
    -      if preludeExps.length
    -        prelude = @compileNode merge(o, indent: '')
    -        prelude.push @makeCode "\n"
    -      @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")
    + [].concat @makeCode("(function() {\n"), fragments, @makeCode("\n}).call(this);\n")
  • -
  • +
  • - +

    Compile the expressions body for the contents of a function, with declarations of all inner variables pushed up to the top.

    @@ -1176,7 +1357,7 @@ declarations of all inner variables pushed up to the top.

    post = [] for exp, i in @expressions exp = exp.unwrap() - break unless exp instanceof Comment or exp instanceof Literal + break unless exp instanceof Literal o = merge(o, level: LEVEL_TOP) if i rest = @expressions.splice i, 9e9 @@ -1199,16 +1380,258 @@ declarations of all inner variables pushed up to the top.

    fragments.push @makeCode ";\n#{if @spaced then '\n' else ''}" else if fragments.length and post.length fragments.push @makeCode "\n" - fragments.concat post
    + 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
    + +
  • + + +
  • +
    + +
    + +
    +

    Determine the indentation level of the fragment that we are about +to insert comments before, and use that indentation level for our +inserted comments. At this point, the fragments’ code property +is the generated output JavaScript, and CoffeeScript always +generates output indented by two spaces; so all we need to do is +search for a code property that begins with at least two spaces.

    + +
    + +
            fragmentIndent = ''
    +        for pastFragment in fragments[0...(fragmentIndex + 1)] by -1
    +          indent = /^ {2,}/m.exec pastFragment.code
    +          if indent
    +            fragmentIndent = indent[0]
    +            break
    +          else if '\n' in pastFragment.code
    +            break
    +        code = "\n#{fragmentIndent}" + (
    +            for commentFragment in fragment.precedingComments
    +              if commentFragment.isHereComment and commentFragment.multiline
    +                multident commentFragment.code, fragmentIndent, no
    +              else
    +                commentFragment.code
    +          ).join("\n#{fragmentIndent}").replace /^(\s*)$/gm, ''
    +        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.isStringWithInterpolations 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 +confusing if it were abstracted into a function that both blocks share.

    + +
    + +
          if fragment.followingComments
    + +
  • + + +
  • +
    + +
    + +
    +

    Does the first trailing comment follow at the end of a line of code, +like ; // Comment, or does it start a new line after a line of code?

    + +
    + +
            trail = fragment.followingComments[0].trail
    +        fragmentIndent = ''
    + +
  • + + +
  • +
    + +
    + +
    +

    Find the indent of the next line of code, if we have any non-trailing +comments to output. We need to first find the next newline, as these +comments will be output after that; and then the indent of the line +that follows the next newline.

    + +
    + +
            unless trail and fragment.followingComments.length is 1
    +          onNextLine = no
    +          for upcomingFragment in fragments[fragmentIndex...]
    +            unless onNextLine
    +              if '\n' in upcomingFragment.code
    +                onNextLine = yes
    +              else
    +                continue
    +            else
    +              indent = /^ {2,}/m.exec upcomingFragment.code
    +              if indent
    +                fragmentIndent = indent[0]
    +                break
    +              else if '\n' in upcomingFragment.code
    +                break
    + +
  • + + +
  • +
    + +
    + +
    +

    Is this comment following the indent inserted by bare mode? +If so, there’s no need to indent this further.

    + +
    + +
            code = if fragmentIndex is 1 and /^\s+$/.test fragments[0].code
    +          ''
    +        else if trail
    +          ' '
    +        else
    +          "\n#{fragmentIndent}"
    + +
  • + + +
  • +
    + +
    + +
    +

    Assemble properly indented comments.

    + +
    + +
            code += (
    +            for commentFragment in fragment.followingComments
    +              if commentFragment.isHereComment and commentFragment.multiline
    +                multident commentFragment.code, fragmentIndent, no
    +              else
    +                commentFragment.code
    +          ).join("\n#{fragmentIndent}").replace /^(\s*)$/gm, ''
    +        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.isStringWithInterpolations and upcomingFragment.code is '}'
    +              code = "#{code}\n"
    +              newLineIndex = 0
    +            else
    +              continue
    +          delete fragment.followingComments
    + +
  • + + +
  • +
    + +
    + +
    +

    Avoid inserting extra blank lines.

    + +
    + +
              code = code.replace /^\n/, '' if upcomingFragment.code is '\n'
    +          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.

    @@ -1222,11 +1645,11 @@ to be one.

  • -
  • +
  • - +

    Literal

    @@ -1235,11 +1658,11 @@ to be one.

  • -
  • +
  • - +

    Literal is a base class for static values that can be passed through directly into JavaScript without translation, such as: strings, numbers, @@ -1259,8 +1682,22 @@ directly into JavaScript without translation, such as: strings, numbers, compileNode: (o) -> [@makeCode @value] - toString: -> - " #{if @isStatement() then super() else @constructor.name}: #{@value}" + toString: ->

    + +
  • + + +
  • +
    + +
    + +
    +

    This is only intended for debugging.

    + +
    + +
        " #{if @isStatement() then super() else @constructor.name}: #{@value}"
     
     exports.NumberLiteral = class NumberLiteral extends Literal
     
    @@ -1339,11 +1776,11 @@ exports.BooleanLiteral = cla
             
  • -
  • +
  • - +

    Return

    @@ -1352,11 +1789,11 @@ exports.BooleanLiteral = cla
  • -
  • +
  • - +

    A return is a pureStatement—wrapping it in a closure wouldn’t make sense.

    @@ -1382,30 +1819,55 @@ exports.BooleanLiteral = cla
  • -
  • +
  • - +
    -

    TODO: If we call expression.compile() here twice, we’ll sometimes get back different results!

    +

    TODO: If we call expression.compile() here twice, we’ll sometimes +get back different results!

    -
        answer.push @makeCode @tab + "return#{if @expression then " " else ""}"
    -    if @expression
    -      answer = answer.concat @expression.compileToFragments o, LEVEL_PAREN
    -    answer.push @makeCode ";"
    -    return answer
    +
        if @expression
    +      answer = @expression.compileToFragments o, LEVEL_PAREN
    +      unshiftAfterComments answer, @makeCode "#{@tab}return "
  • -
  • +
  • - + +
    +

    Since the return got indented by @tab, preceding comments that are +multiline need to be indented.

    + +
    + +
          for fragment in answer
    +        if fragment.isHereComment and '\n' in fragment.code
    +          fragment.code = multident fragment.code, @tab
    +        else if fragment.isLineComment
    +          fragment.code = "#{@tab}#{fragment.code}"
    +        else
    +          break
    +    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.

    @@ -1418,7 +1880,6 @@ into a generator.

    @error 'yield can only occur inside functions' super o - exports.AwaitReturn = class AwaitReturn extends Return compileNode: (o) -> unless o.scope.parent? @@ -1428,11 +1889,11 @@ exports.AwaitReturn = class<
  • -
  • +
  • - +

    Value

    @@ -1441,11 +1902,11 @@ exports.AwaitReturn = class<
  • -
  • +
  • - +

    A value, variable or literal or parenthesized, indexed or dotted into, or vanilla.

    @@ -1455,25 +1916,39 @@ or vanilla.

    exports.Value = class Value extends Base
       constructor: (base, props, tag, isDefaultValue = no) ->
         super()
    -
         return base if not props and base instanceof Value
    -
         @base           = base
         @properties     = props or []
         @[tag]          = yes if tag
    -    @isDefaultValue = isDefaultValue
    -    return this
    +    @isDefaultValue = isDefaultValue
    + +
  • + + +
  • +
    + +
    + +
    +

    If this is a @foo = assignment, if there are comments on @ move them +to be on foo.

    + +
    + +
        if @base?.comments and @base instanceof ThisLiteral and @properties[0]?.name?
    +      moveComments @base, @properties[0].name
     
       children: ['base', 'properties']
  • -
  • +
  • - +

    Add a property (or properties ) Access to the list.

    @@ -1481,10 +1956,11 @@ or vanilla.

      add: (props) ->
         @properties = @properties.concat props
    +    @forceUpdateLocation = yes
         this
     
       hasProperties: ->
    -    !!@properties.length
    +    @properties.length isnt 0
     
       bareLiteral: (type) ->
         not @properties.length and @base instanceof type
    @@ -1492,11 +1968,11 @@ or vanilla.

  • -
  • +
  • - +

    Some boolean checks for the benefit of other nodes.

    @@ -1540,11 +2016,11 @@ or vanilla.

  • -
  • +
  • - +

    The value can be unwrapped as its inner node, if there are no attached properties.

    @@ -1557,11 +2033,11 @@ properties.

  • -
  • +
  • - +

    A reference has base part (this value) and name part. We cache them separately for compiling complex expressions. @@ -1587,11 +2063,11 @@ We cache them separately for compiling complex expressions.

  • -
  • +
  • - +

    We compile a value to JavaScript by compiling and joining each property. Things get much more interesting if the chain of properties has soak @@ -1613,11 +2089,11 @@ evaluate anything twice when building the soak chain.

  • -
  • +
  • - +

    Unfold a soak into an If: a?.b -> a.b if a?

    @@ -1625,7 +2101,8 @@ evaluate anything twice when building the soak chain.

      unfoldSoak: (o) ->
         @unfoldedSoak ?= do =>
    -      if ifn = @base.unfoldSoak o
    +      ifn = @base.unfoldSoak o
    +      if ifn
             ifn.body.properties.push @properties...
             return ifn
           for prop, i in @properties when prop.soak
    @@ -1650,51 +2127,141 @@ evaluate anything twice when building the soak chain.

  • -
  • +
  • - +
    -

    Comment

    +

    HereComment

  • -
  • +
  • - +
    -

    CoffeeScript passes through block comments as JavaScript block comments -at the same position.

    +

    Comment delimited by ### (becoming /* */).

    -
    exports.Comment = class Comment extends Base
    -  constructor: (@comment) ->
    +            
    exports.HereComment = class HereComment extends Base
    +  constructor: ({ @content, @newLine, @unshift }) ->
         super()
     
    -  isStatement:     YES
    -  makeReturn:      THIS
    -
    -  compileNode: (o, level) ->
    -    comment = @comment.replace /^(\s*)#(?=\s)/gm, "$1 *"
    -    code = "/*#{multident comment, @tab}#{if '\n' in comment then "\n#{@tab}" else ''} */"
    -    code = o.indent + code if (level or o.level) is LEVEL_TOP
    -    [@makeCode("\n"), @makeCode(code)]
    + compileNode: (o) -> + multiline = '\n' in @content + hasLeadingMarks = /\n\s*[#|\*]/.test @content + @content = @content.replace /^([ \t]*)#(?=\s)/gm, ' *' if hasLeadingMarks
  • -
  • +
  • - + +
    +

    Unindent multiline comments. They will be reindented later.

    + +
    + +
        if multiline
    +      largestIndent = ''
    +      for line in @content.split '\n'
    +        leadingWhitespace = /^\s*/.exec(line)[0]
    +        if leadingWhitespace.length > largestIndent.length
    +          largestIndent = leadingWhitespace
    +      @content = @content.replace ///^(#{leadingWhitespace})///gm, ''
    +
    +    @content = "/*#{@content}#{if hasLeadingMarks then ' ' else ''}*/"
    +    fragment = @makeCode @content
    +    fragment.newLine = @newLine
    +    fragment.unshift = @unshift
    +    fragment.multiline = multiline
    + +
  • + + +
  • +
    + +
    + +
    +

    Don’t rely on fragment.type, which can break when the compiler is minified.

    + +
    + +
        fragment.isComment = fragment.isHereComment = yes
    +    fragment
    + +
  • + + +
  • +
    + +
    + +
    +

    LineComment

    + +
    + +
  • + + +
  • +
    + +
    + +
    +

    Comment running from # to the end of a line (becoming //).

    + +
    + +
    exports.LineComment = class LineComment extends Base
    +  constructor: ({ @content, @newLine, @unshift }) ->
    +    super()
    +
    +  compileNode: (o) ->
    +    fragment = @makeCode(if /^\s*$/.test @content then '' else "//#{@content}")
    +    fragment.newLine = @newLine
    +    fragment.unshift = @unshift
    +    fragment.trail = not @newLine and not @unshift
    + +
  • + + +
  • +
    + +
    + +
    +

    Don’t rely on fragment.type, which can break when the compiler is minified.

    + +
    + +
        fragment.isComment = fragment.isLineComment = yes
    +    fragment
    + +
  • + + +
  • +
    + +
    +

    Call

    @@ -1703,36 +2270,55 @@ at the same position.

  • -
  • +
  • - +

    Node for a function invocation.

    exports.Call = class Call extends Base
    -  constructor: (@variable, @args = [], @soak) ->
    +  constructor: (@variable, @args = [], @soak, @token) ->
         super()
     
         @isNew = no
         if @variable instanceof Value and @variable.isNotCallable()
           @variable.error "literal is not a function"
     
    -    @csx = @variable.base instanceof CSXTag
    +    @csx = @variable.base instanceof CSXTag
    + +
  • + + +
  • +
    + +
    + +
    +

    @variable never gets output as a result of this node getting created as +part of RegexWithInterpolations, so for that case move any comments to +the args property that gets passed into RegexWithInterpolations via +the grammar.

    + +
    + +
        if @variable.base?.value is 'RegExp' and @args.length isnt 0
    +      moveComments @variable, @args[0]
     
       children: ['variable', 'args']
  • -
  • +
  • - +

    When setting the location, we sometimes need to update the start location to account for a newly-discovered new operator to the left of us. This @@ -1755,11 +2341,11 @@ expands the range on the left, but not the right.

  • -
  • +
  • - +

    Tag this invocation as creating a new instance.

    @@ -1777,11 +2363,11 @@ expands the range on the left, but not the right.

  • -
  • +
  • - +

    Soaked chained invocations unfold into if/else ternary structures.

    @@ -1822,11 +2408,11 @@ expands the range on the left, but not the right.

  • -
  • +
  • - +

    Compile a vanilla function call.

    @@ -1854,7 +2440,31 @@ expands the range on the left, but not the right.

    content?.base.csx = yes fragments = [@makeCode('<')] fragments.push (tag = @variable.compileToFragments(o, LEVEL_ACCESS))... - fragments.push attributes.compileToFragments(o, LEVEL_PAREN)... + if attributes.base instanceof Arr + for obj in attributes.base.objects + attr = obj.base + attrProps = attr?.properties or []
    + +
  • + + +
  • +
    + +
    + +
    +

    Catch invalid CSX attributes:

    + +
    + +
            if not (attr instanceof Obj or attr instanceof IdentifierLiteral) or (attr instanceof Obj and not attr.generated and (attrProps.length > 1 or not (attrProps[0] instanceof Splat)))
    +          obj.error """
    +            Unexpected token. Allowed CSX attributes are: id="val", src={source}, {props...} or attribute.
    +          """
    +        obj.base.csx = yes if obj.base instanceof Obj
    +        fragments.push @makeCode ' '
    +        fragments.push obj.compileToFragments(o, LEVEL_PAREN)...
         if content
           fragments.push @makeCode('>')
           fragments.push content.compileNode(o, LEVEL_LIST)...
    @@ -1866,11 +2476,11 @@ expands the range on the left, but not the right.

  • -
  • +
  • - +

    Super

    @@ -1879,11 +2489,11 @@ expands the range on the left, but not the right.

  • -
  • +
  • - +

    Takes care of converting super() calls into calls against the prototype’s function of the same name. @@ -1910,11 +2520,11 @@ expression.

  • -
  • +
  • - +

    If we might be in an expression we need to cache and return the result

    @@ -1927,34 +2537,59 @@ expression.

    replacement.compileToFragments o, if o.level is LEVEL_TOP then o.level else LEVEL_LIST exports.Super = class Super extends Base - children: ['accessor'] - constructor: (@accessor) -> super() + children: ['accessor'] + compileNode: (o) -> method = o.scope.namedMethod() @error 'cannot use super outside of an instance method' unless method?.isMethod - @inCtor = !!method.ctor - - unless @inCtor or @accessor? + unless method.ctor? or @accessor? {name, variable} = method if name.shouldCache() or (name instanceof Index and name.index.isAssignable()) nref = new IdentifierLiteral o.scope.parent.freeVariable 'name' name.index = new Assign nref, name.index @accessor = if nref? then new Index nref else name - (new Value (new Literal 'super'), if @accessor then [ @accessor ] else []).compileToFragments o
    + if @accessor?.name?.comments
  • -
  • +
  • - + +
    +

    A super() call gets compiled to e.g. super.method(), which means +the method property name gets compiled for the first time here, and +again when the method: property of the class gets compiled. Since +this compilation happens first, comments attached to method: would +get incorrectly output near super.method(), when we want them to +get output on the second pass when method: is output. So set them +aside during this compilation pass, and put them back on the object so +that they’re there for the later compilation.

    + +
    + +
          salvagedComments = @accessor.name.comments
    +      delete @accessor.name.comments
    +    fragments = (new Value (new Literal 'super'), if @accessor then [ @accessor ] else [])
    +    .compileToFragments o
    +    attachCommentsToNode salvagedComments, @accessor.name if salvagedComments
    +    fragments
    + +
  • + + +
  • +
    + +
    +

    RegexWithInterpolations

    @@ -1963,11 +2598,11 @@ exports.Super = class
  • -
  • +
  • - +

    Regexes with interpolations are in fact just a variation of a Call (a RegExp() call to be precise) with a StringWithInterpolations inside.

    @@ -1981,11 +2616,11 @@ exports.Super = class
  • -
  • +
  • - +

    TaggedTemplateCall

    @@ -2003,11 +2638,11 @@ exports.TaggedTemplateCall = -
  • +
  • - +

    Extends

    @@ -2016,11 +2651,11 @@ exports.TaggedTemplateCall = -
  • +
  • - +

    Node to extend an object’s prototype with an ancestor object. After goog.inherits from the @@ -2037,11 +2672,11 @@ After goog.inherits from the

  • -
  • +
  • - +

    Hooks one constructor into another’s prototype chain.

    @@ -2053,11 +2688,11 @@ After goog.inherits from the
  • -
  • +
  • - +

    Access

    @@ -2066,11 +2701,11 @@ After goog.inherits from the
  • -
  • +
  • - +

    A . access into a property of a value, or the :: shorthand for an access into the object’s prototype.

    @@ -2097,11 +2732,11 @@ an access into the object’s prototype.

  • -
  • +
  • - +

    Index

    @@ -2110,11 +2745,11 @@ an access into the object’s prototype.

  • -
  • +
  • - +

    A [ ... ] indexed access into an array or object.

    @@ -2135,11 +2770,11 @@ an access into the object’s prototype.

  • -
  • +
  • - +

    Range

    @@ -2148,11 +2783,11 @@ an access into the object’s prototype.

  • -
  • +
  • - +

    A range literal. Ranges can be used to extract portions (slices) of arrays, to specify a range for comprehensions, or as a value, to be expanded into the @@ -2173,11 +2808,11 @@ corresponding array of integers at runtime.

  • -
  • +
  • - +

    Compiles the range’s source variables – where it starts and where it ends. But only if they need to be cached to avoid double evaluation.

    @@ -2197,11 +2832,11 @@ But only if they need to be cached to avoid double evaluation.

  • -
  • +
  • - +

    When compiled normally, the range returns the contents of the for loop needed to iterate over the values in the range. Used by comprehensions.

    @@ -2215,11 +2850,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    Set up endpoints.

    @@ -2237,11 +2872,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    Generate the condition.

    @@ -2259,11 +2894,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    Generate the step.

    @@ -2288,11 +2923,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    The final loop body.

    @@ -2303,11 +2938,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    When used as a value, expand the range into the equivalent array.

    @@ -2338,11 +2973,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    Slice

    @@ -2351,11 +2986,11 @@ needed to iterate over the values in the range. Used by comprehensions.

  • -
  • +
  • - +

    An array slice literal. Unlike JavaScript’s Array#slice, the second parameter specifies the index of the end of the slice, just as the first parameter @@ -2373,11 +3008,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    We have to be careful when trying to slice through the end of the array, 9e9 is used because not all implementations respect undefined or 1/0. @@ -2392,11 +3027,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    TODO: jwalton - move this into the ‘if’?

    @@ -2418,11 +3053,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    Obj

    @@ -2431,11 +3066,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    An object literal, nothing fancy.

    @@ -2455,11 +3090,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    Check for reserved words.

    @@ -2478,11 +3113,11 @@ is the index of the beginning.

  • -
  • +
  • - +

    Check if object contains splat.

    @@ -2501,29 +3136,44 @@ is the index of the beginning.

  • -
  • +
  • -
        return @compileSpread o if @hasSplat()
    +            
        return @compileSpread o if @hasSplat() and not @csx
     
    -    idt        = o.indent += TAB
    -    lastNoncom = @lastNonComment @properties
    + idt = o.indent += TAB + lastNode = @lastNode @properties
  • -
  • +
  • - + +
    +

    CSX attributes

    + +
    + +
        return @compileCSXAttributes o if @csx
    + +
  • + + +
  • +
    + +
    +

    If this object is the left-hand side of an assignment, all its children are too.

    @@ -2541,7 +3191,7 @@ are too.

    isCompact = yes for prop in @properties - if prop instanceof Comment or (prop instanceof Assign and prop.context is 'object' and not @csx) + if prop instanceof Assign and prop.context is 'object' isCompact = no answer = [] @@ -2549,22 +3199,20 @@ are too.

    for prop, i in props join = if i is props.length - 1 '' - else if isCompact and @csx - ' ' else if isCompact ', ' - else if prop is lastNoncom or prop instanceof Comment or @csx + else if prop is lastNode '\n' else ',\n' - indent = if isCompact or prop instanceof Comment then '' else idt + indent = if isCompact then '' else idt key = if prop instanceof Assign and prop.context is 'object' prop.variable else if prop instanceof Assign prop.operatorToken.error "unexpected #{prop.operatorToken.value}" unless @lhs prop.variable - else if prop not instanceof Comment + else prop if key instanceof Value and key.hasProperties() key.error 'invalid object key' if prop.context is 'object' or not key.this @@ -2578,12 +3226,10 @@ are too.

    else if not prop.bareLiteral?(IdentifierLiteral) prop = new Assign prop, prop, 'object' if indent then answer.push @makeCode indent - prop.csx = yes if @csx - answer.push @makeCode ' ' if @csx and i is 0 answer.push prop.compileToFragments(o, LEVEL_TOP)... if join then answer.push @makeCode join answer.push @makeCode if isCompact then '' else "\n#{@tab}" - answer = @wrapInBraces answer if not @csx + answer = @wrapInBraces answer if @front then @wrapInParentheses answer else answer assigns: (name) -> @@ -2599,11 +3245,11 @@ are too.

  • -
  • +
  • - +

    Object spread properties. https://github.com/tc39/proposal-object-rest-spread/blob/master/Spread.md obj2 = {a: 1, obj..., c: 3, d: 4}obj2 = Object.assign({}, {a: 1}, obj, {c: 3, d: 4})

    @@ -2616,11 +3262,11 @@ are too.

  • -
  • +
  • - +

    Store object spreads.

    @@ -2642,16 +3288,27 @@ are too.

    propSlices.push prop addSlice() slices.unshift new Obj unless slices[0] instanceof Obj - (new Call new Literal('Object.assign'), slices).compileToFragments o
    + (new Call new Literal('Object.assign'), slices).compileToFragments o + + compileCSXAttributes: (o) -> + props = @properties + answer = [] + for prop, i in props + prop.csx = yes + join = if i is props.length - 1 then '' else ' ' + prop = new Literal "{#{prop.compile(o)}}" if prop instanceof Splat + answer.push prop.compileToFragments(o, LEVEL_TOP)... + answer.push @makeCode join + if @front then @wrapInParentheses answer else answer
  • -
  • +
  • - +

    Arr

    @@ -2660,11 +3317,11 @@ are too.

  • -
  • +
  • - +

    An array literal.

    @@ -2673,7 +3330,6 @@ are too.

    exports.Arr = class Arr extends Base
       constructor: (objs, @lhs = no) ->
         super()
    -
         @objects = objs or []
     
       children: ['objects']
    @@ -2693,36 +3349,87 @@ are too.

    return [@makeCode '[]'] unless @objects.length o.indent += TAB - answer = []
    + answer = [] + for obj, objIndex in @objects + unwrappedObj = obj.unwrapAll()
  • -
  • +
  • - + +
    +

    Let compileCommentFragments know to intersperse block comments +into the fragments created when compiling this array.

    + +
    + +
          if unwrappedObj.comments and
    +         unwrappedObj.comments.filter((comment) -> not comment.here).length is 0
    +        unwrappedObj.includeCommentFragments = YES
    + +
  • + + +
  • +
    + +
    +

    If this array is the left-hand side of an assignment, all its children are too.

    -
        if @lhs
    -      for obj in @objects
    -        unwrappedObj = obj.unwrapAll()
    +            
          if @lhs
             unwrappedObj.lhs = yes if unwrappedObj instanceof Arr or unwrappedObj instanceof Obj
     
    -    compiledObjs = (obj.compileToFragments o, LEVEL_LIST for obj in @objects)
    +    compiledObjs = (obj.compileToFragments o, LEVEL_LIST for obj in @objects)
    + +
  • + + +
  • +
    + +
    + +
    +

    If compiledObjs includes newlines, we will output this as a multiline +array (i.e. with a newline and indentation after the [). If an element +contains line comments, that should also trigger multiline output since +by definition line comments will introduce newlines into our output. +The exception is if only the first element has line comments; in that +case, output as the compact form if we otherwise would have, so that the +first element’s line comments get output before or after the array.

    + +
    + +
        includesLineCommentsOnNonFirstElement = no
         for fragments, index in compiledObjs
    -      if index
    -        answer.push @makeCode ", "
    +      for fragment in fragments
    +        if fragment.isHereComment
    +          fragment.code = fragment.code.trim()
    +        else if index isnt 0 and includesLineCommentsOnNonFirstElement is no and hasLineComments fragment
    +          includesLineCommentsOnNonFirstElement = yes
    +      if index isnt 0
    +        answer.push @makeCode ', '
           answer.push fragments...
    -    if fragmentsToText(answer).indexOf('\n') >= 0
    +    if includesLineCommentsOnNonFirstElement or '\n' in fragmentsToText(answer)
    +      for fragment, fragmentIndex in answer
    +        if fragment.isHereComment
    +          fragment.code = "#{multident(fragment.code, o.indent, no)}\n#{o.indent}"
    +        else if fragment.code is ', '
    +          fragment.code = ",\n#{o.indent}"
           answer.unshift @makeCode "[\n#{o.indent}"
           answer.push @makeCode "\n#{@tab}]"
         else
    +      for fragment in answer when fragment.isHereComment
    +        fragment.code = "#{fragment.code} "
           answer.unshift @makeCode '['
           answer.push @makeCode ']'
         answer
    @@ -2739,11 +3446,11 @@ are too.

  • -
  • +
  • - +

    Class

    @@ -2752,11 +3459,11 @@ are too.

  • -
  • +
  • - +

    The CoffeeScript class definition. Initialize a Class with its name, an optional superclass, and a body.

    @@ -2777,11 +3484,11 @@ exports.Class = class
  • -
  • +
  • - +

    Special handling to allow class expr.A extends A declarations

    @@ -2799,11 +3506,11 @@ exports.Class = class
  • -
  • +
  • - +

    Anonymous classes are only valid in expressions

    @@ -2850,11 +3557,11 @@ exports.Class = class
  • -
  • +
  • - +

    Figure out the appropriate name for this class

    @@ -2898,24 +3605,6 @@ exports.Class = class exprs.push initializerExpression initializer.push initializerExpression start = end + 1 - else if initializer[initializer.length - 1] instanceof Comment
    - -
  • - - -
  • -
    - -
    - -
    -

    Try to keep comments with their subsequent assign

    - -
    - -
                exprs.pop()
    -            initializer.pop()
    -            start--
               end++
             pushSlice()
     
    @@ -2925,22 +3614,6 @@ exports.Class = class
             if initializerExpression = @addInitializerExpression expression
               initializer.push initializerExpression
               expressions[i] = initializerExpression
    -        else if initializer[initializer.length - 1] instanceof Comment
    - -
  • - - -
  • -
    - -
    - -
    -

    Try to keep comments with their subsequent assign

    - -
    - -
              initializer.pop()
             i += 1
     
         for method in initializer when method instanceof Code
    @@ -2959,53 +3632,50 @@ exports.Class = class
             
  • -
  • +
  • - +

    Add an expression to the class initializer

    -

    NOTE Currently, only comments, methods and static methods are valid in ES class initializers. +

    NOTE Currently, only methods and static methods are valid in ES class initializers. When additional expressions become valid, this method should be updated to handle them.

      addInitializerExpression: (node) ->
    -    switch
    -      when node instanceof Comment
    -        node
    -      when @validInitializerMethod node
    -        @addInitializerMethod node
    -      else
    -        null
    + if @validInitializerMethod node + @addInitializerMethod node + else + null
  • -
  • +
  • - +

    Checks if the given node is a valid ES class initializer method.

      validInitializerMethod: (node) ->
    -    return false unless node instanceof Assign and node.value instanceof Code
    -    return true if node.context is 'object' and not node.variable.hasProperties()
    +    return no unless node instanceof Assign and node.value instanceof Code
    +    return yes if node.context is 'object' and not node.variable.hasProperties()
         return node.variable.looksStatic(@name) and (@name or not node.value.bound)
  • -
  • +
  • - +

    Returns a configured class initializer method

    @@ -3102,11 +3772,11 @@ exports.ExecutableClassBody = +
  • - +

    Traverse the class’s children and:

      @@ -3122,7 +3792,7 @@ exports.ExecutableClassBody = 0 while expr = @body.expressions[index] - break unless expr instanceof Comment or expr instanceof Value and expr.isString() + break unless expr instanceof Value and expr.isString() if expr.hoisted index++ else @@ -3154,11 +3824,11 @@ exports.ExecutableClassBody = +
    • - +

      Make class/prototype assignments for invalid ES properties

      @@ -3171,33 +3841,18 @@ exports.ExecutableClassBody = delete assign.context - if assign instanceof Comment
    - -
  • - - -
  • -
    - -
    - -
    -

    Passthrough

    - -
    - -
          else if base.value is 'constructor'
    +      if base.value is 'constructor'
             if value instanceof Code
               base.error 'constructors must be defined at the top level of a class body'
  • -
  • +
  • - +

    The class scope is not available yet, so return the assignment to update later

    @@ -3219,11 +3874,11 @@ exports.ExecutableClassBody = +
  • - +

    Import and Export

    @@ -3297,11 +3952,11 @@ exports.ExportDeclaration =
  • -
  • +
  • - +

    Prevent exporting an anonymous class; all exported members must be named

    @@ -3355,16 +4010,21 @@ exports.ExportSpecifierList = class ModuleSpecifier extends Base constructor: (@original, @alias, @moduleDeclarationType) -> - super()
    + super() + + if @original.comments or @alias?.comments + @comments = [] + @comments.push @original.comments... if @original.comments + @comments.push @alias.comments... if @alias?.comments
  • -
  • +
  • - +

    The name of the variable entering the local scope

    @@ -3390,11 +4050,11 @@ exports.ImportSpecifier = cl
  • -
  • +
  • - +

    Per the spec, symbols can’t be imported multiple times (e.g. import { foo, foo } from 'lib' is invalid)

    @@ -3418,11 +4078,11 @@ exports.ExportSpecifier = cl
  • -
  • +
  • - +

    Assign

    @@ -3431,11 +4091,11 @@ exports.ExportSpecifier = cl
  • -
  • +
  • - +

    The Assign is used to assign a local variable to value, or to set the property of an object – including within object literals.

    @@ -3468,11 +4128,11 @@ property of an object – including within object literals.

  • -
  • +
  • - +

    Compile an assignment, delegating to compileDestructuring or compileSplice if appropriate. Keep track of the name of the base object @@ -3488,11 +4148,11 @@ has not been seen yet within the current scope, declare it.

  • -
  • +
  • - +

    When compiling @variable, remember if it is part of a function parameter.

    @@ -3503,11 +4163,11 @@ has not been seen yet within the current scope, declare it.

  • -
  • +
  • - +

    If @variable is an array or an object, we’re destructuring; if it’s also isAssignable(), the destructuring syntax is supported @@ -3521,11 +4181,11 @@ and convert this ES-unsupported destructuring into acceptable output.

  • -
  • +
  • - +

    This is the left-hand side of an assignment; let Arr and Obj know that, so that those nodes know that they’re assignable as @@ -3539,11 +4199,11 @@ destructured variables.

  • -
  • +
  • - +

    Object destructuring. Can be removed once ES proposal hits Stage 4.

    @@ -3570,11 +4230,11 @@ destructured variables.

  • -
  • +
  • - +

    moduleDeclaration can be 'import' or 'export'

    @@ -3608,11 +4268,11 @@ destructured variables.

  • -
  • +
  • - +

    Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Assignment_without_declaration, if we’re destructuring without declaring, the destructuring assignment must be wrapped in parentheses.

    @@ -3627,11 +4287,11 @@ if we’re destructuring without declaring, the destructuring assignment must be
  • -
  • +
  • - +

    Check object destructuring variable for rest elements; can be removed once ES proposal hits Stage 4.

    @@ -3643,11 +4303,11 @@ can be removed once ES proposal hits Stage 4.

  • -
  • +
  • - +

    Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Assignment_without_declaration, if we’re destructuring without declaring, the destructuring assignment @@ -3662,21 +4322,21 @@ current scope.

    return if prop instanceof Assign and prop.value.base instanceof Obj if prop instanceof Assign if prop.value.base instanceof IdentifierLiteral - newVar = prop.value.base.compile o + newVar = prop.value.base.compileWithoutComments o else - newVar = prop.variable.base.compile o + newVar = prop.variable.base.compileWithoutComments o else - newVar = prop.compile o + newVar = prop.compileWithoutComments o o.scope.add(newVar, 'var', true) if newVar
  • -
  • +
  • - +

    Returns a safe (cached) reference to the key for a given property

    @@ -3692,11 +4352,11 @@ current scope.

  • -
  • +
  • - +

    Returns the name of a given property for use with excludeProps Property names are quoted (e.g. a: b -> ‘a’), and everything else uses the key reference @@ -3706,20 +4366,20 @@ Property names are quoted (e.g. a: b -> ‘a’), and everything

        getPropName = (prop) ->
           key = getPropKey prop
    -      cached = prop instanceof Assign and prop.variable != key
    +      cached = prop instanceof Assign and prop.variable isnt key
           if cached or not key.isAssignable()
             key
           else
    -        new Literal "'#{key.compile o}'"
    + new Literal "'#{key.compileWithoutComments o}'"
  • -
  • +
  • - +

    Recursive function for searching and storing rest elements in objects. e.g. {[properties...]} = source.

    @@ -3737,11 +4397,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    prop is k: expr, we need to check expr for nested splats

    @@ -3752,11 +4412,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    prop is k: {...}

    @@ -3768,11 +4428,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    prop is k: {...} = default

    @@ -3783,7 +4443,7 @@ e.g. {[properties...]} = source.

    if nestedProperties nestedSource = new Value source.base, source.properties.concat [new Access getPropKey prop] nestedSource = new Value new Op '?', nestedSource, nestedSourceDefault if nestedSourceDefault - restElements = restElements.concat traverseRest nestedProperties, nestedSource + restElements.push traverseRest(nestedProperties, nestedSource)... else if prop instanceof Splat prop.error "multiple rest elements are disallowed in object destructuring" if restIndex? restIndex = index @@ -3798,11 +4458,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    Remove rest element from the properties after iteration

    @@ -3815,11 +4475,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    Cache the value for reuse with rest elements

    @@ -3830,11 +4490,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    Find all rest elements.

    @@ -3853,11 +4513,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    Remove leading tab and trailing semicolon

    @@ -3871,11 +4531,11 @@ e.g. {[properties...]} = source.

  • -
  • +
  • - +

    Brief implementation of recursive pattern matching, when assigning array or object literals to a value. Peeks at their properties to assign inner names.

    @@ -3891,11 +4551,11 @@ object literals to a value. Peeks at their properties to assign inner names.

  • -
  • +
  • - +

    Special-case for {} = a and [] = a (empty patterns). Compile to simply a.

    @@ -3910,11 +4570,11 @@ Compile to simply a.

  • -
  • +
  • - +

    Disallow [...] = a for some reason. (Could be equivalent to [] = a?)

    @@ -3928,11 +4588,11 @@ Compile to simply a.

  • -
  • +
  • - +

    Special case for when there’s only one thing destructured off of something. {a} = b, [a] = b, {a: b} = c

    @@ -3944,11 +4604,11 @@ something. {a} = b, [a] = b, {a: b} = c -
  • +
  • - +

    Pick the property straight off the value when there’s just one to pick (no need to cache the value into a variable).

    @@ -3961,11 +4621,11 @@ something. {a} = b, [a] = b, {a: b} = c -
  • +
  • - +

    A regular object pattern-match.

    @@ -3984,11 +4644,11 @@ something. {a} = b, [a] = b, {a: b} = c -
  • +
  • - +

    A shorthand {a, b, @c} = val pattern-match.

    @@ -4003,11 +4663,11 @@ something. {a} = b, [a] = b, {a: b} = c -
  • +
  • - +

    A regular array pattern-match.

    @@ -4032,11 +4692,11 @@ something. {a} = b, [a] = b, {a: b} = c -
  • +
  • - +

    At this point, there are several things to destructure. So the fn() in {a, b} = fn() must be cached, for example. Make vvar into a simple @@ -4053,11 +4713,11 @@ variable if it isn’t already.

  • -
  • +
  • - +

    And here comes the big loop that handles all of these cases: [a, b] = c @@ -4106,11 +4766,11 @@ etc.

  • -
  • +
  • - +

    A regular object pattern-match.

    @@ -4129,11 +4789,11 @@ etc.

  • -
  • +
  • - +

    A shorthand {a, b, @c} = val pattern-match.

    @@ -4148,11 +4808,11 @@ etc.

  • -
  • +
  • - +

    A regular array pattern-match.

    @@ -4177,11 +4837,11 @@ etc.

  • -
  • +
  • - +

    When compiling a conditional assignment, take care to ensure that the operands are only evaluated once, even though we have to reference them @@ -4195,11 +4855,11 @@ more than once.

  • -
  • +
  • - +

    Disallow conditional assignment of undefined variables.

    @@ -4218,11 +4878,11 @@ more than once.

  • -
  • +
  • - +

    Convert special math assignment operators like a **= b to the equivalent extended form a = a ** b and then compiles that.

    @@ -4236,11 +4896,11 @@ extended form a = a ** b and then compiles that.

  • -
  • +
  • - +

    Compile the assignment from an array splice literal, using JavaScript’s Array#splice method.

    @@ -4249,6 +4909,10 @@ extended form a = a ** b and then compiles that.

      compileSplice: (o) ->
         {range: {from, to, exclusive}} = @variable.properties.pop()
    +    unwrappedVar = @variable.unwrapAll()
    +    if unwrappedVar.comments
    +      moveComments unwrappedVar, @
    +      delete @variable.comments
         name = @variable.compile o
         if from
           [fromDecl, fromRef] = @cacheToCodeFragments from.cache o, LEVEL_OP
    @@ -4273,11 +4937,29 @@ extended form a = a ** b and then compiles that.

  • -
  • +
  • - + +
    +

    FuncGlyph

    + +
    + +
    +exports.FuncGlyph = class FuncGlyph extends Base
    +  constructor: (@glyph) ->
    +    super()
    + +
  • + + +
  • +
    + +
    +

    Code

    @@ -4286,11 +4968,11 @@ extended form a = a ** b and then compiles that.

  • -
  • +
  • - +

    A function definition. This is the only node that creates a new Scope. When for the purposes of walking the contents of a function body, the Code @@ -4299,12 +4981,12 @@ has no children – they’re within the inner scope.

    exports.Code = class Code extends Base
    -  constructor: (params, body, tag) ->
    +  constructor: (params, body, @funcGlyph) ->
         super()
     
         @params      = params or []
         @body        = body or new Block
    -    @bound       = tag is 'boundfunc'
    +    @bound       = @funcGlyph?.glyph is '=>'
         @isGenerator = no
         @isAsync     = no
         @isMethod    = no
    @@ -4328,11 +5010,11 @@ has no children – they’re within the inner scope.

  • -
  • +
  • - +

    Compilation creates a new scope unless explicitly asked to share with the outer scope. Handles splat parameters in the parameter list by setting @@ -4367,13 +5049,13 @@ function body.

  • -
  • +
  • - +
    -

    Check for duplicate parameters and separate this assignments

    +

    Check for duplicate parameters and separate this assignments.

    @@ -4391,11 +5073,11 @@ function body.

  • -
  • +
  • - +

    Parse the parameters, adding them to the list of parameters to put in the function definition; and dealing with splats or expansions, including @@ -4413,11 +5095,11 @@ any non-idempotent parameters are evaluated in the correct order.

  • -
  • +
  • - +

    Was ... used with this parameter? (Only one such parameter is allowed per function.) Splat/expansion parameters cannot have default values, @@ -4437,11 +5119,11 @@ so we need not worry about that.

  • -
  • +
  • - +

    Splat arrays are treated oddly by ES; deal with them the legacy way in the function body. TODO: Should this be handled in the @@ -4454,7 +5136,7 @@ function parameter list, and if so, how?

    exprs.push new Assign new Value(param.name), ref else params.push ref = param.asReference o - splatParamName = fragmentsToText ref.compileNode o + splatParamName = fragmentsToText ref.compileNodeWithoutComments o if param.shouldCache() exprs.push new Assign new Value(param.name), ref else # `param` is an Expansion @@ -4466,11 +5148,11 @@ function parameter list, and if so, how?

  • -
  • +
  • - +

    Parse all other parameters; if a splat paramater has not yet been encountered, add these other parameters to the list to be output in @@ -4486,11 +5168,11 @@ the function definition.

  • -
  • +
  • - +

    This parameter cannot be declared or assigned in the parameter list. So put a reference in the parameter list and add a statement @@ -4509,11 +5191,11 @@ to the function body assigning it, e.g.

  • -
  • +
  • - +

    If this parameter comes before the splat or expansion, it will go in the function definition parameter list.

    @@ -4525,11 +5207,11 @@ in the function definition parameter list.

  • -
  • +
  • - +

    If this parameter has a default value, and it hasn’t already been set by the shouldCache() block above, define it as a statement in @@ -4549,11 +5231,11 @@ so we can’t define its default value in the parameter list.

  • -
  • +
  • - +

    Add this parameter’s reference(s) to the function scope.

    @@ -4564,11 +5246,11 @@ so we can’t define its default value in the parameter list.

  • -
  • +
  • - +

    This parameter is destructured.

    @@ -4581,11 +5263,11 @@ so we can’t define its default value in the parameter list.

  • -
  • +
  • - +

    Compile foo({a, b...}) -> to foo(arg) -> {a, b...} = arg. Can be removed once ES proposal hits Stage 4.

    @@ -4601,11 +5283,11 @@ Can be removed once ES proposal hits Stage 4.

  • -
  • +
  • - +

    Compile foo({a, b...} = {}) -> to foo(arg = {}) -> {a, b...} = arg.

    @@ -4613,8 +5295,31 @@ Can be removed once ES proposal hits Stage 4.

                  if param.value?  and not param.assignedInBody
                     ref = new Assign ref, param.value, null, param: yes
    -          else
    -            o.scope.parameter fragmentsToText (if param.value? then param else ref).compileToFragments o
    +          else
    + +
  • + + +
  • +
    + +
    + +
    +

    This compilation of the parameter is only to get its name to add +to the scope name tracking; since the compilation output here +isn’t kept for eventual output, don’t include comments in this +compilation, so that they get output the “real” time this param +is compiled.

    + +
    + +
                paramToAddToScope = if param.value? then param else ref
    +            if paramToAddToScope.name?.comments
    +              salvagedComments = paramToAddToScope.name.comments
    +              delete paramToAddToScope.name.comments
    +            o.scope.parameter fragmentsToText paramToAddToScope.compileToFragments o
    +            paramToAddToScope.name.comments = salvagedComments if salvagedComments
               params.push ref
             else
               paramsAfterSplat.push param
    @@ -4622,11 +5327,11 @@ Can be removed once ES proposal hits Stage 4.

  • -
  • +
  • - +

    If this parameter had a default value, since it’s no longer in the function parameter list we need to assign its default value @@ -4642,11 +5347,11 @@ function parameter list we need to assign its default value

  • -
  • +
  • - +

    Add this parameter to the scope, since it wouldn’t have been added yet since it was skipped earlier.

    @@ -4658,11 +5363,11 @@ yet since it was skipped earlier.

  • -
  • +
  • - +

    If there were parameters after the splat or expansion parameter, those parameters need to be assigned in the body of the function.

    @@ -4674,11 +5379,11 @@ parameters need to be assigned in the body of the function.

  • -
  • +
  • - +

    Create a destructured assignment, e.g. [a, b, c] = [args..., b, c]

    @@ -4691,11 +5396,11 @@ parameters need to be assigned in the body of the function.

  • -
  • +
  • - +

    Add new expressions to the function body

    @@ -4712,11 +5417,11 @@ parameters need to be assigned in the body of the function.

  • -
  • +
  • - +

    Assemble the output

    @@ -4732,23 +5437,41 @@ parameters need to be assigned in the body of the function.

    signature = [@makeCode '('] for param, i in params - signature.push @makeCode ', ' if i + signature.push @makeCode ', ' if i isnt 0 signature.push @makeCode '...' if haveSplatParam and i is params.length - 1 signature.push param.compileToFragments(o)... - signature.push @makeCode ')' + signature.push @makeCode ')'
    + +
  • + + +
  • +
    + +
    + +
    +

    Block comments between ) and ->/=> get output between ) and {.

    + +
    + +
        if @funcGlyph?.comments?
    +      comment.unshift = no for comment in @funcGlyph.comments
    +      @compileCommentFragments o, @funcGlyph, signature
     
         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.

    @@ -4767,7 +5490,7 @@ parameters need to be assigned in the body of the function.

    answer.push @makeCode('\n'), body..., @makeCode("\n#{@tab}") if body?.length answer.push @makeCode '}' - return [@makeCode(@tab), answer...] if @isMethod + return indentInitial answer, @ if @isMethod if @front or (o.level >= LEVEL_ACCESS) then @wrapInParentheses answer else answer eachParamName: (iterator) -> @@ -4776,11 +5499,11 @@ parameters need to be assigned in the body of the function.

  • -
  • +
  • - +

    Short-circuit traverseChildren method to prevent it from crossing scope boundaries unless crossScope is true.

    @@ -4793,11 +5516,11 @@ boundaries unless crossScope is true.

  • -
  • +
  • - +

    Short-circuit replaceInContext method to prevent it from crossing context boundaries. Bound functions have the same context.

    @@ -4830,11 +5553,11 @@ functions have the same context.

  • -
  • +
  • - +

    Find all super calls in the given context node Returns true if iterator is called

    @@ -4854,11 +5577,11 @@ Returns true if iterator is called

  • -
  • +
  • - +

    super has the same target in bound (arrow) functions, so check them too

    @@ -4871,11 +5594,11 @@ Returns true if iterator is called

  • -
  • +
  • - +

    Param

    @@ -4884,11 +5607,11 @@ Returns true if iterator is called

  • -
  • +
  • - +

    A parameter in a function definition. Beyond a typical JavaScript parameter, these parameters can also attach themselves to the context of the function, @@ -4930,11 +5653,11 @@ as well as be a splat, gathering up a group of parameters into an array.

  • -
  • +
  • - +

    Iterates the name or names of a Param. In a sense, a destructured parameter represents multiple JS parameters. This @@ -4951,11 +5674,11 @@ to that name.

  • -
  • +
  • - +
    • simple literals foo
    • @@ -4968,11 +5691,11 @@ to that name.

      -
    • +
    • - +
      • at-params @foo
      • @@ -4986,11 +5709,11 @@ to that name.

        -
      • +
      • - +
        • destructured parameter with default value
        • @@ -5004,11 +5727,11 @@ to that name.

          -
        • +
        • - +
          • assignments within destructured parameters {foo:bar}
          • @@ -5021,28 +5744,30 @@ to that name.

            -
          • +
          • - +

            … possibly with a default value

                    if obj.value instanceof Assign
            +          obj = obj.value.variable
            +        else
                       obj = obj.value
            -        @eachName iterator, obj.value.unwrap()
            + @eachName iterator, obj.unwrap()
      • -
      • +
      • - +
        • splats within destructured parameters [xs...]
        • @@ -5058,11 +5783,11 @@ to that name.

          -
        • +
        • - +
          • destructured parameters within destructured parameters [{a}]
          • @@ -5076,11 +5801,11 @@ to that name.

            -
          • +
          • - +
            • at-params within destructured parameters {@foo}
            • @@ -5094,11 +5819,11 @@ to that name.

              -
            • +
            • - +
              • simple destructured parameters {foo}
              • @@ -5114,11 +5839,11 @@ to that name.

                -
              • +
              • - +

                Rename a param by replacing the given AST node for a name with a new node. This needs to ensure that the the source for object destructuring does not change.

                @@ -5140,11 +5865,11 @@ This needs to ensure that the the source for object destructuring does not chang
              • -
              • +
              • - +

                Splat

                @@ -5153,11 +5878,11 @@ This needs to ensure that the the source for object destructuring does not chang
              • -
              • +
              • - +

                A splat, either as a parameter to a function, an argument to a call, or as part of a destructuring assignment.

                @@ -5187,11 +5912,11 @@ or as part of a destructuring assignment.

              • -
              • +
              • - +

                Expansion

                @@ -5200,11 +5925,11 @@ or as part of a destructuring assignment.

              • -
              • +
              • - +

                Used to skip values inside an array destructuring (pattern matching) or parameter list.

                @@ -5226,11 +5951,11 @@ parameter list.

              • -
              • +
              • - +

                While

                @@ -5239,11 +5964,11 @@ parameter list.

              • -
              • +
              • - +

                A while loop, the only sort of low-level loop exposed by CoffeeScript. From it, all other loops can be manufactured. Useful in cases where you need more @@ -5266,7 +5991,7 @@ flexibility or more speed than a comprehension can provide.

                if res super res else - @returns = not @jumps loop: yes + @returns = not @jumps() this addBody: (@body) -> @@ -5282,11 +6007,11 @@ flexibility or more speed than a comprehension can provide.

              • -
              • +
              • - +

                The main difference from a JavaScript while is that the CoffeeScript while can be used as a part of a larger expression – while loops may @@ -5319,11 +6044,11 @@ return an array containing the computed result of each iteration.

              • -
              • +
              • - +

                Op

                @@ -5332,11 +6057,11 @@ return an array containing the computed result of each iteration.

              • -
              • +
              • - +

                Simple Arithmetic and logical operations. Performs some conversion from CoffeeScript operations into their JavaScript equivalents.

                @@ -5351,7 +6076,8 @@ CoffeeScript operations into their JavaScript equivalents.

                if op is 'do' return Op::generateDo first if op is 'new' - return first.newInstance() if first instanceof Call and not first.do and not first.isNew + if (firstCall = first.unwrap()) instanceof Call and not firstCall.do and not firstCall.isNew + return firstCall.newInstance() first = new Parens first if first instanceof Code and first.bound or first.do @operator = CONVERSIONS[op] or op @@ -5363,11 +6089,11 @@ CoffeeScript operations into their JavaScript equivalents.

              • -
              • +
              • - +

                The map of conversions from CoffeeScript to JavaScript symbols.

                @@ -5382,11 +6108,11 @@ CoffeeScript operations into their JavaScript equivalents.

              • -
              • +
              • - +

                The map of invertible operators.

                @@ -5417,11 +6143,11 @@ CoffeeScript operations into their JavaScript equivalents.

              • -
              • +
              • - +

                Am I capable of Python-style comparison chaining?

                @@ -5483,11 +6209,11 @@ CoffeeScript operations into their JavaScript equivalents.

              • -
              • +
              • - +

                In chains, there’s no need to wrap bare obj literals in parens, as the chained expression is wrapped.

                @@ -5517,11 +6243,11 @@ as the chained expression is wrapped.

              • -
              • +
              • - +

                Mimic Python’s chained comparisons when multiple comparison operators are used sequentially. For example:

                @@ -5540,11 +6266,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                Keep reference to the left expression, unless this an existential assignment

                @@ -5562,11 +6288,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                Compile a unary Op.

                @@ -5612,11 +6338,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                Make a Math.pow call

                @@ -5641,11 +6367,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                In

                @@ -5668,11 +6394,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                compileOrTest only if we have an array literal with no splats

                @@ -5704,11 +6430,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                Try

                @@ -5717,11 +6443,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                A classic try/catch/finally block.

                @@ -5745,11 +6471,11 @@ used sequentially. For example:

              • -
              • +
              • - +

                Compilation is more or less as you would expect – the finally clause is optional, the catch is not.

                @@ -5785,11 +6511,11 @@ is optional, the catch is not.

              • -
              • +
              • - +

                Throw

                @@ -5798,11 +6524,11 @@ is optional, the catch is not.

              • -
              • +
              • - +

                Simple node to throw an exception.

                @@ -5820,11 +6546,11 @@ is optional, the catch is not.

              • -
              • +
              • - +

                A Throw is already a return, of sorts…

                @@ -5833,16 +6559,20 @@ is optional, the catch is not.

                  makeReturn: THIS
                 
                   compileNode: (o) ->
                -    [].concat @makeCode(@tab + "throw "), @expression.compileToFragments(o), @makeCode(";")
                + fragments = @expression.compileToFragments o + unshiftAfterComments fragments, @makeCode 'throw ' + fragments.unshift @makeCode @tab + fragments.push @makeCode ';' + fragments
            • -
            • +
            • - +

              Existence

              @@ -5851,11 +6581,11 @@ is optional, the catch is not.

            • -
            • +
            • - +

              Checks a variable for existence – not null and not undefined. This is similar to .nil? in Ruby, and avoids having to consult a JavaScript truth @@ -5867,6 +6597,18 @@ table. Optionally only check if a variable is not undefined.

              constructor: (@expression, onlyNotUndefined = no) -> super() @comparisonTarget = if onlyNotUndefined then 'undefined' else 'null' + salvagedComments = [] + @expression.eachChild (child) -> + if child.comments + for comment in child.comments + salvagedComments.push comment unless comment in salvagedComments + delete child.comments + if child.name?.comments + for comment in child.name.comments + salvagedComments.push comment unless comment in salvagedComments + delete child.name.comments + attachCommentsToNode salvagedComments, @ + moveComments @expression, @ children: ['expression'] @@ -5883,11 +6625,11 @@ table. Optionally only check if a variable is not undefined.

            • -
            • +
            • - +

              We explicity want to use loose equality (==) when comparing against null, so that an existence check roughly corresponds to a check for truthiness. @@ -5908,11 +6650,11 @@ which only get assigned when the variable is undefined (but not -

            • +
            • - +

              Parens

              @@ -5921,11 +6663,11 @@ which only get assigned when the variable is undefined (but not -
            • +
            • - +

              An extra set of parentheses, specified explicitly in the source. At one time we tried to clean up the results by detecting and removing redundant @@ -5950,7 +6692,7 @@ parentheses, but no longer – you can put in as many as you please.

              expr.front = @front return expr.compileToFragments o fragments = expr.compileToFragments o, LEVEL_PAREN - bare = o.level < LEVEL_OP and (expr instanceof Op or expr instanceof Call or + bare = o.level < LEVEL_OP and (expr instanceof Op or expr.unwrap() instanceof Call or (expr instanceof For and expr.returns)) and (o.level < LEVEL_COND or fragments.length <= 3) return @wrapInBraces fragments if @csxAttribute @@ -5959,11 +6701,11 @@ parentheses, but no longer – you can put in as many as you please.

            • -
            • +
            • - +

              StringWithInterpolations

              @@ -5979,11 +6721,11 @@ exports.StringWithInterpolations = +
            • - +

              unwrap returns this to stop ancestor nodes reaching in to grab @body, and using @body.compileNode. StringWithInterpolations.compileNode is @@ -6004,11 +6746,11 @@ and using @body.compileNode. StringWithInterpolations.compileNode i

            • -
            • +
            • - +

              Assumes that expr is Value » StringLiteral or Op

              @@ -6017,62 +6759,114 @@ and using @body.compileNode. StringWithInterpolations.compileNode i
                  expr = @body.unwrap()
               
                   elements = []
              +    salvagedComments = []
                   expr.traverseChildren no, (node) ->
                     if node instanceof StringLiteral
              +        if node.comments
              +          salvagedComments.push node.comments...
              +          delete node.comments
                       elements.push node
                       return yes
                     else if node instanceof Parens
              +        if salvagedComments.length isnt 0
              +          for comment in salvagedComments
              +            comment.unshift = yes
              +            comment.newLine = yes
              +          attachCommentsToNode salvagedComments, node
                       elements.push node
                       return no
              +      else if node.comments
              + +
            • + + +
            • +
              + +
              + +
              +

              This node is getting discarded, but salvage its comments.

              + +
              + +
                      if elements.length isnt 0 and elements[elements.length - 1] not instanceof StringLiteral
              +          for comment in node.comments
              +            comment.unshift = no
              +            comment.newLine = yes
              +          attachCommentsToNode node.comments, elements[elements.length - 1]
              +        else
              +          salvagedComments.push node.comments...
              +        delete node.comments
                     return yes
               
                   fragments = []
                   fragments.push @makeCode '`' unless @csx
                   for element in elements
                     if element instanceof StringLiteral
              -        value = element.unquote @csx
              +        element.value = element.unquote @csx
                       unless @csx
            • -
            • +
            • - +

              Backticks and ${ inside template literals must be escaped.

              -
                        value = value.replace /(\\*)(`|\$\{)/g, (match, backslashes, toBeEscaped) ->
              +            
                        element.value = element.value.replace /(\\*)(`|\$\{)/g, (match, backslashes, toBeEscaped) ->
                           if backslashes.length % 2 is 0
                             "#{backslashes}\\#{toBeEscaped}"
                           else
                             match
              -        fragments.push @makeCode value
              +        fragments.push element.compileToFragments(o)...
                     else
                       fragments.push @makeCode '$' unless @csx
                       code = element.compileToFragments(o, LEVEL_PAREN)
              -        code = @wrapInBraces code unless @isNestedTag element
              +        unless @isNestedTag element
              +          code = @wrapInBraces code
              + +
            • + + +
            • +
              + +
              + +
              +

              Flag the { and } fragments as having been generated by this +StringWithInterpolations node, so that compileComments knows +to treat them as bounds. Don’t trust fragment.type, which can +report minified variable names when this compiler is minified.

              + +
              + +
                        code[0].isStringWithInterpolations = yes
              +          code[code.length - 1].isStringWithInterpolations = yes
                       fragments.push code...
                   fragments.push @makeCode '`' unless @csx
                   fragments
               
                 isNestedTag: (element) ->
              -    exprs = element?.body?.expressions
              -    call = exprs?[0]
              +    exprs = element.body?.expressions
              +    call = exprs?[0].unwrap()
                   @csx and exprs and exprs.length is 1 and call instanceof Call and call.csx
            • -
            • +
            • - +

              For

              @@ -6081,11 +6875,11 @@ and using @body.compileNode. StringWithInterpolations.compileNode i
            • -
            • +
            • - +

              CoffeeScript’s replacement for the for loop is our array and object comprehensions, that compile into for loops here. They also act as an @@ -6099,12 +6893,11 @@ you can map and filter in a single pass.

              exports.For = class For extends While
                 constructor: (body, source) ->
                   super()
              -
                   {@source, @guard, @step, @name, @index} = source
                   @body    = Block.wrap [body]
              -    @own     = !!source.own
              -    @object  = !!source.object
              -    @from    = !!source.from
              +    @own     = source.own?
              +    @object  = source.object?
              +    @from    = source.from?
                   @index.error 'cannot use index with for-from' if @from and @index
                   source.ownTag.error "cannot use own with for-#{if @from then 'from' else 'in'}" if @own and not @object
                   [@name, @index] = [@index, @name] if @object
              @@ -6113,18 +6906,57 @@ you can map and filter in a single pass.

              @pattern = @name instanceof Value @index.error 'indexes do not apply to range loops' if @range and @index @name.error 'cannot pattern match over range loops' if @range and @pattern - @returns = false + @returns = no
              + +
            • + + +
            • +
              + +
              + +
              +

              Move up any comments in the “for line”, i.e. the line of code with for, +from any child nodes of that line up to the for node itself so that these +comments get output, and get output above the for loop.

              + +
              + +
                  for attribute in ['source', 'guard', 'step', 'name', 'index'] when @[attribute]
              +      @[attribute].traverseChildren yes, (node) =>
              +        if node.comments
              + +
            • + + +
            • +
              + +
              + +
              +

              These comments are buried pretty deeply, so if they happen to be +trailing comments the line they trail will be unrecognizable when +we’re done compiling this for loop; so just shift them up to +output above the for line.

              + +
              + +
                        comment.newLine = comment.unshift = yes for comment in node.comments
              +          moveComments node, @[attribute]
              +      moveComments @[attribute], @
               
                 children: ['body', 'source', 'guard', 'step']
            • -
            • +
            • - +

              Welcome to the hairiest method in all of CoffeeScript. Handles the inner loop, filtering, stepping, and result saving for array, object, and range @@ -6208,10 +7040,17 @@ some cannot.

              forPartFragments = [@makeCode("#{kvar} of #{svar}")] bodyFragments = body.compileToFragments merge(o, indent: idt1), LEVEL_TOP if bodyFragments and bodyFragments.length > 0 - bodyFragments = [].concat @makeCode("\n"), bodyFragments, @makeCode("\n") - [].concat defPartFragments, @makeCode("#{resultPart or ''}#{@tab}for ("), + bodyFragments = [].concat @makeCode('\n'), bodyFragments, @makeCode('\n') + + fragments = [] + if defPartFragments? and fragmentsToText(defPartFragments) isnt '' + fragments = fragments.concat defPartFragments + fragments.push @makeCode(resultPart) if resultPart + fragments = fragments.concat @makeCode(@tab), @makeCode( 'for ('), forPartFragments, @makeCode(") {#{guardPart}#{varPart}"), bodyFragments, - @makeCode("#{@tab}}#{returnResult or ''}") + @makeCode(@tab), @makeCode('}') + fragments.push @makeCode(returnResult) if returnResult + fragments pluckDirectCall: (o, body) -> defs = [] @@ -6236,11 +7075,11 @@ some cannot.

            • -
            • +
            • - +

              Switch

              @@ -6249,11 +7088,11 @@ some cannot.

            • -
            • +
            • - +

              A JavaScript switch statement. Converts into a returnable expression on-demand.

              @@ -6290,7 +7129,7 @@ some cannot.

              fragments = fragments.concat @makeCode(idt1 + "case "), cond.compileToFragments(o, LEVEL_PAREN), @makeCode(":\n") fragments = fragments.concat body, @makeCode('\n') if (body = block.compileToFragments o, LEVEL_TOP).length > 0 break if i is @cases.length - 1 and not @otherwise - expr = @lastNonComment block.expressions + expr = @lastNode block.expressions continue if expr instanceof Return or expr instanceof Throw or (expr instanceof Literal and expr.jumps() and expr.value isnt 'debugger') fragments.push cond.makeCode(idt2 + 'break;\n') if @otherwise and @otherwise.expressions.length @@ -6301,11 +7140,11 @@ some cannot.

            • -
            • +
            • - +

              If

              @@ -6314,11 +7153,11 @@ some cannot.

            • -
            • +
            • - +

              If/else statements. Acts as an expression by pushing down requested returns to the last line of each clause.

              @@ -6330,11 +7169,11 @@ because ternaries are already proper expressions, and don’t need conversion.
              exports.If = class If extends Base
                 constructor: (condition, @body, options = {}) ->
                   super()
              -
                   @condition = if options.type is 'unless' then condition.invert() else condition
                   @elseBody  = null
                   @isChain   = false
                   {@soak}    = options
              +    moveComments @condition, @ if @condition.comments
               
                 children: ['condition', 'body', 'elseBody']
               
              @@ -6344,11 +7183,11 @@ because ternaries are already proper expressions, and don’t need conversion.
                       
                       
              -        
            • +
            • - +

              Rewrite a chain of Ifs to add a default case as the final else.

              @@ -6366,11 +7205,11 @@ because ternaries are already proper expressions, and don’t need conversion. -
            • +
            • - +

              The If only compiles into a statement if either of its bodies needs to be a statement. Otherwise a conditional operator is safe.

              @@ -6398,11 +7237,11 @@ to be a statement. Otherwise a conditional operator is safe.

            • -
            • +
            • - +

              Compile the If as a regular if-else statement. Flattened chains force inner else bodies into statement form.

              @@ -6433,11 +7272,11 @@ force inner else bodies into statement form.

            • -
            • +
            • - +

              Compile the If as a conditional operator.

              @@ -6456,11 +7295,11 @@ force inner else bodies into statement form.

            • -
            • +
            • - +

              Constants

              @@ -6469,11 +7308,11 @@ force inner else bodies into statement form.

            • -
            • +
            • - +
              @@ -6499,11 +7338,11 @@ UTILITIES =
            • -
            • +
            • - +

              Shortcuts to speed up the lookup time for native functions.

              @@ -6517,11 +7356,11 @@ UTILITIES =
            • -
            • +
            • - +

              Levels indicate a node’s position in the AST. Useful for knowing if parens are necessary or superfluous.

              @@ -6538,11 +7377,11 @@ LEVEL_ACCESS = 6 #
            • -
            • +
            • - +

              Tabs are two spaces for pretty printing.

              @@ -6555,11 +7394,11 @@ SIMPLENUM = /^[+-]?\d+$/
            • -
            • +
            • - +

              Helper Functions

              @@ -6568,11 +7407,11 @@ SIMPLENUM = /^[+-]?\d+$/
          • -
          • +
          • - +
            @@ -6580,11 +7419,11 @@ SIMPLENUM = /^[+-]?\d+$/
      • -
      • +
      • - +

        Helper for ensuring that utility functions are assigned at the top level.

        @@ -6599,9 +7438,86 @@ SIMPLENUM = /^[+-]?\d+$/
      root.assign ref, UTILITIES[name] o root.utilities[name] = ref -multident = (code, tab) -> - code = code.replace /\n/g, '$&' + tab - code.replace /\s+$/, '' +multident = (code, tab, includingFirstLine = yes) -> + endsWithNewLine = code[code.length - 1] is '\n' + code = (if includingFirstLine then tab else '') + 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, fragmentIndex in fragments
    +    if fragment.isHereComment
    +      fragment.code = multident fragment.code, node.tab
    +    else
    +      fragments.splice fragmentIndex, 0, node.makeCode "#{node.tab}"
    +      break
    +  fragments
    +
    +hasLineComments = (node) ->
    +  return no unless node.comments
    +  for comment in node.comments
    +    return yes if comment.here is no
    +  return no
    + +
  • + + +
  • +
    + +
    + +
    +

    Move the comments property from one object to another, deleting it from +the first object.

    + +
    + +
    moveComments = (from, to) ->
    +  return unless from?.comments
    +  attachCommentsToNode from.comments, to
    +  delete from.comments
    + +
  • + + +
  • +
    + +
    + +
    +

    Sometimes when compiling a node, we want to insert a fragment at the start +of an array of fragments; but if the start has one or more comment fragments, +we want to insert this fragment after those but before any non-comments.

    + +
    + +
    unshiftAfterComments = (fragments, fragmentToInsert) ->
    +  inserted = no
    +  for fragment, fragmentIndex in fragments when not fragment.isComment
    +    fragments.splice fragmentIndex, 0, fragmentToInsert
    +    inserted = yes
    +    break
    +  fragments.push fragmentToInsert unless inserted
    +  fragments
     
     isLiteralArguments = (node) ->
       node instanceof IdentifierLiteral and node.value is 'arguments'
    @@ -6614,11 +7530,11 @@ SIMPLENUM = /^[+-]?\d+$/
  • -
  • +
  • - +

    Unfold a node’s child if soak, then tuck the node under created If

    diff --git a/docs/v2/annotated-source/optparse.html b/docs/v2/annotated-source/optparse.html index 5a1fb24f..896651d1 100644 --- a/docs/v2/annotated-source/optparse.html +++ b/docs/v2/annotated-source/optparse.html @@ -157,8 +157,8 @@ command-line arguments in src/command.coffee.

    -
      constructor: (rules, @banner) ->
    -    @rules = buildRules rules
    +
      constructor: (ruleDeclarations, @banner) ->
    +    @rules = buildRules ruleDeclarations
  • @@ -178,20 +178,7 @@ you’re responsible for interpreting the options object.

    -
      parse: (args) ->
    -    options = arguments: []
    -    skippingArgument = no
    -    originalArgs = args
    -    args = normalizeArguments args
    -    for arg, i in args
    -      if skippingArgument
    -        skippingArgument = no
    -        continue
    -      if arg is '--'
    -        pos = originalArgs.indexOf '--'
    -        options.arguments = options.arguments.concat originalArgs[(pos + 1)..]
    -        break
    -      isOption = !!(arg.match(LONG_FLAG) or arg.match(SHORT_FLAG))
    +
      parse: (args) ->
    @@ -202,27 +189,18 @@ you’re responsible for interpreting the options object.

    -

    the CS option parser is a little odd; options after the first -non-option argument are treated as non-option arguments themselves

    +

    The CoffeeScript option parser is a little odd; options after the first +non-option argument are treated as non-option arguments themselves. +Optional arguments are normalized by expanding merged flags into multiple +flags. This allows you to have -wl be the same as --watch --lint. +Note that executable scripts with a shebang (#!) line should use the +line #!/usr/bin/env coffee, or #!/absolute/path/to/coffee, without a +-- argument after, because that will fail on Linux (see #3946).

    -
          seenNonOptionArg = options.arguments.length > 0
    -      unless seenNonOptionArg
    -        matchedRule = no
    -        for rule in @rules
    -          if rule.shortFlag is arg or rule.longFlag is arg
    -            value = true
    -            if rule.hasArgument
    -              skippingArgument = yes
    -              value = args[i + 1]
    -            options[rule.name] = if rule.isList then (options[rule.name] or []).concat value else value
    -            matchedRule = yes
    -            break
    -        throw new Error "unrecognized option: #{arg}" if isOption and not matchedRule
    -      if seenNonOptionArg or not isOption
    -        options.arguments.push arg
    -    options
    +
        {rules, positional} = normalizeArguments args, @rules.flagDict
    +    options = {}
    @@ -233,20 +211,27 @@ non-option argument are treated as non-option arguments themselves

    -

    Return the help text for this OptionParser, listing and describing all -of the valid options, for --help and such.

    +

    The argument field is added to the rule instance non-destructively by +normalizeArguments.

    -
      help: ->
    -    lines = []
    -    lines.unshift "#{@banner}\n" if @banner
    -    for rule in @rules
    -      spaces  = 15 - rule.longFlag.length
    -      spaces  = if spaces > 0 then repeat ' ', spaces else ''
    -      letPart = if rule.shortFlag then rule.shortFlag + ', ' else '    '
    -      lines.push '  ' + letPart + rule.longFlag + spaces + rule.description
    -    "\n#{ lines.join('\n') }\n"
    +
        for {hasArgument, argument, isList, name} in rules
    +      if hasArgument
    +        if isList
    +          options[name] ?= []
    +          options[name].push argument
    +        else
    +          options[name] = argument
    +      else
    +        options[name] = true
    +
    +    if positional[0] is '--'
    +      options.doubleDashed = yes
    +      positional = positional[1..]
    +
    +    options.arguments = positional
    +    options
    @@ -257,10 +242,21 @@ of the valid options, for --help and such.

    -

    Helpers

    +

    Return the help text for this OptionParser, listing and describing all +of the valid options, for --help and such.

    +
      help: ->
    +    lines = []
    +    lines.unshift "#{@banner}\n" if @banner
    +    for rule in @rules.ruleList
    +      spaces  = 15 - rule.longFlag.length
    +      spaces  = if spaces > 0 then repeat ' ', spaces else ''
    +      letPart = if rule.shortFlag then rule.shortFlag + ', ' else '    '
    +      lines.push '  ' + letPart + rule.longFlag + spaces + rule.description
    +    "\n#{ lines.join('\n') }\n"
    + @@ -270,7 +266,8 @@ of the valid options, for --help and such.

    - +

    Helpers

    + @@ -282,15 +279,9 @@ of the valid options, for --help and such.

    -

    Regex matchers for option flags.

    - + -
    LONG_FLAG  = /^(--\w[\w\-]*)/
    -SHORT_FLAG = /^(-\w)$/
    -MULTI_FLAG = /^-(\w{2,})/
    -OPTIONAL   = /\[(\w+(\*?))\]/
    - @@ -300,15 +291,13 @@ OPTIONAL = /\[(\w+(\*?))\]/
    -

    Build and return the list of option rules. If the optional short-flag is -unspecified, leave it out by padding with null.

    +

    Regex matchers for option flags on the command line and their rules.

    -
    buildRules = (rules) ->
    -  for tuple in rules
    -    tuple.unshift null if tuple.length < 3
    -    buildRule tuple...
    +
    LONG_FLAG  = /^(--\w[\w\-]*)/
    +SHORT_FLAG = /^(-\w)$/
    +MULTI_FLAG = /^-(\w{2,})/
    @@ -319,22 +308,12 @@ unspecified, leave it out by padding with null.

    -

    Build a rule from a -o short flag, a --output [DIR] long flag, and the -description of what the option does.

    +

    Matches the long flag part of a rule for an option with an argument. Not +applied to anything in process.argv.

    -
    buildRule = (shortFlag, longFlag, description, options = {}) ->
    -  match     = longFlag.match(OPTIONAL)
    -  longFlag  = longFlag.match(LONG_FLAG)[1]
    -  {
    -    name:         longFlag.substr 2
    -    shortFlag:    shortFlag
    -    longFlag:     longFlag
    -    description:  description
    -    hasArgument:  !!(match and match[1])
    -    isList:       !!(match and match[2])
    -  }
    +
    OPTIONAL   = /\[(\w+(\*?))\]/
    @@ -345,20 +324,156 @@ description of what the option does.

    -

    Normalize arguments by expanding merged flags into multiple flags. This allows -you to have -wl be the same as --watch --lint.

    +

    Build and return the list of option rules. If the optional short-flag is +unspecified, leave it out by padding with null.

    -
    normalizeArguments = (args) ->
    -  args = args[..]
    -  result = []
    -  for arg in args
    -    if match = arg.match MULTI_FLAG
    -      result.push '-' + l for l in match[1].split ''
    -    else
    -      result.push arg
    -  result
    +
    buildRules = (ruleDeclarations) ->
    +  ruleList = for tuple in ruleDeclarations
    +    tuple.unshift null if tuple.length < 3
    +    buildRule tuple...
    +  flagDict = {}
    +  for rule in ruleList
    + + + + +
  • +
    + +
    + +
    +

    shortFlag is null if not provided in the rule.

    + +
    + +
        for flag in [rule.shortFlag, rule.longFlag] when flag?
    +      if flagDict[flag]?
    +        throw new Error "flag #{flag} for switch #{rule.name}
    +          was already declared for switch #{flagDict[flag].name}"
    +      flagDict[flag] = rule
    +
    +  {ruleList, flagDict}
    + +
  • + + +
  • +
    + +
    + +
    +

    Build a rule from a -o short flag, a --output [DIR] long flag, and the +description of what the option does.

    + +
    + +
    buildRule = (shortFlag, longFlag, description) ->
    +  match     = longFlag.match(OPTIONAL)
    +  shortFlag = shortFlag?.match(SHORT_FLAG)[1]
    +  longFlag  = longFlag.match(LONG_FLAG)[1]
    +  {
    +    name:         longFlag.replace /^--/, ''
    +    shortFlag:    shortFlag
    +    longFlag:     longFlag
    +    description:  description
    +    hasArgument:  !!(match and match[1])
    +    isList:       !!(match and match[2])
    +  }
    +
    +normalizeArguments = (args, flagDict) ->
    +  rules = []
    +  positional = []
    +  needsArgOpt = null
    +  for arg, argIndex in args
    + +
  • + + +
  • +
    + +
    + +
    +

    If the previous argument given to the script was an option that uses the +next command-line argument as its argument, create copy of the option’s +rule with an argument field.

    + +
    + +
        if needsArgOpt?
    +      withArg = Object.assign {}, needsArgOpt.rule, {argument: arg}
    +      rules.push withArg
    +      needsArgOpt = null
    +      continue
    +
    +    multiFlags = arg.match(MULTI_FLAG)?[1]
    +      .split('')
    +      .map (flagName) -> "-#{flagName}"
    +    if multiFlags?
    +      multiOpts = multiFlags.map (flag) ->
    +        rule = flagDict[flag]
    +        unless rule?
    +          throw new Error "unrecognized option #{flag} in multi-flag #{arg}"
    +        {rule, flag}
    + +
  • + + +
  • +
    + +
    + +
    +

    Only the last flag in a multi-flag may have an argument.

    + +
    + +
          [innerOpts..., lastOpt] = multiOpts
    +      for {rule, flag} in innerOpts
    +        if rule.hasArgument
    +          throw new Error "cannot use option #{flag} in multi-flag #{arg} except
    +          as the last option, because it needs an argument"
    +        rules.push rule
    +      if lastOpt.rule.hasArgument
    +        needsArgOpt = lastOpt
    +      else
    +        rules.push lastOpt.rule
    +    else if ([LONG_FLAG, SHORT_FLAG].some (pat) -> arg.match(pat)?)
    +      singleRule = flagDict[arg]
    +      unless singleRule?
    +        throw new Error "unrecognized option #{arg}"
    +      if singleRule.hasArgument
    +        needsArgOpt = {rule: singleRule, flag: arg}
    +      else
    +        rules.push singleRule
    +    else
    + +
  • + + +
  • +
    + +
    + +
    +

    This is a positional argument.

    + +
    + +
          positional = args[argIndex..]
    +      break
    +
    +  if needsArgOpt?
    +    throw new Error "value required for #{needsArgOpt.flag}, but it was the last
    +    argument provided"
    +  {rules, positional}
  • diff --git a/docs/v2/annotated-source/repl.html b/docs/v2/annotated-source/repl.html index d2d311fa..f0c5b5ed 100644 --- a/docs/v2/annotated-source/repl.html +++ b/docs/v2/annotated-source/repl.html @@ -125,6 +125,8 @@ nodeREPL = require CoffeeScript = require './' {merge, updateSyntaxError} = require './helpers' +sawSIGINT = no + replDefaults = prompt: 'coffee> ', historyFile: do -> @@ -193,7 +195,7 @@ Unwrap that too.

    -
        {Block, Assign, Value, Literal} = require './nodes'
    +            
        {Block, Assign, Value, Literal, Call, Code} = require './nodes'
     
         try
    @@ -225,9 +227,7 @@ Unwrap that too.

    -
          referencedVars = (
    -        token[1] for token in tokens when token[0] is 'IDENTIFIER'
    -      )
    +
          referencedVars = (token[1] for token in tokens when token[0] is 'IDENTIFIER')
    @@ -253,16 +253,11 @@ Unwrap that too.

    -

    Add assignment to _ variable to force the input to be an expression.

    +

    Add assignment to __ variable to force the input to be an expression.

    -
          ast = new Block [
    -        new Assign (new Value new Literal '__'), ast, '='
    -      ]
    -      js = ast.compile {bare: yes, locals: Object.keys(context), referencedVars}
    -      cb null, runInContext js, context, filename
    -    catch err
    +
          ast = new Block [new Assign (new Value new Literal '__'), ast, '=']
    @@ -273,6 +268,60 @@ Unwrap that too.

    +

    Wrap the expression in a closure to support top-level await

    + + + +
          ast     = new Code [], ast
    +      isAsync = ast.isAsync
    + + + + +
  • +
    + +
    + +
    +

    Invoke the wrapping closure

    + +
    + +
          ast    = new Block [new Call ast]
    +      js     = ast.compile {bare: yes, locals: Object.keys(context), referencedVars, sharedScope: yes}
    +      result = runInContext js, context, filename
    + +
  • + + +
  • +
    + +
    + +
    +

    Await an async result, if necessary

    + +
    + +
          if isAsync
    +        result = await result
    +        cb null, result unless sawSIGINT
    +        sawSIGINT = false
    +      else
    +        cb null, result
    +    catch err
    + +
  • + + +
  • +
    + +
    + +

    AST’s compile does not add source code information to syntax errors.

    @@ -292,11 +341,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Node 0.11.12 changed API, prompt is now _prompt.

    @@ -313,11 +362,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Proxy node’s line listener

    @@ -338,11 +387,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Handle Ctrl-v

    @@ -355,11 +404,11 @@ Unwrap that too.

  • -
  • +
  • - +

    allow arbitrarily switching between modes any time before multiple lines are entered

    @@ -374,11 +423,11 @@ Unwrap that too.

  • -
  • +
  • - +

    no-op unless the current line is empty

    @@ -389,11 +438,11 @@ Unwrap that too.

  • -
  • +
  • - +

    eval, print, loop

    @@ -408,11 +457,11 @@ Unwrap that too.

  • -
  • +
  • - +

    XXX: multiline hack

    @@ -430,11 +479,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Store and load command history from a file

    @@ -447,11 +496,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Get file info and at most maxSize of command history

    @@ -463,11 +512,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Read last size bytes from the file

    @@ -481,11 +530,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Set the history on the interpreter

    @@ -496,11 +545,11 @@ Unwrap that too.

  • -
  • +
  • - +

    If the history file was truncated we should pop off a potential partial line

    @@ -511,11 +560,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Shift off the final blank newline

    @@ -533,29 +582,43 @@ Unwrap that too.

  • -
  • +
  • - +

    Save the latest command in the file

          fs.writeSync fd, "#{code}\n"
    -      lastLine = code
    +      lastLine = code
    + +
  • + + +
  • +
    + +
    + +
    +

    XXX: The SIGINT event from REPLServer is undocumented, so this is a bit fragile

    +
    + +
      repl.on 'SIGINT', -> sawSIGINT = yes
       repl.on 'exit', -> fs.closeSync fd
  • -
  • +
  • - +

    Add a command to show the history stack

    @@ -572,11 +635,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Node 0.11 changed API, a command such as ‘.help’ is now stored as ‘help’

    @@ -605,11 +668,11 @@ Unwrap that too.

  • -
  • +
  • - +

    Adapt help inherited from the node REPL

    diff --git a/docs/v2/annotated-source/rewriter.html b/docs/v2/annotated-source/rewriter.html index 5b6d574c..51f969d9 100644 --- a/docs/v2/annotated-source/rewriter.html +++ b/docs/v2/annotated-source/rewriter.html @@ -136,15 +136,23 @@ parentheses, and generally clean things up.

    -

    Create a generated token: one that exists due to a use of implicit syntax.

    +

    Move attached comments from one token to another.

    -
    generate = (tag, value, origin) ->
    -  tok = [tag, value]
    -  tok.generated = yes
    -  tok.origin = origin if origin
    -  tok
    +
    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
    +        unshiftedComments.push comment
    +      else
    +        toToken.comments.push comment
    +    toToken.comments = unshiftedComments.concat toToken.comments
    +  else
    +    toToken.comments = fromToken.comments
    +  delete fromToken.comments
  • @@ -155,6 +163,27 @@ parentheses, and generally clean things up.

    +

    Create a generated token: one that exists due to a use of implicit syntax. +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, directly against its internal array of tokens.

    @@ -165,16 +194,16 @@ its internal array of tokens.

  • -
  • +
  • - +

    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 +like this. The order of these passes matters—indentation must be corrected before implicit parentheses can be wrapped around blocks of code.

    @@ -184,37 +213,45 @@ corrected before implicit parentheses can be wrapped around blocks of code.

  • -
  • -
    - -
    - -
    -

    Helpful snippet for debugging: - console.log (t[0] + ‘/‘ + t[1] for t in @tokens).join ‘ ‘

    - -
    - -
        @removeLeadingNewlines()
    -    @closeOpenCalls()
    -    @closeOpenIndexes()
    -    @normalizeLines()
    -    @tagPostfixConditionals()
    -    @addImplicitBracesAndParens()
    -    @addLocationDataToGeneratedTokens()
    -    @enforceValidCSXAttributes()
    -    @fixOutdentLocationData()
    -    @tokens
    - -
  • - -
  • +

    Set environment variable DEBUG_TOKEN_STREAM to true to output token +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 '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. 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 @@ -247,29 +284,75 @@ our feet.

  • -
  • +
  • - +

    Leading newlines would introduce an ambiguity in the grammar, so we dispatch them here.

    -
      removeLeadingNewlines: ->
    -    break for [tag], i in @tokens when tag isnt 'TERMINATOR'
    -    @tokens.splice 0, i if i
    +
      removeLeadingNewlines: ->
  • -
  • +
  • - + +
    +

    Find the index of the first non-TERMINATOR token.

    + +
    + +
        break for [tag], i in @tokens when tag isnt 'TERMINATOR'
    +    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.

    @@ -290,11 +373,11 @@ its paired close.

  • -
  • +
  • - +

    The lexer has tagged the opening bracket of an indexing operation call. Match it with its paired close.

    @@ -315,13 +398,13 @@ Match it with its paired close.

  • -
  • +
  • - +
    -

    Match tags in token stream starting at i with pattern, skipping ‘HERECOMMENT’s. +

    Match tags in token stream starting at i with pattern. pattern may consist of strings (equality), an array of strings (one of) or null (wildcard). Returns the index of the match or -1 if no match.

    @@ -330,7 +413,6 @@ or null (wildcard). Returns the index of the match or -1 if no match.

      indexOfTag: (i, pattern...) ->
         fuzz = 0
         for j in [0 ... pattern.length]
    -      fuzz += 2 while @tag(i + j + fuzz) is 'HERECOMMENT'
           continue if not pattern[j]?
           pattern[j] = [pattern[j]] if typeof pattern[j] is 'string'
           return -1 if @tag(i + j + fuzz) not in pattern[j]
    @@ -339,22 +421,21 @@ or null (wildcard). Returns the index of the match or -1 if no match.

  • -
  • +
  • - +

    Returns yes if standing in front of something looking like -@<x>:, <x>: or <EXPRESSION_START><x>...<EXPRESSION_END>:, -skipping over ‘HERECOMMENT’s.

    +@<x>:, <x>: or <EXPRESSION_START><x>...<EXPRESSION_END>:.

      looksObjectish: (j) ->
    -    return yes if @indexOfTag(j, '@', null, ':') > -1 or @indexOfTag(j, null, ':') > -1
    -    index = @indexOfTag(j, EXPRESSION_START)
    -    if index > -1
    +    return yes if @indexOfTag(j, '@', null, ':') isnt -1 or @indexOfTag(j, null, ':') isnt -1
    +    index = @indexOfTag j, EXPRESSION_START
    +    if index isnt -1
           end = null
           @detectEnd index + 1, ((token) -> token[0] in EXPRESSION_END), ((token, i) -> end = i)
           return yes if @tag(end + 1) is ':'
    @@ -363,14 +444,14 @@ skipping over ‘HERECOMMENT’s.

  • -
  • +
  • - +

    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.

    @@ -389,11 +470,11 @@ containing balanced expression.

  • -
  • +
  • - +

    Look for signs of implicit calls and objects in the token stream and add them.

    @@ -405,11 +486,11 @@ add them.

  • -
  • +
  • - +

    Track current balancing depth (both implicit and explicit) on stack.

    @@ -428,11 +509,11 @@ add them.

  • -
  • +
  • - +

    Helper function, used for keeping track of the number of tokens consumed and spliced, when returning for getting a new token.

    @@ -444,11 +525,11 @@ and spliced, when returning for getting a new token.

  • -
  • +
  • - +

    Helper functions

    @@ -464,14 +545,14 @@ and spliced, when returning for getting a new token.

  • -
  • +
  • - +

    Unclosed control statement inside implicit parens (like -class declaration or if-conditionals)

    +class declaration or if-conditionals).

    @@ -479,23 +560,23 @@ class declaration or if-conditionals)

    startImplicitCall = (idx) -> stack.push ['(', idx, ours: yes] - tokens.splice idx, 0, generate 'CALL_START', '(' + tokens.splice idx, 0, generate 'CALL_START', '(', ['', 'implicit function call', token[2]], 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) => @@ -510,13 +591,13 @@ class declaration or if-conditionals)

  • -
  • +
  • - +
    -

    Don’t end an implicit call/object on next indent if any of these are in an argument/value

    +

    Don’t end an implicit call/object on next indent if any of these are in an argument/value.

    @@ -532,16 +613,16 @@ class declaration or if-conditionals)

  • -
  • +
  • - +

    An INDENT closes an implicit call unless

    1. We have seen a CONTROL argument on the line.
    2. -
    3. The last token before the indent is part of the list below
    4. +
    5. The last token before the indent is part of the list below.
    @@ -559,13 +640,13 @@ class declaration or if-conditionals)

  • -
  • +
  • - +
    -

    Straightforward start of explicit expression

    +

    Straightforward start of explicit expression.

    @@ -576,11 +657,11 @@ class declaration or if-conditionals)

  • -
  • +
  • - +

    Close all implicit expressions inside of explicitly closed expressions.

    @@ -599,20 +680,21 @@ class declaration or if-conditionals)

  • -
  • +
  • - +

    Recognize standard implicit calls like -f a, f() b, f? c, h[0] d etc.

    +f a, f() b, f? c, h[0] d etc. +Added support for spread dots on the left side: f …a

          if (tag in IMPLICIT_FUNC and token.spaced or
               tag is '?' and i > 0 and not tokens[i - 1].spaced) and
    -         (nextTag in IMPLICIT_CALL or
    +         (nextTag in IMPLICIT_CALL or nextTag is '...' or
               nextTag in IMPLICIT_UNSPACED_CALL and
               not nextToken.spaced and not nextToken.newLine)
             tag = token[0] = 'FUNC_EXIST' if tag is '?'
    @@ -622,11 +704,11 @@ f a, f() b, f? c, h[0] d etc.

  • -
  • +
  • - +

    Implicit call taking an implicit indented object as first argument.

    f
    @@ -655,13 +737,13 @@ that creates grammatical ambiguities.

  • -
  • +
  • - +
    -

    Implicit objects start here

    +

    Implicit objects start here.

    @@ -670,13 +752,13 @@ that creates grammatical ambiguities.

  • -
  • +
  • - +
    -

    Go back to the (implicit) start of the object

    +

    Go back to the (implicit) start of the object.

    @@ -684,18 +766,17 @@ that creates grammatical ambiguities.

    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' startsLine = s is 0 or @tag(s - 1) in LINEBREAKS or tokens[s - 1].newLine
  • -
  • +
  • - +

    Are we just continuing an already declared object?

    @@ -713,11 +794,11 @@ that creates grammatical ambiguities.

  • -
  • +
  • - +

    End implicit calls when chaining method calls like e.g.:

    @@ -736,19 +817,20 @@ like e.g.:

  • -
  • +
  • - +

    Mark all enclosing objects as not sameLine

          if tag in LINEBREAKS
    -        for stackItem in stack by -1 when isImplicitObject stackItem
    -          stackItem[2].sameLine = no
    +        for stackItem in stack by -1
    +          break unless isImplicit stackItem
    +          stackItem[2].sameLine = no if isImplicitObject stackItem
     
           newLine = prevTag is 'OUTDENT' or prevToken.newLine
           if tag in IMPLICIT_END or tag in CALL_CLOSERS and newLine
    @@ -758,11 +840,11 @@ like e.g.:

  • -
  • +
  • - +

    Close implicit calls when reached end of argument list

    @@ -774,11 +856,11 @@ like e.g.:

  • -
  • +
  • - +

    Close implicit objects such as: return a: 1, b: 2 unless true

    @@ -793,11 +875,11 @@ return a: 1, b: 2 unless true

  • -
  • +
  • - +

    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 @@ -807,7 +889,6 @@ the continuation of an object.

              else if inImplicitObject() and tag is 'TERMINATOR' and prevTag isnt ',' and
                       not (startsLine and @looksObjectish(i + 1))
    -            return forward 1 if nextTag is 'HERECOMMENT'
                 endImplicitObject()
               else
                 break
    @@ -815,11 +896,11 @@ the continuation of an object.

  • -
  • +
  • - +

    Close implicit object if comma is the last character and what comes after doesn’t look like it belongs. @@ -839,11 +920,11 @@ e = 2

  • -
  • +
  • - +

    When nextTag is OUTDENT the comma is insignificant and should just be ignored so embed it in the implicit object.

    @@ -852,8 +933,7 @@ array further up the stack, so give it a chance.

    -
    -        offset = if nextTag is 'OUTDENT' then 1 else 0
    +            
            offset = if nextTag is 'OUTDENT' then 1 else 0
             while inImplicitObject()
               endImplicitObject i + offset
           return forward(1)
    @@ -861,13 +941,13 @@ array further up the stack, so give it a chance.

  • -
  • +
  • - +
    -

    Make sure only strings and wrapped expressions are used in CSX attributes

    +

    Make sure only strings and wrapped expressions are used in CSX attributes.

    @@ -876,17 +956,188 @@ array further up the stack, so give it a chance.

    if token.csxColon next = tokens[i + 1] if next[0] not in ['STRING_START', 'STRING', '('] - throwSyntaxError 'expected wrapped or quoted CSX attribute', next[2] + throwSyntaxError 'expected wrapped or quoted JSX 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: ->
    +    insertPlaceholder = (token, j, tokens, method) ->
    +      tokens[method] generate 'TERMINATOR', '\n', tokens[j] unless tokens[j][0] is 'TERMINATOR'
    +      tokens[method] generate 'JS', '', tokens[j], token
    +
    +    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. (Otherwise 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
    +        insertPlaceholder token, j, tokens, 'push'
    + +
  • + + +
  • +
    + +
    + +
    +

    The generated tokens were added to the end, not inline, so we don’t skip.

    + +
    + +
            return 1
    +
    +    shiftCommentsBackward = (token, i, tokens) ->
    + +
  • + + +
  • +
    + +
    + +
    +

    Find the last surviving token and attach this token’s comments to it.

    + +
    + +
          j = i
    +      j-- while j isnt -1 and tokens[j][0] in DISCARDED
    +      unless j is -1 or tokens[j][0] in DISCARDED
    +        moveComments token, tokens[j]
    +        return 1
    +      else # All previous tokens are doomed!
    +        insertPlaceholder token, 0, tokens, 'unshift'
    + +
  • + + +
  • +
    + +
    + +
    +

    We added two tokens, so shift forward to account for the insertion.

    + +
    + +
            return 3
    +
    +    @scanTokens (token, i, tokens) ->
    +      return 1 unless token.comments
    +      ret = 1
    +      if token[0] in DISCARDED
    + +
  • + + +
  • +
    + +
    + +
    +

    This token won’t survive passage through the parser, so we need to +rescue its attached tokens and redistribute them to nearby tokens. +Comments that don’t start a new line can shift backwards to the last +safe token, while other tokens should shift forward.

    + +
    + +
            dummyToken = comments: []
    +        j = token.comments.length - 1
    +        until j is -1
    +          if token.comments[j].newLine is no and token.comments[j].here is no
    +            dummyToken.comments.unshift token.comments[j]
    +            token.comments.splice j, 1
    +          j--
    +        if dummyToken.comments.length isnt 0
    +          ret = shiftCommentsBackward dummyToken, i - 1, tokens
    +        if token.comments.length isnt 0
    +          shiftCommentsForward token, i, tokens
    +      else
    + +
  • + + +
  • +
    + +
    + +
    +

    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 this isn’t one of the special JS tokens, then +shift this comment forward to precede the next valid token. +Block.compileComments also has logic to make sure that +“starting new line” comments follow or precede the nearest +newline relative to the token that the comment is attached to, +but that newline might be inside a } or ) or other generated +token that we really want this comment to output after. Therefore +we need to shift the comments here, avoiding such generated and +discarded tokens.

    + +
    + +
            dummyToken = comments: []
    +        j = token.comments.length - 1
    +        until j is -1
    +          if token.comments[j].newLine and not token.comments[j].unshift and
    +             not (token[0] is 'JS' and token.generated)
    +            dummyToken.comments.unshift token.comments[j]
    +            token.comments.splice j, 1
    +          j--
    +        if dummyToken.comments.length isnt 0
    +          ret = shiftCommentsForward dummyToken, i + 1, tokens
    +      delete token.comments if token.comments?.length is 0
    +      ret
    + +
  • + + +
  • +
    + +
    +

    Add location data to all tokens generated by the rewriter.

    @@ -912,14 +1163,14 @@ array further up the stack, so give it a chance.

  • -
  • +
  • - +
    -

    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 +

    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.

    @@ -940,11 +1191,11 @@ location corresponding to the last “real” token under the node.

  • -
  • +
  • - +

    Because our grammar is LALR(1), it can’t handle some single-line expressions that lack ending delimiters. The Rewriter adds the implicit @@ -999,11 +1250,11 @@ blocks are added.

  • -
  • +
  • - +

    Tag postfix conditionals as such, so that we can parse them with a different precedence.

    @@ -1011,7 +1262,6 @@ different precedence.

      tagPostfixConditionals: ->
    -
         original = null
     
         condition = (token, i) ->
    @@ -1032,11 +1282,11 @@ different precedence.

  • -
  • +
  • - +

    Generate the indentation tokens, based on another token on the same line.

    @@ -1057,11 +1307,11 @@ different precedence.

  • -
  • +
  • - +

    Look up a tag by token index.

    @@ -1072,11 +1322,11 @@ different precedence.

  • -
  • +
  • - +

    Constants

    @@ -1085,11 +1335,11 @@ different precedence.

  • -
  • +
  • - +
    @@ -1097,11 +1347,11 @@ different precedence.

  • -
  • +
  • - +

    List of the token pairs that must be balanced.

    @@ -1122,11 +1372,11 @@ different precedence.

  • -
  • +
  • - +

    The inverse mappings of BALANCED_PAIRS we’re trying to fix up, so we can look things up from either end.

    @@ -1138,11 +1388,11 @@ look things up from either end.

  • -
  • +
  • - +

    The tokens that signal the start/end of a balanced pair.

    @@ -1151,18 +1401,18 @@ look things up from either end.

    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.

    @@ -1173,11 +1423,11 @@ EXPRESSION_END = []
  • -
  • +
  • - +

    Tokens that, if followed by an IMPLICIT_CALL, indicate a function invocation.

    @@ -1188,11 +1438,11 @@ EXPRESSION_END = []
  • -
  • +
  • - +

    If preceded by an IMPLICIT_FUNC, indicates a function invocation.

    @@ -1212,11 +1462,11 @@ IMPLICIT_UNSPACED_CALL = ['+', +
  • - +

    Tokens that always mark the end of an implicit call for single-liners.

    @@ -1228,11 +1478,11 @@ IMPLICIT_UNSPACED_CALL = ['+', +
  • - +

    Single-line flavors of block expressions that have unclosed endings. The grammar can’t disambiguate them, so we insert the implicit indentation.

    @@ -1245,11 +1495,11 @@ SINGLE_CLOSERS = ['TERMINATOR', +
  • - +

    Tokens that end a line.

    @@ -1260,11 +1510,11 @@ SINGLE_CLOSERS = ['TERMINATOR', +
  • - +

    Tokens that close open calls when they follow a newline.

    @@ -1275,11 +1525,11 @@ SINGLE_CLOSERS = ['TERMINATOR', +
  • - +

    Tokens that prevent a subsequent indent from ending implicit calls/objects

    @@ -1289,6 +1539,31 @@ SINGLE_CLOSERS = ['TERMINATOR', +
    + +
    + +
    +

    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. +STRING_START isn’t on this list because its locationData matches that of +the node that becomes StringWithInterpolations, and therefore +addDataToNode attaches STRING_START’s tokens to that node.

    + +
    + +
    DISCARDED = ['(', ')', '[', ']', '{', '}', '.', '..', '...', ',', '=', '++', '--', '?',
    +  'AS', 'AWAIT', 'CALL_START', 'CALL_END', 'DEFAULT', 'ELSE', 'EXTENDS', 'EXPORT',
    +  'FORIN', 'FOROF', 'FORFROM', 'IMPORT', 'INDENT', 'INDEX_SOAK', 'LEADING_WHEN',
    +  'OUTDENT', 'PARAM_START', 'PARAM_END', 'REGEX_START', 'REGEX_END', 'RETURN',
    +  'STRING_END', 'THROW', 'UNARY', 'YIELD'
    +].concat IMPLICIT_UNSPACED_CALL.concat IMPLICIT_END.concat CALL_CLOSERS.concat CONTROL_IN_IMPLICIT
    + +
  • + diff --git a/docs/v2/browser-compiler/coffeescript.js b/docs/v2/browser-compiler/coffeescript.js index 84c21a49..ca71ad53 100644 --- a/docs/v2/browser-compiler/coffeescript.js +++ b/docs/v2/browser-compiler/coffeescript.js @@ -1,8 +1,8 @@ /** - * CoffeeScript Compiler v2.0.0-beta3 + * CoffeeScript Compiler v2.0.0-beta4 * http://coffeescript.org * * Copyright 2011, Jeremy Ashkenas * Released under the MIT License */ -var _get=function e(a,t,o){null===a&&(a=Function.prototype);var n=Object.getOwnPropertyDescriptor(a,t);if(n===void 0){var r=Object.getPrototypeOf(a);return null===r?void 0:e(r,t,o)}if("value"in n)return n.value;var i=n.get;return void 0===i?void 0:i.call(o)},_slicedToArray=function(){function e(e,a){var t=[],o=!0,n=!1,r;try{for(var i=e[Symbol.iterator](),s;!(o=(s=i.next()).done)&&(t.push(s.value),!(a&&t.length===a));o=!0);}catch(e){n=!0,r=e}finally{try{!o&&i["return"]&&i["return"]()}finally{if(n)throw r}}return t}return function(a,t){if(Array.isArray(a))return a;if(Symbol.iterator in Object(a))return e(a,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function e(e,a){for(var t=0,o;t=7.6.0"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",browser:"./lib/coffeescript/browser",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"babel-core":"~6.25.0","babel-preset-babili":"~0.1.4","babel-preset-env":"~1.6.0",babili:"^0.1.4",docco:"~0.7.0","highlight.js":"~9.12.0",jison:">=0.4.17","markdown-it":"~8.3.1",underscore:"~1.8.3",webpack:"~3.2.0"},dependencies:{}}}(),e["./helpers"]=function(){var e={};return function(){var a,t,o,n,r,i,s,l;e.starts=function(e,a,t){return a===e.substr(t,a.length)},e.ends=function(e,a,t){var o;return o=a.length,a===e.substr(e.length-o-(t||0),o)},e.repeat=s=function(e,a){var t;for(t="";0>>=1,e+=e;return t},e.compact=function(e){var a,t,o,n;for(n=[],a=0,o=e.length;ar)return n.returnOnNegativeLevel?void 0:o.call(this,l,e);e+=1}return e-1}},{key:"removeLeadingNewlines",value:function(){var e,a,t,o,n,r,i,s,l;for(i=this.tokens,e=a=0,n=i.length;ar;o=0<=r?++n:--n)if(null!=l[o]&&("string"==typeof l[o]&&(l[o]=[l[o]]),i=this.tag(e+o+a),0>t.call(l[o],i)))return-1;return e+o+a-1}},{key:"looksObjectish",value:function(e){var a,o;return-1!==this.indexOfTag(e,"@",null,":")||-1!==this.indexOfTag(e,null,":")||(o=this.indexOfTag(e,c),-1!==o&&(a=null,this.detectEnd(o+1,function(e){var a;return a=e[0],0<=t.call(p,a)},function(e,t){return a=t}),":"===this.tag(a+1)))}},{key:"findTagsBackwards",value:function(e,a){var o,n,r,i,s,l,d;for(o=[];0<=e&&(o.length||(i=this.tag(e),0>t.call(a,i))&&((s=this.tag(e),0>t.call(c,s))||this.tokens[e].generated)&&(l=this.tag(e),0>t.call(f,l)));)(n=this.tag(e),0<=t.call(p,n))&&o.push(this.tag(e)),(r=this.tag(e),0<=t.call(c,r))&&o.length&&o.pop(),e-=1;return d=this.tag(e),0<=t.call(a,d)}},{key:"addImplicitBracesAndParens",value:function(){var e,a;return e=[],a=null,this.scanTokens(function(o,d,n){var i=this,y=_slicedToArray(o,1),T,v,b,$,_,C,D,E,x,I,S,A,k,R,O,L,w,F,P,j,s,M,V,U,B,G,H,X,W,Y;Y=y[0];var q=F=0"!==w&&"->"!==w&&"["!==w&&"("!==w&&","!==w&&"{"!==w&&"ELSE"!==w&&"="!==w)for(;C()||E()&&":"!==w;)C()?T():v();return D()&&e.pop(),e.push([Y,d]),b(1)}if(0<=t.call(c,Y))return e.push([Y,d]),b(1);if(0<=t.call(p,Y)){for(;_();)C()?T():E()?v():e.pop();a=e.pop()}if((0<=t.call(h,Y)&&o.spaced||"?"===Y&&0t.call(p,e)):return a[1];case"@"!==this.tag(d-2):return d-2;default:return d-1;}}.call(this),W=0===j||(P=this.tag(j-1),0<=t.call(f,P))||n[j-1].newLine,B()){var Z=B(),Q=_slicedToArray(Z,2);if(U=Q[0],M=Q[1],("{"===U||"INDENT"===U&&"{"===this.tag(M-1))&&(W||","===this.tag(j-1)||"{"===this.tag(j-1)))return b(1)}return X(j,!!W),b(2)}if(0<=t.call(f,Y))for(A=e.length-1;0<=A;A+=-1)V=e[A],S(V)&&(V[2].sameLine=!1);if(k="OUTDENT"===w||F.newLine,0<=t.call(m,Y)||0<=t.call(r,Y)&&k)for(;_();){var ee=B(),ae=_slicedToArray(ee,3);U=ae[0],M=ae[1];var te=ae[2];if(s=te.sameLine,W=te.startsLine,C()&&","!==w)T();else if(E()&&s&&"TERMINATOR"!==Y&&":"!==w&&!(("POST_IF"===Y||"FOR"===Y||"WHILE"===Y||"UNTIL"===Y)&&W&&$(d+1)))v();else if(E()&&"TERMINATOR"===Y&&","!==w&&!(W&&this.looksObjectish(d+1)))v();else break}if(","===Y&&!this.looksObjectish(d+1)&&E()&&("TERMINATOR"!==R||!this.looksObjectish(d+2)))for(L="OUTDENT"===R?1:0;E();)v(d+L);return b(1)})}},{key:"enforceValidCSXAttributes",value:function(){return this.scanTokens(function(e,a,t){var o,n;return e.csxColon&&(o=t[a+1],"STRING_START"!==(n=o[0])&&"STRING"!==n&&"("!==n&&D("expected wrapped or quoted JSX attribute",o[2])),1})}},{key:"rescueStowawayComments",value:function(){var e,a,o;return e=function(e,a,t,o){return"TERMINATOR"!==t[a][0]&&t[o](N("TERMINATOR","\n",t[a])),t[o](N("JS","",t[a],e))},o=function(a,o,n){var r,i,l,d,p,c,u;for(i=o;i!==n.length&&(p=n[i][0],0<=t.call(s,p));)i++;if(!(i===n.length||(c=n[i][0],0<=t.call(s,c)))){for(u=a.comments,l=0,d=u.length;l"!==s&&"=>"!==s)||(l=e[0],0<=t.call(r,l))&&(this.tokens[a-1].newLine||"OUTDENT"===this.tokens[a-1][0])},e=function(e,a){return this.tokens.splice(","===this.tag(a-1)?a-1:a,0,n)},this.scanTokens(function(r,l,i){var p=_slicedToArray(r,1),c,u,m,h,g;if(g=p[0],"TERMINATOR"===g){if("ELSE"===this.tag(l+1)&&"OUTDENT"!==this.tag(l-1))return i.splice.apply(i,[l,1].concat(_toConsumableArray(this.indentation()))),1;if(m=this.tag(l+1),0<=t.call(d,m))return i.splice(l,1),0}if("CATCH"===g)for(c=u=1;2>=u;c=++u)if("OUTDENT"===(h=this.tag(l+c))||"TERMINATOR"===h||"FINALLY"===h)return i.splice.apply(i,[l+c,0].concat(_toConsumableArray(this.indentation()))),2+c;if(("->"===g||"=>"===g)&&(","===this.tag(l+1)||"."===this.tag(l+1)&&r.newLine)){var f=this.indentation(i[l]),y=_slicedToArray(f,2);return o=y[0],n=y[1],i.splice(l+1,0,o,n),1}if(0<=t.call(v,g)&&"INDENT"!==this.tag(l+1)&&("ELSE"!==g||"IF"!==this.tag(l+1))){s=g;var k=this.indentation(i[l]),T=_slicedToArray(k,2);return o=T[0],n=T[1],"THEN"===s&&(o.fromThen=!0),i.splice(l+1,0,o),this.detectEnd(l+2,a,e),"THEN"===g&&i.splice(l,1),1}return 1})}},{key:"tagPostfixConditionals",value:function(){var e,a,o;return o=null,a=function(e,a){var o=_slicedToArray(e,1),n,r;r=o[0];var i=_slicedToArray(this.tokens[a-1],1);return n=i[0],"TERMINATOR"===r||"INDENT"===r&&0>t.call(v,n)},e=function(e){if("INDENT"!==e[0]||e.generated&&!e.fromThen)return o[0]="POST_"+o[0]},this.scanTokens(function(t,n){return"IF"===t[0]?(o=t,this.detectEnd(n+1,a,e),1):1})}},{key:"indentation",value:function(e){var a,t;return a=["INDENT",2],t=["OUTDENT",2],e?(a.generated=t.generated=!0,a.origin=t.origin=e):a.explicit=t.explicit=!0,[a,t]}},{key:"tag",value:function(e){var a;return null==(a=this.tokens[e])?void 0:a[0]}}]),e}();return e.prototype.generate=N,e}(),n=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],a.INVERSES=i={},c=[],p=[],(b=0,$=n.length);b<$;b++){var E=_slicedToArray(n[b],2);k=E[0],C=E[1],c.push(i[C]=k),p.push(i[k]=C)}d=["CATCH","THEN","ELSE","FINALLY"].concat(p),h=["IDENTIFIER","PROPERTY","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],u=["IDENTIFIER","CSX_TAG","PROPERTY","NUMBER","INFINITY","NAN","STRING","STRING_START","REGEX","REGEX_START","JS","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","UNDEFINED","NULL","BOOL","UNARY","YIELD","AWAIT","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],g=["+","-"],m=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],v=["ELSE","->","=>","TRY","FINALLY","THEN"],T=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],f=["TERMINATOR","INDENT","OUTDENT"],r=[".","?.","::","?::"],l=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],s=["(",")","[","]","{","}",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","LEADING_WHEN","OUTDENT","PARAM_START","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(g.concat(m.concat(r.concat(l))))}.call(this),{exports:a}.exports}(),e["./lexer"]=function(){var a={};return function(){var t=[].indexOf,n=e("./rewriter"),r,i,s,l,d,p,c,u,m,h,g,f,y,k,T,v,N,b,$,_,C,D,E,x,I,S,A,R,O,L,w,F,P,j,M,V,U,B,G,H,X,W,Y,q,z,K,J,Z,Q,ee,ae,te,oe,ne,re,ie,se,le,de,pe,ce,ue,me,he,ge,fe,ye,ke,Te,ve,Ne,be,$e;z=n.Rewriter,S=n.INVERSES;var _e=e("./helpers");he=_e.count,be=_e.starts,me=_e.compact,Ne=_e.repeat,ge=_e.invertLiterate,ve=_e.merge,ue=_e.attachCommentsToNode,Te=_e.locationDataToString,$e=_e.throwSyntaxError,a.Lexer=F=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"tokenize",value:function(e){var a=1this.indent){if(i)return this.indebt=s-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=s,this.indentLiteral=r,t.length;a=s-this.indent+this.outdebt,this.token("INDENT",a,t.length-s,s),this.indents.push(a),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=s,this.indentLiteral=r}else st.call(m,u)))))return 0;var f=d,T=_slicedToArray(f,3);return l=T[0],s=T[1],o=T[2],p=this.token("CSX_TAG",s,1,s.length),this.token("CALL_START","("),this.token("{","{"),this.ends.push({tag:"/>",origin:p,name:s}),this.csxDepth++,s.length+1}if(n=this.atCSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("}","}",0,2),this.token("CALL_END",")",0,2),this.csxDepth--,2;if("{"===i)return h=this.token("(","("),this.ends.push({tag:"}",origin:h}),1;if(">"===i){this.pair("/>"),p=this.token("}","}"),this.token(",",",");var v=this.matchWithInterpolations(I,">",""})}),d=y.exec(this.chunk.slice(r)),d&&d[0]===n.name||this.error("expected corresponding CSX closing tag for "+n.name,n.origin[2]),a=r+n.name.length,">"!==this.chunk[a]&&this.error("missing closing > after tag name",{offset:a,length:1}),this.token("CALL_END",")",r,n.name.length+1),this.csxDepth--,a+1}return 0}return this.atCSXTag(1)?"}"===i?(this.pair(i),this.token(")",")"),this.token(",",","),1):0:0}},{key:"atCSXTag",value:function(){var e=0"===(null==t?void 0:t.tag)&&t}},{key:"literalToken",value:function(){var e,a,o,n,r,i,d,p,c,u,m,f;if(e=U.exec(this.chunk)){var y=e,k=_slicedToArray(y,1);f=k[0],l.test(f)&&this.tagParameters()}else f=this.chunk.charAt(0);if(u=f,n=this.prev(),n&&0<=t.call(["="].concat(_toConsumableArray(g)),f)&&(c=!1,"="!==f||"||"!==(r=n[1])&&"&&"!==r||n.spaced||(n[0]="COMPOUND_ASSIGN",n[1]+="=",n=this.tokens[this.tokens.length-2],c=!0),n&&"PROPERTY"!==n[0]&&(o=null==(i=n.origin)?n:i,a=ye(n[1],o[1]),a&&this.error(a,o[2])),c))return f.length;if("{"===f&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===f?this.importSpecifierList=!1:"{"===f&&"EXPORT"===(null==n?void 0:n[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===f&&(this.exportSpecifierList=!1),";"===f)this.seenFor=this.seenImport=this.seenExport=!1,u="TERMINATOR";else if("*"===f&&"EXPORT"===n[0])u="EXPORT_ALL";else if(0<=t.call(P,f))u="MATH";else if(0<=t.call(h,f))u="COMPARE";else if(0<=t.call(g,f))u="COMPOUND_ASSIGN";else if(0<=t.call(ie,f))u="UNARY";else if(0<=t.call(se,f))u="UNARY_MATH";else if(0<=t.call(K,f))u="SHIFT";else if("?"===f&&(null==n?void 0:n.spaced))u="BIN?";else if(n&&!n.spaced)if("("===f&&(d=n[0],0<=t.call(s,d)))"?"===n[0]&&(n[0]="FUNC_EXIST"),u="CALL_START";else if("["===f&&(p=n[0],0<=t.call(x,p)))switch(u="INDEX_START",n[0]){case"?":n[0]="INDEX_SOAK";}return m=this.makeToken(u,f),"("===f||"{"===f||"["===f?this.ends.push({tag:S[f],origin:m}):")"===f||"}"===f||"]"===f?this.pair(f):void 0,(this.tokens.push(this.makeToken(u,f)),f.length)}},{key:"tagParameters",value:function(){var e,a,t,o,n;if(")"!==this.tag())return this;for(t=[],n=this.tokens,e=n.length,a=n[--e],a[0]="PARAM_END";o=n[--e];)switch(o[0]){case")":t.push(o);break;case"(":case"CALL_START":if(t.length)t.pop();else return"("===o[0]?(o[0]="PARAM_START",this):(a[0]="CALL_END",this);}return this}},{key:"closeIndentation",value:function(){return this.outdentToken(this.indent)}},{key:"matchWithInterpolations",value:function(a,t,o,n){var r,i,s,l,d,p,c,u,m,h,g,f,y,k,T,v,N,b;if(null==o&&(o=t),null==n&&(n=/^#\{/),b=[],f=t.length,this.chunk.slice(0,f)!==t)return null;for(v=this.chunk.slice(f);;){var $=a.exec(v),_=_slicedToArray($,1);if(N=_[0],this.validateEscapes(N,{isRegex:"/"===t.charAt(0),offsetInChunk:f}),b.push(this.makeToken("NEOSTRING",N,f)),v=v.slice(N.length),f+=N.length,!(h=n.exec(v)))break;var C=h,D=_slicedToArray(C,1);c=D[0],p=c.length-1;var E=this.getLineAndColumnFromChunk(f+p),x=_slicedToArray(E,2);m=x[0],s=x[1],T=v.slice(p);var I=new e().tokenize(T,{line:m,column:s,untilBalanced:!0});g=I.tokens,d=I.index,d+=p,r="}"===v[d-1],r&&(y=g[0],i=g[g.length-1],y[0]=y[1]="(",i[0]=i[1]=")",i.origin=["","end of interpolation",i[2]]),"TERMINATOR"===(null==(k=g[1])?void 0:k[0])&&g.splice(1,1),r||(y=this.makeToken("(","(",f,0),i=this.makeToken(")",")",f+d,0),g=[y].concat(_toConsumableArray(g),[i])),b.push(["TOKENS",g]),v=v.slice(d),f+=d}return v.slice(0,o.length)!==o&&this.error("missing "+o,{length:t.length}),l=b[0],u=b[b.length-1],l[2].first_column-=t.length,"\n"===u[1].substr(-1)?(u[2].last_line+=1,u[2].last_column=o.length-1):u[2].last_column+=o.length,0===u[1].length&&(u[2].last_column-=1),{tokens:b,index:f+o.length}}},{key:"mergeInterpolationTokens",value:function(e,a,t){var o,n,r,s,i,l,d,p,c,u,m,h,g,f,y;for(1r&&(u=this.token("+","+"),u[2]={first_line:p[2].first_line,first_column:p[2].first_column,last_line:p[2].first_line,last_column:p[2].first_column}),(k=this.tokens).push.apply(k,_toConsumableArray(f))}if(c)return l=e[e.length-1],c.origin=["STRING",null,{first_line:c[2].first_line,first_column:c[2].first_column,last_line:l[2].last_line,last_column:l[2].last_column}],c[2]=c.origin[2],m=this.token("STRING_END",")"),m[2]={first_line:l[2].last_line,first_column:l[2].last_column,last_line:l[2].last_line,last_column:l[2].last_column}}},{key:"pair",value:function(e){var a,t,o,n,r;return o=this.ends,t=o[o.length-1],e===(r=null==t?void 0:t.tag)?this.ends.pop():("OUTDENT"!==r&&this.error("unmatched "+e),n=this.indents,a=n[n.length-1],this.outdentToken(a,!0),this.pair(e))}},{key:"getLineAndColumnFromChunk",value:function(e){var a,t,o,n,r;return 0===e?[this.chunkLine,this.chunkColumn]:(r=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),o=he(r,"\n"),a=this.chunkColumn,0e)?n(e):(a=o((e-65536)/1024)+55296,t=(e-65536)%1024+56320,""+n(a)+n(t))}},{key:"replaceUnicodeCodePointEscapes",value:function(e,a){var o=this,n;return n=null!=a.flags&&0>t.call(a.flags,"u"),e.replace(de,function(e,t,r,i){var s;return t?t:(s=parseInt(r,16),1114111t.call([].concat(_toConsumableArray(R),_toConsumableArray(c)),e):return"keyword '"+a+"' can't be assigned";case 0>t.call(Z,e):return"'"+a+"' can't be assigned";case 0>t.call(q,e):return"reserved word '"+a+"' can't be assigned";default:return!1;}},a.isUnassignable=ye,fe=function(e){var a;return"IDENTIFIER"===e[0]?("from"===e[1]&&(e[1][0]="IDENTIFIER",!0),!0):"FOR"!==e[0]&&("{"===(a=e[1])||"["===a||","===a||":"===a?!1:!0)},R=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],c=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],p={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},d=function(){var e;for(ke in e=[],p)e.push(ke);return e}(),c=c.concat(d),q=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],Z=["arguments","eval"],a.JS_FORBIDDEN=R.concat(q).concat(Z),r=65279,D=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,y=/^(?![\d<])((?:(?!\s)[\.\-$\w\x7f-\uffff])+)/,f=/^(?!\d)((?:(?!\s)[\-$\w\x7f-\uffff])+)([^\S]*=(?!=))?/,V=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,U=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,ce=/^[^\n\S]+/,u=/^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,l=/^[-=]>/,j=/^(?:\n[^\n\S]*)+/,A=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,C=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,oe=/^(?:'''|"""|'|")/,te=/^(?:[^\\']|\\[\s\S])*/,Q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,b=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,v=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,I=/^(?:[^\{<])*/,k=/^(?:\{|<(?!\/))/,ae=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,J=/\s*\n\s*/g,N=/\n+([^\n\S]*)(?=\S)/g,G=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,H=/^\w*/,pe=/^(?!.*(.).*\1)[imguy]*$/,$=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/,_=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,X=/^(\/|\/{3}\s*)(\*)/,B=/^\/=?\s/,T=/\*\//,w=/^\s*(?:,|\??\.(?![.\d])|::)/,ee=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,W=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,de=/(\\\\)|\\u\{([\da-fA-F]+)\}/g,O=/^[^\n\S]*\n/,ne=/\n[^\n\S]*$/,re=/\s+$/,g=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],ie=["NEW","TYPEOF","DELETE","DO"],se=["!","~"],K=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],P=["*","/","%","//","%%"],Y=["IN","OF","INSTANCEOF"],i=["TRUE","FALSE"],s=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER"],x=s.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),m=["IDENTIFIER",")","]","NUMBER"],M=x.concat(["++","--"]),L=["INDENT","OUTDENT","TERMINATOR"],E=[")","}","]"],le=["\\",".","?.","?::","UNARY","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS","DEFAULT"]}.call(this),{exports:a}.exports}(),e["./parser"]=function(){var a={},t={exports:a},o=function(){function e(){this.yy={}}var a=function(e,a,t,o){for(t=t||{},o=e.length;o--;t[e[o]]=a);return t},t=[1,20],o=[1,50],n=[1,84],r=[1,85],i=[1,80],s=[1,86],l=[1,87],d=[1,82],p=[1,83],c=[1,57],u=[1,59],m=[1,60],h=[1,61],g=[1,62],f=[1,63],y=[1,66],k=[1,51],T=[1,38],v=[1,32],N=[1,69],b=[1,70],$=[1,79],_=[1,48],C=[1,52],D=[1,53],E=[1,67],x=[1,68],I=[1,65],S=[1,43],A=[1,49],R=[1,64],O=[1,74],L=[1,75],w=[1,76],F=[1,77],P=[1,47],j=[1,73],M=[1,34],V=[1,35],U=[1,36],B=[1,37],G=[1,39],H=[1,40],X=[1,88],W=[1,6,32,43,137],Y=[1,103],q=[1,91],z=[1,90],K=[1,89],J=[1,92],Z=[1,93],Q=[1,94],ee=[1,95],ae=[1,96],te=[1,97],oe=[1,98],ne=[1,99],re=[1,100],ie=[1,101],se=[1,102],le=[1,106],de=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],pe=[2,187],ce=[1,112],ue=[1,117],me=[1,113],he=[1,114],ge=[1,115],fe=[1,118],ye=[1,111],ke=[1,6,32,43,137,139,141,145,162],Te=[1,6,31,32,41,42,43,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],ve=[2,114],Ne=[2,118],be=[2,92],$e=[1,123],_e=[1,128],Ce=[1,129],De=[1,131],Ee=[1,135],xe=[1,133],Ie=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Se=[2,111],Ae=[1,6,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Re=[2,27],Oe=[1,160],Le=[2,81],we=[1,163],Fe=[1,169],Pe=[1,181],je=[1,183],Me=[1,178],Ve=[1,185],Ue=[1,186],Be=[1,188],Ge=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,105,119,120,121,126,128,137,139,140,141,145,146,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],He=[2,134],Xe=[1,212],We=[1,222],Ye=[1,6,31,32,41,42,43,61,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],qe=[1,6,29,31,32,41,42,43,57,61,64,74,75,77,82,87,95,96,97,99,103,105,111,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],ze=[1,6,31,32,41,42,43,48,61,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Ke=[1,244],Je=[41,42,120],Ze=[1,254],Qe=[1,253],ea=[2,90],aa=[1,260],ta=[6,31,32,82,87],oa=[6,31,32,57,64,82,87],na=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,170,171,172,173,174,175,176,177,178,179,180],ra=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,170,172,173,174,175,176,177,178,179,180],ia=[41,42,74,75,95,96,97,99,119,120],sa=[1,280],la=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162],da=[2,79],pa=[1,294],ca=[1,296],ua=[1,301],ma=[1,303],ha=[2,208],ga=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],fa=[1,312],ya=[6,31,32,87,121,126],ka=[1,6,31,32,41,42,43,57,61,64,74,75,77,82,87,95,96,97,99,103,105,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],Ta=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,146,162],va=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,140,146,162],Na=[152,153,154],ba=[87,152,153,154],$a=[6,31,103],_a=[1,328],Ca=[6,31,32,87,103],Da=[6,31,32,61,87,103],Ea=[1,334],xa=[1,335],Ia=[6,31,32,57,61,64,74,75,87,103,120],Sa=[6,31,32,64,74,75,87,103,120],Aa=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,172,173,174,175,176,177,178,179,180],Ra=[1,6,31,32,41,42,43,48,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Oa=[13,28,34,35,39,41,42,45,46,50,51,52,53,54,55,71,77,78,79,80,84,85,101,104,106,114,123,124,125,131,135,136,139,141,143,145,155,161,163,164,165,166,167,168],La=[2,197],wa=[6,31,32],Fa=[2,91],Pa=[1,353],ja=[1,354],Ma=[1,6,31,32,43,64,77,82,87,103,121,126,128,133,134,137,139,140,141,145,146,157,159,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Va=[32,157,159],Ua=[1,6,32,43,64,77,82,87,103,121,126,128,137,140,146,162],Ba=[1,382],Ga=[1,388],Ha=[1,6,32,43,137,162],Xa=[2,106],Wa=[1,399],Ya=[1,400],qa=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,157,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],za=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,141,145,146,162],Ka=[1,413],Ja=[1,414],Za=[6,31,32,103],Qa=[6,31,32,87],et=[1,6,31,32,43,64,77,82,87,103,121,126,128,133,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],at=[31,87],tt=[1,443],ot=[1,444],nt=[1,450],rt=[1,451],it={trace:function(){},yy:{},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,Code:17,Operation:18,Assign:19,If:20,Try:21,While:22,For:23,Switch:24,Class:25,Throw:26,Yield:27,YIELD:28,FROM:29,Block:30,INDENT:31,OUTDENT:32,Identifier:33,IDENTIFIER:34,CSX_TAG:35,Property:36,PROPERTY:37,AlphaNumeric:38,NUMBER:39,String:40,STRING:41,STRING_START:42,STRING_END:43,Regex:44,REGEX:45,REGEX_START:46,Invocation: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,ObjRestValue:60,":":61,SimpleObjAssignable:62,ThisProperty:63,"...":64,ObjSpreadExpr:65,ObjSpreadIdentifier:66,Object:67,Parenthetical:68,Super:69,This:70,SUPER:71,Arguments:72,ObjSpreadAccessor:73,".":74,INDEX_START:75,IndexValue:76,INDEX_END:77,RETURN:78,AWAIT:79,PARAM_START:80,ParamList:81,PARAM_END:82,FuncGlyph:83,"->":84,"=>":85,OptComma:86,",":87,Param:88,ParamVar:89,Array:90,Splat:91,SimpleAssignable:92,Accessor:93,Range:94,"?.":95,"::":96,"?::":97,Index:98,INDEX_SOAK:99,Slice:100,"{":101,AssignList:102,"}":103,CLASS:104,EXTENDS:105,IMPORT:106,ImportDefaultSpecifier:107,ImportNamespaceSpecifier:108,ImportSpecifierList:109,ImportSpecifier:110,AS:111,DEFAULT:112,IMPORT_ALL:113,EXPORT:114,ExportSpecifierList:115,EXPORT_ALL:116,ExportSpecifier:117,OptFuncExist:118,FUNC_EXIST:119,CALL_START:120,CALL_END:121,ArgList:122,THIS:123,"@":124,"[":125,"]":126,RangeDots:127,"..":128,Arg:129,SimpleArgs:130,TRY:131,Catch:132,FINALLY:133,CATCH:134,THROW:135,"(":136,")":137,WhileSource:138,WHILE:139,WHEN:140,UNTIL:141,Loop:142,LOOP:143,ForBody:144,FOR:145,BY:146,ForStart:147,ForSource:148,ForVariables:149,OWN:150,ForValue:151,FORIN:152,FOROF:153,FORFROM:154,SWITCH:155,Whens:156,ELSE:157,When:158,LEADING_WHEN:159,IfBlock:160,IF:161,POST_IF:162,UNARY:163,UNARY_MATH:164,"-":165,"+":166,"--":167,"++":168,"?":169,MATH:170,"**":171,SHIFT:172,COMPARE:173,"&":174,"^":175,"|":176,"&&":177,"||":178,"BIN?":179,RELATION:180,COMPOUND_ASSIGN:181,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",13:"STATEMENT",28:"YIELD",29:"FROM",31:"INDENT",32:"OUTDENT",34:"IDENTIFIER",35:"CSX_TAG",37:"PROPERTY",39:"NUMBER",41:"STRING",42:"STRING_START",43:"STRING_END",45:"REGEX",46:"REGEX_START",48:"REGEX_END",50:"JS",51:"UNDEFINED",52:"NULL",53:"BOOL",54:"INFINITY",55:"NAN",57:"=",61:":",64:"...",71:"SUPER",74:".",75:"INDEX_START",77:"INDEX_END",78:"RETURN",79:"AWAIT",80:"PARAM_START",82:"PARAM_END",84:"->",85:"=>",87:",",95:"?.",96:"::",97:"?::",99:"INDEX_SOAK",101:"{",103:"}",104:"CLASS",105:"EXTENDS",106:"IMPORT",111:"AS",112:"DEFAULT",113:"IMPORT_ALL",114:"EXPORT",116:"EXPORT_ALL",119:"FUNC_EXIST",120:"CALL_START",121:"CALL_END",123:"THIS",124:"@",125:"[",126:"]",128:"..",131:"TRY",133:"FINALLY",134:"CATCH",135:"THROW",136:"(",137:")",139:"WHILE",140:"WHEN",141:"UNTIL",143:"LOOP",145:"FOR",146:"BY",150:"OWN",152:"FORIN",153:"FOROF",154:"FORFROM",155:"SWITCH",157:"ELSE",159:"LEADING_WHEN",161:"IF",162:"POST_IF",163:"UNARY",164:"UNARY_MATH",165:"-",166:"+",167:"--",168:"++",169:"?",170:"MATH",171:"**",172:"SHIFT",173:"COMPARE",174:"&",175:"^",176:"|",177:"&&",178:"||",179:"BIN?",180:"RELATION",181:"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],[27,1],[27,2],[27,3],[30,2],[30,3],[33,1],[33,1],[36,1],[38,1],[38,1],[40,1],[40,3],[44,1],[44,3],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[19,3],[19,4],[19,5],[58,1],[58,1],[58,3],[58,5],[58,3],[58,5],[62,1],[62,1],[62,1],[59,1],[59,1],[60,2],[60,2],[60,2],[60,2],[65,1],[65,1],[65,1],[65,1],[65,1],[65,2],[65,2],[65,2],[66,2],[66,2],[73,2],[73,3],[12,2],[12,4],[12,1],[10,3],[10,2],[11,3],[11,2],[17,5],[17,2],[83,1],[83,1],[86,0],[86,1],[81,0],[81,1],[81,3],[81,4],[81,6],[88,1],[88,2],[88,2],[88,3],[88,1],[89,1],[89,1],[89,1],[89,1],[91,2],[91,2],[92,1],[92,2],[92,1],[56,1],[56,1],[56,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[69,3],[69,4],[93,2],[93,2],[93,2],[93,2],[93,1],[93,1],[98,3],[98,2],[76,1],[76,1],[67,4],[102,0],[102,1],[102,3],[102,4],[102,6],[25,1],[25,2],[25,3],[25,4],[25,2],[25,3],[25,4],[25,5],[14,2],[14,4],[14,4],[14,5],[14,7],[14,6],[14,9],[109,1],[109,3],[109,4],[109,4],[109,6],[110,1],[110,3],[110,1],[110,3],[107,1],[108,3],[15,3],[15,5],[15,2],[15,4],[15,5],[15,6],[15,3],[15,4],[15,7],[115,1],[115,3],[115,4],[115,4],[115,6],[117,1],[117,3],[117,3],[117,1],[117,3],[47,3],[47,3],[47,3],[118,0],[118,1],[72,2],[72,4],[70,1],[70,1],[63,2],[90,2],[90,4],[127,1],[127,1],[94,5],[100,3],[100,2],[100,2],[100,1],[122,1],[122,3],[122,4],[122,4],[122,6],[129,1],[129,1],[129,1],[130,1],[130,3],[21,2],[21,3],[21,4],[21,5],[132,3],[132,3],[132,2],[26,2],[26,4],[68,3],[68,5],[138,2],[138,4],[138,2],[138,4],[22,2],[22,2],[22,2],[22,1],[142,2],[142,2],[23,2],[23,2],[23,2],[144,2],[144,4],[144,2],[147,2],[147,3],[151,1],[151,1],[151,1],[151,1],[149,1],[149,3],[148,2],[148,2],[148,4],[148,4],[148,4],[148,6],[148,6],[148,2],[148,4],[24,5],[24,7],[24,4],[24,6],[156,1],[156,2],[158,3],[158,4],[160,3],[160,5],[20,1],[20,3],[20,3],[20,3],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,5],[18,4]],performAction:function(e,a,t,o,n,r,i){var s=r.length-1;switch(n){case 1:return this.$=o.addDataToNode(o,i[s],i[s])(new o.Block);break;case 2:return this.$=r[s];break;case 3:this.$=o.addDataToNode(o,i[s],i[s])(o.Block.wrap([r[s]]));break;case 4:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].push(r[s]));break;case 5:this.$=r[s-1];break;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 36:case 41:case 43:case 53:case 58:case 59:case 60:case 61:case 62:case 67:case 68:case 69:case 70:case 71:case 90:case 91:case 102:case 103:case 104:case 105:case 110:case 111:case 114:case 119:case 128:case 208:case 209:case 211:case 242:case 243:case 261:case 267:this.$=r[s];break;case 12:this.$=o.addDataToNode(o,i[s],i[s])(new o.StatementLiteral(r[s]));break;case 27:this.$=o.addDataToNode(o,i[s],i[s])(new o.Op(r[s],new o.Value(new o.Literal(""))));break;case 28:case 271:case 272:case 275:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op(r[s-1],r[s]));break;case 29:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op(r[s-2].concat(r[s-1]),r[s]));break;case 30:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Block);break;case 31:case 78:case 129:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-1]);break;case 32:this.$=o.addDataToNode(o,i[s],i[s])(new o.IdentifierLiteral(r[s]));break;case 33:this.$=o.addDataToNode(o,i[s],i[s])(new o.CSXTag(r[s]));break;case 34:this.$=o.addDataToNode(o,i[s],i[s])(new o.PropertyName(r[s]));break;case 35:this.$=o.addDataToNode(o,i[s],i[s])(new o.NumberLiteral(r[s]));break;case 37:this.$=o.addDataToNode(o,i[s],i[s])(new o.StringLiteral(r[s]));break;case 38:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.StringWithInterpolations(r[s-1]));break;case 39:this.$=o.addDataToNode(o,i[s],i[s])(new o.RegexLiteral(r[s]));break;case 40:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.RegexWithInterpolations(r[s-1].args));break;case 42:this.$=o.addDataToNode(o,i[s],i[s])(new o.PassthroughLiteral(r[s]));break;case 44:this.$=o.addDataToNode(o,i[s],i[s])(new o.UndefinedLiteral(r[s]));break;case 45:this.$=o.addDataToNode(o,i[s],i[s])(new o.NullLiteral(r[s]));break;case 46:this.$=o.addDataToNode(o,i[s],i[s])(new o.BooleanLiteral(r[s]));break;case 47:this.$=o.addDataToNode(o,i[s],i[s])(new o.InfinityLiteral(r[s]));break;case 48:this.$=o.addDataToNode(o,i[s],i[s])(new o.NaNLiteral(r[s]));break;case 49:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(r[s-2],r[s]));break;case 50:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Assign(r[s-3],r[s]));break;case 51:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(r[s-4],r[s-1]));break;case 52:case 108:case 112:case 113:case 115:case 116:case 117:case 118:case 120:case 244:case 245:this.$=o.addDataToNode(o,i[s],i[s])(new o.Value(r[s]));break;case 54:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),r[s],"object",{operatorToken:o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1]))}));break;case 55:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(o.addDataToNode(o,i[s-4])(new o.Value(r[s-4])),r[s-1],"object",{operatorToken:o.addDataToNode(o,i[s-3])(new o.Literal(r[s-3]))}));break;case 56:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),r[s],null,{operatorToken:o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1]))}));break;case 57:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(o.addDataToNode(o,i[s-4])(new o.Value(r[s-4])),r[s-1],null,{operatorToken:o.addDataToNode(o,i[s-3])(new o.Literal(r[s-3]))}));break;case 63:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(new o.Value(r[s-1])));break;case 64:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(new o.Value(r[s])));break;case 65:case 106:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(r[s-1]));break;case 66:case 107:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(r[s]));break;case 72:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.SuperCall(o.addDataToNode(o,i[s-1])(new o.Super),r[s],!1,r[s-1]));break;case 73:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Call(new o.Value(r[s-1]),r[s]));break;case 74:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Call(r[s-1],r[s]));break;case 75:case 76:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Value(r[s-1]).add(r[s]));break;case 77:case 123:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Access(r[s]));break;case 79:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Return(r[s]));break;case 80:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Return(new o.Value(r[s-1])));break;case 81:this.$=o.addDataToNode(o,i[s],i[s])(new o.Return);break;case 82:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.YieldReturn(r[s]));break;case 83:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.YieldReturn);break;case 84:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.AwaitReturn(r[s]));break;case 85:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.AwaitReturn);break;case 86:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Code(r[s-3],r[s],r[s-1]));break;case 87:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Code([],r[s],r[s-1]));break;case 88:case 89:this.$=o.addDataToNode(o,i[s],i[s])(new o.FuncGlyph(r[s]));break;case 92:case 134:this.$=o.addDataToNode(o,i[s],i[s])([]);break;case 93:case 135:case 154:case 174:case 203:case 246:this.$=o.addDataToNode(o,i[s],i[s])([r[s]]);break;case 94:case 136:case 155:case 175:case 204:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].concat(r[s]));break;case 95:case 137:case 156:case 176:case 205:this.$=o.addDataToNode(o,i[s-3],i[s])(r[s-3].concat(r[s]));break;case 96:case 138:case 158:case 178:case 207:this.$=o.addDataToNode(o,i[s-5],i[s])(r[s-5].concat(r[s-2]));break;case 97:this.$=o.addDataToNode(o,i[s],i[s])(new o.Param(r[s]));break;case 98:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Param(r[s-1],null,!0));break;case 99:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Param(r[s],null,!0));break;case 100:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Param(r[s-2],r[s]));break;case 101:case 210:this.$=o.addDataToNode(o,i[s],i[s])(new o.Expansion);break;case 109:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].add(r[s]));break;case 121:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Super(o.addDataToNode(o,i[s])(new o.Access(r[s])),[],!1,r[s-2]));break;case 122:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Super(o.addDataToNode(o,i[s-1])(new o.Index(r[s-1])),[],!1,r[s-3]));break;case 124:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Access(r[s],"soak"));break;case 125:this.$=o.addDataToNode(o,i[s-1],i[s])([o.addDataToNode(o,i[s-1])(new o.Access(new o.PropertyName("prototype"))),o.addDataToNode(o,i[s])(new o.Access(r[s]))]);break;case 126:this.$=o.addDataToNode(o,i[s-1],i[s])([o.addDataToNode(o,i[s-1])(new o.Access(new o.PropertyName("prototype"),"soak")),o.addDataToNode(o,i[s])(new o.Access(r[s]))]);break;case 127:this.$=o.addDataToNode(o,i[s],i[s])(new o.Access(new o.PropertyName("prototype")));break;case 130:this.$=o.addDataToNode(o,i[s-1],i[s])(o.extend(r[s],{soak:!0}));break;case 131:this.$=o.addDataToNode(o,i[s],i[s])(new o.Index(r[s]));break;case 132:this.$=o.addDataToNode(o,i[s],i[s])(new o.Slice(r[s]));break;case 133:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Obj(r[s-2],r[s-3].generated));break;case 139:this.$=o.addDataToNode(o,i[s],i[s])(new o.Class);break;case 140:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Class(null,null,r[s]));break;case 141:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Class(null,r[s]));break;case 142:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Class(null,r[s-1],r[s]));break;case 143:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Class(r[s]));break;case 144:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Class(r[s-1],null,r[s]));break;case 145:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Class(r[s-2],r[s]));break;case 146:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Class(r[s-3],r[s-1],r[s]));break;case 147:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.ImportDeclaration(null,r[s]));break;case 148:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-2],null),r[s]));break;case 149:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ImportDeclaration(new o.ImportClause(null,r[s-2]),r[s]));break;case 150:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList([])),r[s]));break;case 151:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList(r[s-4])),r[s]));break;case 152:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-4],r[s-2]),r[s]));break;case 153:this.$=o.addDataToNode(o,i[s-8],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-7],new o.ImportSpecifierList(r[s-4])),r[s]));break;case 157:case 177:case 190:case 206:this.$=o.addDataToNode(o,i[s-3],i[s])(r[s-2]);break;case 159:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportSpecifier(r[s]));break;case 160:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportSpecifier(r[s-2],r[s]));break;case 161:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportSpecifier(new o.Literal(r[s])));break;case 162:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 163:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportDefaultSpecifier(r[s]));break;case 164:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportNamespaceSpecifier(new o.Literal(r[s-2]),r[s]));break;case 165:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList([])));break;case 166:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-2])));break;case 167:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.ExportNamedDeclaration(r[s]));break;case 168:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-2],r[s],null,{moduleDeclaration:"export"})));break;case 169:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-3],r[s],null,{moduleDeclaration:"export"})));break;case 170:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-4],r[s-1],null,{moduleDeclaration:"export"})));break;case 171:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportDefaultDeclaration(r[s]));break;case 172:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ExportAllDeclaration(new o.Literal(r[s-2]),r[s]));break;case 173:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-4]),r[s]));break;case 179:this.$=o.addDataToNode(o,i[s],i[s])(new o.ExportSpecifier(r[s]));break;case 180:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(r[s-2],r[s]));break;case 181:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(r[s-2],new o.Literal(r[s])));break;case 182:this.$=o.addDataToNode(o,i[s],i[s])(new o.ExportSpecifier(new o.Literal(r[s])));break;case 183:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 184:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.TaggedTemplateCall(r[s-2],r[s],r[s-1]));break;case 185:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Call(r[s-2],r[s],r[s-1]));break;case 186:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.SuperCall(o.addDataToNode(o,i[s-2])(new o.Super),r[s],r[s-1],r[s-2]));break;case 187:this.$=o.addDataToNode(o,i[s],i[s])(!1);break;case 188:this.$=o.addDataToNode(o,i[s],i[s])(!0);break;case 189:this.$=o.addDataToNode(o,i[s-1],i[s])([]);break;case 191:case 192:this.$=o.addDataToNode(o,i[s],i[s])(new o.Value(new o.ThisLiteral(r[s])));break;case 193:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Value(o.addDataToNode(o,i[s-1])(new o.ThisLiteral(r[s-1])),[o.addDataToNode(o,i[s])(new o.Access(r[s]))],"this"));break;case 194:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Arr([]));break;case 195:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Arr(r[s-2]));break;case 196:this.$=o.addDataToNode(o,i[s],i[s])("inclusive");break;case 197:this.$=o.addDataToNode(o,i[s],i[s])("exclusive");break;case 198:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Range(r[s-3],r[s-1],r[s-2]));break;case 199:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Range(r[s-2],r[s],r[s-1]));break;case 200:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Range(r[s-1],null,r[s]));break;case 201:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Range(null,r[s],r[s-1]));break;case 202:this.$=o.addDataToNode(o,i[s],i[s])(new o.Range(null,null,r[s]));break;case 212:this.$=o.addDataToNode(o,i[s-2],i[s])([].concat(r[s-2],r[s]));break;case 213:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Try(r[s]));break;case 214:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Try(r[s-1],r[s][0],r[s][1]));break;case 215:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Try(r[s-2],null,null,r[s]));break;case 216:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Try(r[s-3],r[s-2][0],r[s-2][1],r[s]));break;case 217:this.$=o.addDataToNode(o,i[s-2],i[s])([r[s-1],r[s]]);break;case 218:this.$=o.addDataToNode(o,i[s-2],i[s])([o.addDataToNode(o,i[s-1])(new o.Value(r[s-1])),r[s]]);break;case 219:this.$=o.addDataToNode(o,i[s-1],i[s])([null,r[s]]);break;case 220:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Throw(r[s]));break;case 221:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Throw(new o.Value(r[s-1])));break;case 222:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Parens(r[s-1]));break;case 223:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Parens(r[s-2]));break;case 224:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(r[s]));break;case 225:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.While(r[s-2],{guard:r[s]}));break;case 226:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(r[s],{invert:!0}));break;case 227:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.While(r[s-2],{invert:!0,guard:r[s]}));break;case 228:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].addBody(r[s]));break;case 229:case 230:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s].addBody(o.addDataToNode(o,i[s-1])(o.Block.wrap([r[s-1]]))));break;case 231:this.$=o.addDataToNode(o,i[s],i[s])(r[s]);break;case 232:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(o.addDataToNode(o,i[s-1])(new o.BooleanLiteral("true"))).addBody(r[s]));break;case 233:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(o.addDataToNode(o,i[s-1])(new o.BooleanLiteral("true"))).addBody(o.addDataToNode(o,i[s])(o.Block.wrap([r[s]]))));break;case 234:case 235:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.For(r[s-1],r[s]));break;case 236:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.For(r[s],r[s-1]));break;case 237:this.$=o.addDataToNode(o,i[s-1],i[s])({source:o.addDataToNode(o,i[s])(new o.Value(r[s]))});break;case 238:this.$=o.addDataToNode(o,i[s-3],i[s])({source:o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),step:r[s]});break;case 239:this.$=o.addDataToNode(o,i[s-1],i[s])(function(){return r[s].own=r[s-1].own,r[s].ownTag=r[s-1].ownTag,r[s].name=r[s-1][0],r[s].index=r[s-1][1],r[s]}());break;case 240:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s]);break;case 241:this.$=o.addDataToNode(o,i[s-2],i[s])(function(){return r[s].own=!0,r[s].ownTag=o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1])),r[s]}());break;case 247:this.$=o.addDataToNode(o,i[s-2],i[s])([r[s-2],r[s]]);break;case 248:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s]});break;case 249:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s],object:!0});break;case 250:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s]});break;case 251:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s],object:!0});break;case 252:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],step:r[s]});break;case 253:this.$=o.addDataToNode(o,i[s-5],i[s])({source:r[s-4],guard:r[s-2],step:r[s]});break;case 254:this.$=o.addDataToNode(o,i[s-5],i[s])({source:r[s-4],step:r[s-2],guard:r[s]});break;case 255:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s],from:!0});break;case 256:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s],from:!0});break;case 257:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Switch(r[s-3],r[s-1]));break;case 258:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.Switch(r[s-5],r[s-3],r[s-1]));break;case 259:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Switch(null,r[s-1]));break;case 260:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.Switch(null,r[s-3],r[s-1]));break;case 262:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].concat(r[s]));break;case 263:this.$=o.addDataToNode(o,i[s-2],i[s])([[r[s-1],r[s]]]);break;case 264:this.$=o.addDataToNode(o,i[s-3],i[s])([[r[s-2],r[s-1]]]);break;case 265:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s-1],r[s],{type:r[s-2]}));break;case 266:this.$=o.addDataToNode(o,i[s-4],i[s])(r[s-4].addElse(o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s-1],r[s],{type:r[s-2]}))));break;case 268:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].addElse(r[s]));break;case 269:case 270:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s],o.addDataToNode(o,i[s-2])(o.Block.wrap([r[s-2]])),{type:r[s-1],statement:!0}));break;case 273:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("-",r[s]));break;case 274:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("+",r[s]));break;case 276:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("--",r[s]));break;case 277:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("++",r[s]));break;case 278:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("--",r[s-1],null,!0));break;case 279:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("++",r[s-1],null,!0));break;case 280:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Existence(r[s-1]));break;case 281:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op("+",r[s-2],r[s]));break;case 282:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op("-",r[s-2],r[s]));break;case 283:case 284:case 285:case 286:case 287:case 288:case 289:case 290:case 291:case 292:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op(r[s-1],r[s-2],r[s]));break;case 293:this.$=o.addDataToNode(o,i[s-2],i[s])(function(){return"!"===r[s-1].charAt(0)?new o.Op(r[s-1].slice(1),r[s-2],r[s]).invert():new o.Op(r[s-1],r[s-2],r[s])}());break;case 294:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(r[s-2],r[s],r[s-1]));break;case 295:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(r[s-4],r[s-1],r[s-3]));break;case 296:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Assign(r[s-3],r[s],r[s-2]));}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{1:[3]},{1:[2,2],6:X},a(W,[2,3]),a(W,[2,6],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(W,[2,7],{147:78,138:107,144:108,139:O,141:L,145:F,162:le}),a(W,[2,8]),a(de,[2,15],{118:109,93:110,98:116,41:pe,42:pe,120:pe,74:ce,75:ue,95:me,96:he,97:ge,99:fe,119:ye}),a(de,[2,16]),a(de,[2,17]),a(de,[2,18]),a(de,[2,19]),a(de,[2,20]),a(de,[2,21]),a(de,[2,22]),a(de,[2,23]),a(de,[2,24]),a(de,[2,25]),a(de,[2,26]),a(ke,[2,11]),a(ke,[2,12]),a(ke,[2,13]),a(ke,[2,14]),a(W,[2,9]),a(W,[2,10]),a(Te,ve,{57:[1,119]}),a(Te,[2,115]),a(Te,[2,116]),a(Te,[2,117]),a(Te,Ne),a(Te,[2,119]),a(Te,[2,120]),a([6,31,82,87],be,{81:120,88:121,89:122,33:124,63:125,90:126,67:127,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),{30:130,31:De},{7:132,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:136,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:137,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:138,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:139,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:[1,140],79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:141,94:28,101:$,123:E,124:x,125:I,136:R},{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:144,94:28,101:$,123:E,124:x,125:I,136:R},a(Ie,Se,{167:[1,145],168:[1,146],181:[1,147]}),a(de,[2,267],{157:[1,148]}),{30:149,31:De},{30:150,31:De},a(de,[2,231]),{30:151,31:De},{7:152,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,153],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ae,[2,139],{49:26,68:27,94:28,47:29,70:30,69:31,90:54,67:55,38:56,44:58,33:71,63:72,40:81,16:142,56:143,30:154,92:156,31:De,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,101:$,105:[1,155],123:E,124:x,125:I,136:R}),{7:157,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,158],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a([1,6,32,43,137,139,141,145,162,169,170,171,172,173,174,175,176,177,178,179,180],Re,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:159,13:t,28:Ee,29:Oe,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:[1,161],79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(ke,Le,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:162,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),{33:168,34:n,35:r,40:164,41:s,42:l,101:[1,167],107:165,108:166,113:Fe},{25:171,33:172,34:n,35:r,101:[1,170],104:_,112:[1,173],116:[1,174]},a(Ie,[2,112]),a(Ie,[2,113]),a(Te,[2,41]),a(Te,[2,42]),a(Te,[2,43]),a(Te,[2,44]),a(Te,[2,45]),a(Te,[2,46]),a(Te,[2,47]),a(Te,[2,48]),{4:175,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,31:[1,176],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:177,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:179,123:E,124:x,125:I,126:Me,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{74:Ve,75:Ue,118:184,119:ye,120:pe},a(Te,[2,191]),a(Te,[2,192],{36:187,37:Be}),{31:[2,88]},{31:[2,89]},a(Ge,[2,108]),a(Ge,[2,110]),{7:189,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:190,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:191,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:193,8:134,12:19,13:t,14:21,15:22,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:Ee,30:192,31:De,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{33:198,34:n,35:r,63:199,67:201,90:200,94:194,101:$,124:_e,125:I,149:195,150:[1,196],151:197},{148:202,152:[1,203],153:[1,204],154:[1,205]},a([6,31,87,103],He,{40:81,102:206,58:207,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,34:n,35:r,37:Be,39:i,41:s,42:l,64:Xe,71:We,101:$,123:E,124:x,136:R}),a(Ye,[2,35]),a(Ye,[2,36]),a(Te,[2,39]),{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:223,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:224,94:28,101:$,123:E,124:x,125:I,136:R},a(qe,[2,32]),a(qe,[2,33]),a(ze,[2,37]),{4:225,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(W,[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,12:19,14:21,15:22,10:23,11:24,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,5:226,13:t,28:o,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:T,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(de,[2,280]),{7:227,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:228,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:229,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:230,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:231,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:232,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:233,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:234,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:235,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:236,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:237,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:238,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:239,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:240,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,230]),a(de,[2,235]),{7:241,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,229]),a(de,[2,234]),{40:242,41:s,42:l,72:243,120:Ke},a(Ge,[2,109]),a(Je,[2,188]),{36:245,37:Be},{36:246,37:Be},a(Ge,[2,127],{36:247,37:Be}),{36:248,37:Be},a(Ge,[2,128]),{7:250,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:Ze,67:55,68:27,69:31,70:30,71:y,76:249,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,100:251,101:$,104:_,106:C,114:D,123:E,124:x,125:I,127:252,128:Qe,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{75:ue,98:255,99:fe},{6:[1,257],7:256,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,258],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a([6,31],ea,{86:261,82:[1,259],87:aa}),a(ta,[2,93]),a(ta,[2,97],{57:[1,263],64:[1,262]}),a(ta,[2,101],{33:124,63:125,90:126,67:127,89:264,34:n,35:r,101:$,124:_e,125:Ce}),a(oa,[2,102]),a(oa,[2,103]),a(oa,[2,104]),a(oa,[2,105]),{36:187,37:Be},{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:179,123:E,124:x,125:I,126:Me,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,87]),{4:267,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,32:[1,266],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(na,[2,271],{147:78,138:104,144:105,169:K}),{7:139,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{138:107,139:O,141:L,144:108,145:F,147:78,162:le},a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,169,170,171,172,173,174,175,176,177,178,179,180],Re,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:159,13:t,28:Ee,29:Oe,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(ra,[2,272],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,273],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,274],{147:78,138:104,144:105,169:K,171:Z}),a(na,[2,275],{147:78,138:104,144:105,169:K}),a(W,[2,85],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:268,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:Le,141:Le,145:Le,162:Le,143:w,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(de,[2,276],{41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se}),a(Je,pe,{118:109,93:110,98:116,74:ce,75:ue,95:me,96:he,97:ge,99:fe,119:ye}),a(ia,ve),a(de,[2,277],{41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se}),a(de,[2,278]),a(de,[2,279]),{6:[1,271],7:269,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,270],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{30:272,31:De,161:[1,273]},a(de,[2,213],{132:274,133:[1,275],134:[1,276]}),a(de,[2,228]),a(de,[2,236]),{31:[1,277],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{156:278,158:279,159:sa},a(de,[2,140]),{7:281,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ae,[2,143],{30:282,31:De,41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se,105:[1,283]}),a(la,[2,220],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{67:284,101:$},a(la,[2,28],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:285,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(W,[2,83],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:286,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:Le,141:Le,145:Le,162:Le,143:w,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(ke,da,{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{67:287,101:$},a(ke,[2,147]),{29:[1,288],87:[1,289]},{29:[1,290]},{31:pa,33:295,34:n,35:r,103:[1,291],109:292,110:293,112:ca},a([29,87],[2,163]),{111:[1,297]},{31:ua,33:302,34:n,35:r,103:[1,298],112:ma,115:299,117:300},a(ke,[2,167]),{57:[1,304]},{7:305,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{29:[1,306]},{6:X,137:[1,307]},{4:308,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a([6,31,87,126],ha,{147:78,138:104,144:105,127:309,64:[1,310],128:Qe,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ga,[2,194]),a([6,31,126],ea,{86:311,87:fa}),a(ya,[2,203]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:313,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ya,[2,209]),a(ya,[2,210],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:314,13:t,28:Ee,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),{72:315,120:Ke},{36:316,37:Be},{7:317,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ka,[2,193]),a(ka,[2,34]),{30:318,31:De,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Ta,[2,224],{147:78,138:104,144:105,139:O,140:[1,319],141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ta,[2,226],{147:78,138:104,144:105,139:O,140:[1,320],141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,232]),a(va,[2,233],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],[2,237],{146:[1,321]}),a(Na,[2,240]),{33:198,34:n,35:r,63:199,67:201,90:200,101:$,124:_e,125:Ce,149:322,151:197},a(Na,[2,246],{87:[1,323]}),a(ba,[2,242]),a(ba,[2,243]),a(ba,[2,244]),a(ba,[2,245]),a(de,[2,239]),{7:324,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:325,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:326,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a($a,ea,{86:327,87:_a}),a(Ca,[2,135]),a(Ca,[2,52],{61:[1,329]}),a(Ca,[2,53]),a(Da,[2,61],{72:332,73:333,57:[1,330],64:[1,331],74:Ea,75:xa,120:Ke}),a(Da,[2,62]),{33:214,34:n,35:r,36:215,37:Be,62:336,63:216,65:337,66:217,67:218,68:219,69:220,70:221,71:We,101:$,123:E,124:x,136:R},{64:[1,338],72:339,73:340,74:Ea,75:xa,120:Ke},a(Ia,[2,58]),a(Ia,[2,59]),a(Ia,[2,60]),a(Sa,[2,67]),a(Sa,[2,68]),a(Sa,[2,69]),a(Sa,[2,70]),a(Sa,[2,71]),{72:341,74:Ve,75:Ue,120:Ke},a(ia,Ne,{48:[1,342]}),a(ia,Se),{6:X,43:[1,343]},a(W,[2,4]),a(Aa,[2,281],{147:78,138:104,144:105,169:K,170:J,171:Z}),a(Aa,[2,282],{147:78,138:104,144:105,169:K,170:J,171:Z}),a(ra,[2,283],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,284],{147:78,138:104,144:105,169:K,171:Z}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,172,173,174,175,176,177,178,179,180],[2,285],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,173,174,175,176,177,178,179],[2,286],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,174,175,176,177,178,179],[2,287],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,175,176,177,178,179],[2,288],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,176,177,178,179],[2,289],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,177,178,179],[2,290],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,178,179],[2,291],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,179],[2,292],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,173,174,175,176,177,178,179,180],[2,293],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q}),a(va,[2,270],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,269],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ra,[2,184]),a(Ra,[2,185]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,121:[1,344],122:345,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ge,[2,123]),a(Ge,[2,124]),a(Ge,[2,125]),a(Ge,[2,126]),{77:[1,346]},{64:Ze,77:[2,131],127:347,128:Qe,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{77:[2,132]},{7:348,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,77:[2,202],78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Oa,[2,196]),a(Oa,La),a(Ge,[2,130]),a(la,[2,49],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:349,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:350,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{83:351,84:N,85:b},a(wa,Fa,{89:122,33:124,63:125,90:126,67:127,88:352,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),{6:Pa,31:ja},a(ta,[2,98]),{7:355,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ta,[2,99]),a(ya,ha,{147:78,138:104,144:105,64:[1,356],139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ma,[2,30]),{6:X,32:[1,357]},a(W,[2,84],{147:78,138:104,144:105,139:da,141:da,145:da,162:da,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,294],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:358,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:359,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,268]),{7:360,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,214],{133:[1,361]}),{30:362,31:De},{30:365,31:De,33:363,34:n,35:r,67:364,101:$},{156:366,158:279,159:sa},{32:[1,367],157:[1,368],158:369,159:sa},a(Va,[2,261]),{7:371,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,130:370,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ua,[2,141],{147:78,138:104,144:105,30:372,31:De,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,144]),{7:373,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{32:[1,374]},a(la,[2,29],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(W,[2,82],{147:78,138:104,144:105,139:da,141:da,145:da,162:da,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,375]},{40:376,41:s,42:l},{101:[1,378],108:377,113:Fe},{40:379,41:s,42:l},{29:[1,380]},a($a,ea,{86:381,87:Ba}),a(Ca,[2,154]),{31:pa,33:295,34:n,35:r,109:383,110:293,112:ca},a(Ca,[2,159],{111:[1,384]}),a(Ca,[2,161],{111:[1,385]}),{33:386,34:n,35:r},a(ke,[2,165]),a($a,ea,{86:387,87:Ga}),a(Ca,[2,174]),{31:ua,33:302,34:n,35:r,112:ma,115:389,117:300},a(Ca,[2,179],{111:[1,390]}),a(Ca,[2,182],{111:[1,391]}),{6:[1,393],7:392,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,394],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ha,[2,171],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{40:395,41:s,42:l},a(Te,[2,222]),{6:X,32:[1,396]},{7:397,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a([13,28,34,35,39,41,42,45,46,50,51,52,53,54,55,71,78,79,80,84,85,101,104,106,114,123,124,125,131,135,136,139,141,143,145,155,161,163,164,165,166,167,168],La,{6:Xa,31:Xa,87:Xa,126:Xa}),{6:Wa,31:Ya,126:[1,398]},a([6,31,32,121,126],Fa,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,91:182,7:265,129:401,13:t,28:Ee,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,64:je,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:V,165:U,166:B,167:G,168:H}),a(wa,ea,{86:402,87:fa}),a(ya,[2,107],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ra,[2,186]),a(Te,[2,121]),{77:[1,403],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(qa,[2,265]),{7:404,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:405,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:406,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Na,[2,241]),{33:198,34:n,35:r,63:199,67:201,90:200,101:$,124:_e,125:Ce,151:407},a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,141,145,162],[2,248],{147:78,138:104,144:105,140:[1,408],146:[1,409],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,249],{147:78,138:104,144:105,140:[1,410],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,255],{147:78,138:104,144:105,140:[1,411],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{6:Ka,31:Ja,103:[1,412]},a(Za,Fa,{40:81,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,58:415,34:n,35:r,37:Be,39:i,41:s,42:l,64:Xe,71:We,101:$,123:E,124:x,136:R}),{7:416,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,417],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:418,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,419],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ca,[2,63]),a(Sa,[2,73]),a(Sa,[2,75]),{36:420,37:Be},{7:250,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:Ze,67:55,68:27,69:31,70:30,71:y,76:421,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,100:251,101:$,104:_,106:C,114:D,123:E,124:x,125:I,127:252,128:Qe,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ca,[2,64],{72:332,73:333,74:Ea,75:xa,120:Ke}),a(Ca,[2,66],{72:339,73:340,74:Ea,75:xa,120:Ke}),a(Ca,[2,65]),a(Sa,[2,74]),a(Sa,[2,76]),a(Sa,[2,72]),a(Te,[2,40]),a(ze,[2,38]),a(Ra,[2,189]),a([6,31,121],ea,{86:422,87:fa}),a(Ge,[2,129]),{7:423,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,77:[2,200],78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{77:[2,201],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(la,[2,50],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,424],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{30:425,31:De},a(ta,[2,94]),{33:124,34:n,35:r,63:125,64:$e,67:127,88:426,89:122,90:126,101:$,124:_e,125:Ce},a(Qa,be,{88:121,89:122,33:124,63:125,90:126,67:127,81:427,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),a(ta,[2,100],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ya,Xa),a(Ma,[2,31]),{32:[1,428],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(la,[2,296],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{30:429,31:De,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{30:430,31:De},a(de,[2,215]),{30:431,31:De},{30:432,31:De},a(et,[2,219]),{32:[1,433],157:[1,434],158:369,159:sa},a(de,[2,259]),{30:435,31:De},a(Va,[2,262]),{30:436,31:De,87:[1,437]},a(at,[2,211],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,142]),a(Ua,[2,145],{147:78,138:104,144:105,30:438,31:De,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,221]),a(ke,[2,80]),a(ke,[2,148]),{29:[1,439]},{31:pa,33:295,34:n,35:r,109:440,110:293,112:ca},a(ke,[2,149]),{40:441,41:s,42:l},{6:tt,31:ot,103:[1,442]},a(Za,Fa,{33:295,110:445,34:n,35:r,112:ca}),a(wa,ea,{86:446,87:Ba}),{33:447,34:n,35:r},{33:448,34:n,35:r},{29:[2,164]},{6:nt,31:rt,103:[1,449]},a(Za,Fa,{33:302,117:452,34:n,35:r,112:ma}),a(wa,ea,{86:453,87:Ga}),{33:454,34:n,35:r,112:[1,455]},{33:456,34:n,35:r},a(Ha,[2,168],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:457,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:458,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ke,[2,172]),{137:[1,459]},{126:[1,460],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(ga,[2,195]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,129:461,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:462,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ya,[2,204]),{6:Wa,31:Ya,32:[1,463]},a(Te,[2,122]),a(va,[2,225],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,227],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,238],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Na,[2,247]),{7:464,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:465,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:466,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:467,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(ga,[2,133]),{33:214,34:n,35:r,36:215,37:Be,38:211,39:i,40:81,41:s,42:l,58:468,59:208,60:209,62:210,63:216,64:Xe,65:213,66:217,67:218,68:219,69:220,70:221,71:We,101:$,123:E,124:x,136:R},a(Qa,He,{40:81,58:207,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,102:469,34:n,35:r,37:Be,39:i,41:s,42:l,64:Xe,71:We,101:$,123:E,124:x,136:R}),a(Ca,[2,136]),a(Ca,[2,54],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:470,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Ca,[2,56],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:471,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(Sa,[2,77]),{77:[1,472]},{6:Wa,31:Ya,121:[1,473]},{77:[2,199],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(de,[2,51]),a(de,[2,86]),a(ta,[2,95]),a(wa,ea,{86:474,87:aa}),a(de,[2,295]),a(qa,[2,266]),a(de,[2,216]),a(et,[2,217]),a(et,[2,218]),a(de,[2,257]),{30:475,31:De},{32:[1,476]},a(Va,[2,263],{6:[1,477]}),{7:478,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},a(de,[2,146]),{40:479,41:s,42:l},a($a,ea,{86:480,87:Ba}),a(ke,[2,150]),{29:[1,481]},{33:295,34:n,35:r,110:482,112:ca},{31:pa,33:295,34:n,35:r,109:483,110:293,112:ca},a(Ca,[2,155]),{6:tt,31:ot,32:[1,484]},a(Ca,[2,160]),a(Ca,[2,162]),a(ke,[2,166],{29:[1,485]}),{33:302,34:n,35:r,112:ma,117:486},{31:ua,33:302,34:n,35:r,112:ma,115:487,117:300},a(Ca,[2,175]),{6:nt,31:rt,32:[1,488]},a(Ca,[2,180]),a(Ca,[2,181]),a(Ca,[2,183]),a(Ha,[2,169],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,489],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Te,[2,223]),a(Te,[2,198]),a(ya,[2,205]),a(wa,ea,{86:490,87:fa}),a(ya,[2,206]),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,162],[2,250],{147:78,138:104,144:105,146:[1,491],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,252],{147:78,138:104,144:105,140:[1,492],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,251],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,256],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ca,[2,137]),a(wa,ea,{86:493,87:_a}),{32:[1,494],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{32:[1,495],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Sa,[2,78]),a(Ra,[2,190]),{6:Pa,31:ja,32:[1,496]},{32:[1,497]},a(de,[2,260]),a(Va,[2,264]),a(at,[2,212],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ke,[2,152]),{6:tt,31:ot,103:[1,498]},{40:499,41:s,42:l},a(Ca,[2,156]),a(wa,ea,{86:500,87:Ba}),a(Ca,[2,157]),{40:501,41:s,42:l},a(Ca,[2,176]),a(wa,ea,{86:502,87:Ga}),a(Ca,[2,177]),a(ke,[2,170]),{6:Wa,31:Ya,32:[1,503]},{7:504,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{7:505,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:V,165:U,166:B,167:G,168:H},{6:Ka,31:Ja,32:[1,506]},a(Ca,[2,55]),a(Ca,[2,57]),a(ta,[2,96]),a(de,[2,258]),{29:[1,507]},a(ke,[2,151]),{6:tt,31:ot,32:[1,508]},a(ke,[2,173]),{6:nt,31:rt,32:[1,509]},a(ya,[2,207]),a(la,[2,253],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,254],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ca,[2,138]),{40:510,41:s,42:l},a(Ca,[2,158]),a(Ca,[2,178]),a(ke,[2,153])],defaultActions:{69:[2,88],70:[2,89],251:[2,132],386:[2,164]},parseError:function(e,a){if(a.recoverable)this.trace(e);else{var t=function(e,a){this.message=e,this.hash=a};throw t.prototype=Error,new t(e,a)}},parse:function(e){var a=this,t=[0],o=[null],n=[],i=this.table,s="",l=0,d=0,c=0,u=1,m=n.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,"undefined"==typeof h.yylloc&&(h.yylloc={});var y=h.yylloc;n.push(y);var k=h.options&&h.options.ranges;this.parseError="function"==typeof g.yy.parseError?g.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var T=function(){var e;return e=h.lex()||u,"number"!=typeof e&&(e=a.symbols_[e]||e),e};for(var v={},N,b,$,_,C,D,p,E,x;;){if($=t[t.length-1],this.defaultActions[$]?_=this.defaultActions[$]:((null===N||"undefined"==typeof N)&&(N=T()),_=i[$]&&i[$][N]),"undefined"==typeof _||!_.length||!_[0]){var I="";for(D in x=[],i[$])this.terminals_[D]&&D>2&&x.push("'"+this.terminals_[D]+"'");I=h.showPosition?"Parse error on line "+(l+1)+":\n"+h.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[N]||N)+"'":"Parse error on line "+(l+1)+": Unexpected "+(N==u?"end of input":"'"+(this.terminals_[N]||N)+"'"),this.parseError(I,{text:h.match,token:this.terminals_[N]||N,line:h.yylineno,loc:y,expected:x})}if(_[0]instanceof Array&&1<_.length)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+N);switch(_[0]){case 1:t.push(N),o.push(h.yytext),n.push(h.yylloc),t.push(_[1]),N=null,b?(N=b,b=null):(d=h.yyleng,s=h.yytext,l=h.yylineno,y=h.yylloc,0n.call(this.compiledComments,i)))&&(this.compiledComments.push(i),s=i.here?new S(i).compileNode(e):new K(i).compileNode(e),s.isHereComment&&!s.newLine||a.includeCommentFragments()?c(s):s.unshift?(null==(o=t[0]).precedingComments&&(o.precedingComments=[]),t[0].precedingComments.push(s)):(null==(r=t[t.length-1]).followingComments&&(r.followingComments=[]),t[t.length-1].followingComments.push(s)));return t}},{key:"cache",value:function(e,a,t){var o,n,r;return o=null==t?this.shouldCache():t(this),o?(n=new R(e.scope.freeVariable("ref")),r=new d(n,this),a?[r.compileToFragments(e,a),[this.makeCode(n.value)]]:[r,n]):(n=a?this.compileToFragments(e,a):this,[n,n])}},{key:"hoist",value:function(){var e,a,t;return this.hoisted=!0,t=new A(this),e=this.compileNode,a=this.compileToFragments,this.compileNode=function(a){return t.update(e,a)},this.compileToFragments=function(e){return t.update(a,e)},t}},{key:"cacheToCodeFragments",value:function(e){return[Xe(e[0]),Xe(e[1])]}},{key:"makeReturn",value:function(e){var a;return a=this.unwrapAll(),e?new h(new J(e+".push"),[a]):new ge(a)}},{key:"contains",value:function(e){var a;return a=void 0,this.traverseChildren(!1,function(t){if(e(t))return a=t,!1}),a}},{key:"lastNode",value:function(e){return 0===e.length?null:e[e.length-1]}},{key:"toString",value:function(){var e=0=W?this.wrapInParentheses(t):t)}},{key:"compileRoot",value:function(e){var a,t,o,n,r,i;for(e.indent=e.bare?"":De,e.level=z,this.spaced=!0,e.scope=new ye(null,this,null,null==(r=e.referencedVars)?[]:r),i=e.locals||[],(t=0,o=i.length);t=Y?this.wrapInParentheses(a):a}}]),a}(re),t.StringLiteral=Ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(){var e;return e=this.csx?[this.makeCode(this.unquote(!0))]:_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this)}},{key:"unquote",value:function(e){var a;return a=this.value.slice(1,-1),e?a.replace(/\\n/g,"\n").replace(/\\"/g,"\""):a}}]),a}(J),t.RegexLiteral=me=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.PassthroughLiteral=pe=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.IdentifierLiteral=R=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"eachName",value:function(e){return e(this)}}]),a}(J);return e.prototype.isAssignable=Fe,e}(),t.CSXTag=m=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(R),t.PropertyName=ce=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J);return e.prototype.isAssignable=Fe,e}(),t.StatementLiteral=ve=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"jumps",value:function(e){return"break"!==this.value||(null==e?void 0:e.loop)||(null==e?void 0:e.block)?"continue"!==this.value||null!=e&&e.loop?void 0:this:this}},{key:"compileNode",value:function(){return[this.makeCode(""+this.tab+this.value+";")]}}]),a}(J);return e.prototype.isStatement=Fe,e.prototype.makeReturn=Ee,e}(),t.ThisLiteral=Ie=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"this"))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t;return a=(null==(t=e.scope.method)?void 0:t.bound)?e.scope.method.context:this.value,[this.makeCode(a)]}}]),a}(J),t.UndefinedLiteral=Oe=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"undefined"))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){return[this.makeCode(e.level>=H?"(void 0)":"void 0")]}}]),a}(J),t.NullLiteral=ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"null"))}return _inherits(a,e),a}(J),t.BooleanLiteral=u=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.Return=ge=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.expression=e,t}return _inherits(a,e),_createClass(a,[{key:"compileToFragments",value:function(e,t){var o,n;return o=null==(n=this.expression)?void 0:n.makeReturn(),o&&!(o instanceof a)?o.compileToFragments(e,t):_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileToFragments",this).call(this,e,t)}},{key:"compileNode",value:function(e){var a,t,o,r;if(a=[],this.expression){for(a=this.expression.compileToFragments(e,q),ia(a,this.makeCode(this.tab+"return ")),(o=0,r=a.length);othis.properties.length&&!this.base.shouldCache()&&(null==n||!n.shouldCache()))?[this,this]:(t=new a(this.base,this.properties.slice(0,-1)),t.shouldCache()&&(o=new R(e.scope.freeVariable("base")),t=new a(new de(new d(o,t)))),!n)?[t,o]:(n.shouldCache()&&(r=new R(e.scope.freeVariable("name")),n=new U(new d(r,n.index)),r=new U(r)),[t.add(n),new a(o||t.base,[r||n])])}},{key:"compileNode",value:function(e){var a,t,o,n,r;for(this.base.front=this.front,r=this.properties,a=this.base.compileToFragments(e,r.length?H:null),r.length&&fe.test(Xe(a))&&a.push(this.makeCode(".")),(t=0,o=r.length);to.length&&(o=r);this.content=this.content.replace(RegExp("^("+r+")","gm"),"")}return this.content="/*"+this.content+(a?" ":"")+"*/",e=this.makeCode(this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.multiline=l,e.isComment=e.isHereComment=!0,e}}]),a}(p),t.LineComment=K=function(e){function a(e){var t=e.content,o=e.newLine,n=e.unshift;_classCallCheck(this,a);var r=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return r.content=t,r.newLine=o,r.unshift=n,r}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(){var e;return e=this.makeCode(/^\s*$/.test(this.content)?"":"//"+this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.trail=!this.newLine&&!this.unshift,e.isComment=e.isLineComment=!0,e}}]),a}(p),t.Call=h=function(){var e=function(e){function a(e){var t=1")),(l=i).push.apply(l,_toConsumableArray(r.compileNode(e,W))),(d=i).push.apply(d,[this.makeCode("")]))}else i.push(this.makeCode(" />"));return i}}]),a}(p);return e.prototype.children=["variable","args"],e}(),t.SuperCall=_e=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function(e){var a;return(null==(a=this.expressions)?void 0:a.length)&&e.level===z}},{key:"compileNode",value:function(e){var t,o,n,r;if(null==(o=this.expressions)||!o.length)return _get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e);if(r=new J(Xe(_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e))),n=new c(this.expressions.slice()),e.level>z){var i=r.cache(e,null,Fe),s=_slicedToArray(i,2);r=s[0],t=s[1],n.push(t)}return n.unshift(r),n.compileToFragments(e,e.level===z?e.level:W)}}]),a}(h);return e.prototype.children=h.prototype.children.concat(["expressions"]),e}(),t.Super=$e=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.accessor=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o,n,r,i,s,l;if(t=e.scope.namedMethod(),(null==t?void 0:t.isMethod)||this.error("cannot use super outside of an instance method"),null==t.ctor&&null==this.accessor){var p=t;o=p.name,l=p.variable,(o.shouldCache()||o instanceof U&&o.index.isAssignable())&&(n=new R(e.scope.parent.freeVariable("name")),o.index=new d(n,o.index)),this.accessor=null==n?o:new U(n)}return(null==(r=this.accessor)||null==(i=r.name)?void 0:i.comments)&&(s=this.accessor.name.comments,delete this.accessor.name.comments),a=new Le(new J("super"),this.accessor?[this.accessor]:[]).compileToFragments(e),s&&Me(s,this.accessor.name),a}}]),a}(p);return e.prototype.children=["accessor"],e}(),t.RegexWithInterpolations=he=function(e){function a(){var e=0"+this.equals,o=null==this.stepNum?l?(a=[this.fromNum,this.toNum],n=a[0],u=a[1],a,n<=u?d+" "+u:r+" "+u):(t=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,t+" ? "+d+" "+this.toVar+" : "+r+" "+this.toVar):0=a(this.fromNum-this.toNum))?(c=function(){h=[];for(var e=u=this.fromNum,a=this.toNum;u<=a?e<=a:e>=a;u<=a?e++:e--)h.push(e);return h}.apply(this),this.exclusive&&c.pop(),[this.makeCode("["+c.join(", ")+"]")]):(i=this.tab+De,s=e.scope.freeVariable("i",{single:!0}),m=e.scope.freeVariable("results"),p="\n"+i+m+" = [];",l?(e.index=s,o=Xe(this.compileNode(e))):(g=s+" = "+this.fromC+(this.toC===this.toVar?"":", "+this.toC),n=this.fromVar+" <= "+this.toVar,o="var "+g+"; "+n+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+n+" ? "+s+"++ : "+s+"--"),d="{ "+m+".push("+s+"); }\n"+i+"return "+m+";\n"+e.indent,r=function(e){return null==e?void 0:e.contains(qe)},(r(this.from)||r(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+p+"\n"+i+"for ("+o+")"+d+"}).apply(this"+(null==t?"":t)+")")])}}]),t}(p);return e.prototype.children=["from","to"],e}(),t.Slice=ke=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.range=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a=this.range,t,o,n,r,i,s;return i=a.to,n=a.from,r=n&&n.compileToFragments(e,q)||[this.makeCode("0")],i&&(t=i.compileToFragments(e,q),o=Xe(t),(this.range.exclusive||-1!=+o)&&(s=", "+(this.range.exclusive?o:i.isNumber()?""+(+o+1):(t=i.compileToFragments(e,H),"+"+Xe(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+Xe(r)+(s||"")+")")]}}]),a}(p);return e.prototype.children=["range"],e}(),t.Obj=ie=function(){var e=function(e){function a(e){var t=1v)return s.push(new Le(new ie(y.slice(v,a),!0)))};e=y[a];)(d=this.addInitializerExpression(e))&&(k(),s.push(d),i.push(d),v=a+1),a++;k(),o.apply(r,[l,l-l+1].concat(s)),s,l+=s.length}else(d=this.addInitializerExpression(n))&&(i.push(d),r[l]=d),l+=1;for(u=0,h=i.length;uW||e.level===z&&n&&this.variable.base instanceof ie&&!this.nestedLhs&&!this.param?this.wrapInParentheses(t):t)}},{key:"compileObjectDestruct",value:function(e){var t,o,n,r,l,d,p,u,m,g,f,y;m=function(t){var o;if((o=!1,!(t instanceof a&&t.value.base instanceof ie))&&(o=t instanceof a?t.value.base instanceof R?t.value.base.compileWithoutComments(e):t.variable.base.compileWithoutComments(e):t.compileWithoutComments(e),o))return e.scope.add(o,"var",!0)},o=function(t){var o;if(t instanceof a){var n=t.variable.cache(e),r=_slicedToArray(n,2);return t.variable=r[0],o=r[1],o}return t},n=function(t){var n,r;return r=o(t),n=t instanceof a&&t.variable!==r,n||!r.isAssignable()?r:new J("'"+r.compileWithoutComments(e)+"'")},g=function(t,r){var l,d,c,u,h,f,y,T,p,k,v;for(k=[],v=void 0,(d=c=0,u=t.length);c=Y?this.wrapInParentheses(n):n;var x=k,I=_slicedToArray(x,1);if(y=I[0],1===T&&y instanceof v&&y.error("Destructuring assignment has no target"),c=this.variable.isObject(),$&&1===T&&!(y instanceof Te)){if(r=void 0,y instanceof a&&"object"===y.context){var S=y;p=S.variable.base,y=S.value,y instanceof a&&(r=y.value,y=y.variable)}else y instanceof a&&(r=y.value,y=y.variable),p=c?y.this?y.properties[0].name:new ce(y.unwrap().value):new re(0);return t=p.unwrap()instanceof ce,C=new Le(C),C.properties.push(new(t?i:U)(p)),g=Ke(y.unwrap().value),g&&y.error(g),r&&(r.isDefaultValue=!0,C=new se("?",C,r)),new a(y,C,null,{param:this.param}).compileToFragments(e,z)}for(D=C.compileToFragments(e,W),E=Xe(D),o=[],s=!1,(!(C.unwrap()instanceof R)||this.variable.assigns(E))&&(N=e.scope.freeVariable("ref"),o.push([this.makeCode(N+" = ")].concat(_toConsumableArray(D))),D=[this.makeCode(N)],E=N),(d=m=0,h=k.length);mz?this.wrapInParentheses(o):o}},{key:"eachName",value:function(e){return this.variable.unwrapAll().eachName(e)}}]),a}(p);return e.prototype.children=["variable","value"],e.prototype.isAssignable=Fe,e}(),t.FuncGlyph=I=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.glyph=e,t}return _inherits(a,e),a}(p),t.Code=f=function(){var e=function(e){function a(e,t,o){_classCallCheck(this,a);var n=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this)),r;return n.funcGlyph=o,n.params=e||[],n.body=t||new c,n.bound="=>"===(null==(r=n.funcGlyph)?void 0:r.glyph),n.isGenerator=!1,n.isAsync=!1,n.isMethod=!1,n.body.traverseChildren(!1,function(e){if((e instanceof se&&e.isYield()||e instanceof Pe)&&(n.isGenerator=!0),(e instanceof se&&e.isAwait()||e instanceof l)&&(n.isAsync=!0),n.isGenerator&&n.isAsync)return e.error("function can't contain both yield and await")}),n}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function(){return this.isMethod}},{key:"makeScope",value:function(e){return new ye(e,this.body,this)}},{key:"compileNode",value:function(e){var a,t,o,r,p,c,u,g,f,y,T,i,N,b,k,l,$,_,C,m,D,E,x,I,S,A,L,w,F,P,j,M,V,U,B,X,W,Y,q,z,K;for(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator&&this.name.error("Class constructor may not be a generator")),this.bound&&((null==(F=e.scope.method)?void 0:F.bound)&&(this.context=e.scope.method.context),!this.context&&(this.context="this")),e.scope=Ue(e,"classScope")||this.makeScope(e.scope),e.scope.shared=Ue(e,"sharedScope"),e.indent+=De,delete e.bare,delete e.isExistentialEquals,A=[],g=[],z=null==(P=null==(j=this.thisAssignments)?void 0:j.slice())?[]:P,L=[],y=!1,f=!1,I=[],this.eachParamName(function(a,t,o){var r;if(0<=n.call(I,a)&&t.error("multiple parameters named '"+a+"'"),I.push(a),t.this)return a=t.properties[0].name.value,0<=n.call(G,a)&&(a="_"+a),r=new R(e.scope.freeVariable(a)),o.renameParam(t,r),z.push(new d(t,r))}),M=this.params,(T=N=0,l=M.length);N")),o.push(this.makeCode(" {")),null==r?void 0:r.length){var te;(te=o).push.apply(te,[this.makeCode("\n")].concat(_toConsumableArray(r),[this.makeCode("\n"+this.tab)]))}return o.push(this.makeCode("}")),this.isMethod?Ye(o,this):this.front||e.level>=H?this.wrapInParentheses(o):o}},{key:"eachParamName",value:function(e){var a,t,o,n,r;for(n=this.params,r=[],(a=0,t=n.length);a"===e||">="===e||"<="===e||"==="===e||"!=="===e}},{key:"invert",value:function(){var e,a,o,n,i;if(this.isChainable()&&this.first.isChainable()){for(e=!0,a=this;a&&a.operator;)e&&(e=a.operator in t),a=a.first;if(!e)return new de(this).invert();for(a=this;a&&a.operator;)a.invert=!a.invert,a.operator=t[a.operator],a=a.first;return this}return(n=t[this.operator])?(this.operator=n,this.first.unwrap()instanceof r&&this.first.invert(),this):this.second?new de(this).invert():"!"===this.operator&&(o=this.first.unwrap())instanceof r&&("!"===(i=o.operator)||"in"===i||"instanceof"===i)?o:new r("!",this)}},{key:"unfoldSoak",value:function(e){var a;return("++"===(a=this.operator)||"--"===a||"delete"===a)&&ra(e,this,"first")}},{key:"generateDo",value:function(e){var a,t,o,n,r,i,s,l;for(i=[],t=e instanceof d&&(s=e.value.unwrap())instanceof f?s:e,l=t.params||[],(o=0,n=l.length);o=H?new de(this).compileToFragments(e):(o="+"===a||"-"===a,("new"===a||"typeof"===a||"delete"===a||o&&this.first instanceof r&&this.first.operator===a)&&t.push([this.makeCode(" ")]),(o&&this.first instanceof r||"new"===a&&this.first.isStatement(e))&&(this.first=new de(this.first)),t.push(this.first.compileToFragments(e,Y)),this.flip&&t.reverse(),this.joinFragmentArrays(t,""))}},{key:"compileContinuation",value:function(e){var a,t,o,r;return t=[],a=this.operator,null==e.scope.parent&&this.error(this.operator+" can only occur inside functions"),(null==(o=e.scope.method)?void 0:o.bound)&&e.scope.method.isGenerator&&this.error("yield cannot occur inside bound (fat arrow) functions"),0<=n.call(Object.keys(this.first),"expression")&&!(this.first instanceof Se)?null!=this.first.expression&&t.push(this.first.expression.compileToFragments(e,Y)):(e.level>=q&&t.push([this.makeCode("(")]),t.push([this.makeCode(a)]),""!==(null==(r=this.first.base)?void 0:r.value)&&t.push([this.makeCode(" ")]),t.push(this.first.compileToFragments(e,Y)),e.level>=q&&t.push([this.makeCode(")")])),this.joinFragmentArrays(t,"")}},{key:"compilePower",value:function(e){var a;return a=new Le(new R("Math"),[new i(new ce("pow"))]),new h(a,[this.first,this.second]).compileToFragments(e)}},{key:"compileFloorDivision",value:function(e){var a,t,o;return t=new Le(new R("Math"),[new i(new ce("floor"))]),o=this.second.shouldCache()?new de(this.second):this.second,a=new r("/",this.first,o),new h(t,[a]).compileToFragments(e)}},{key:"compileModulo",value:function(e){var a;return a=new Le(new J(sa("modulo",e))),new h(a,[this.first,this.second]).compileToFragments(e)}},{key:"toString",value:function(e){return _get(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"toString",this).call(this,e,this.constructor.name+" "+this.operator)}}]),r}(p),a,t;return a={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},t={"!==":"===","===":"!=="},e.prototype.children=["first","second"],e}(),t.In=V=function(){var e=function(e){function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return o.object=e,o.array=t,o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o,n,r;if(this.array instanceof Le&&this.array.isArray()&&this.array.base.objects.length){for(r=this.array.base.objects,t=0,o=r.length;t= 0"))),Xe(r)===Xe(n))?o:(o=r.concat(this.makeCode(", "),o),e.leveln.call(r,a)&&r.push(a);delete e.comments}if(null==(d=e.name)?void 0:d.comments){for(p=e.name.comments,o=0,s=p.length;on.call(r,a)&&r.push(a);return delete e.name.comments}}),Me(r,o),Qe(o.expression,o),o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o;if(this.expression.front=this.front,o=this.expression.compile(e,Y),this.expression.unwrap()instanceof R&&!e.scope.check(o)){var n=this.negated?["===","||"]:["!==","&&"],r=_slicedToArray(n,2);a=r[0],t=r[1],o="typeof "+o+" "+a+" \"undefined\""+("undefined"===this.comparisonTarget?"":" "+t+" "+o+" "+a+" "+this.comparisonTarget)}else a="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",o=o+" "+a+" "+this.comparisonTarget;return[this.makeCode(e.level<=X?o:"("+o+")")]}}]),a}(p);return e.prototype.children=["expression"],e.prototype.invert=ae,e}(),t.Parens=de=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function(){return this.body}},{key:"shouldCache",value:function(){return this.body.shouldCache()}},{key:"compileNode",value:function(e){var a,t,o;return(t=this.body.unwrap(),t instanceof Le&&t.isAtomic()&&!this.csxAttribute)?(t.front=this.front,t.compileToFragments(e)):(o=t.compileToFragments(e,q),a=e.level=o.length),this.csxAttribute?this.wrapInBraces(o):a?o:this.wrapInParentheses(o))}}]),a}(p);return e.prototype.children=["body"],e}(),t.StringWithInterpolations=be=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function(){return this}},{key:"shouldCache",value:function(){return this.body.shouldCache()}},{key:"compileNode",value:function(e){var t,o,n,r,i,s,l,d,p;if(this.csxAttribute)return p=new de(new a(this.body)),p.csxAttribute=!0,p.compileNode(e);for(r=this.body.unwrap(),n=[],d=[],r.traverseChildren(!1,function(e){var a,t,o,r,i,s;if(e instanceof Ne){if(e.comments){var l;(l=d).push.apply(l,_toConsumableArray(e.comments)),delete e.comments}return n.push(e),!0}if(e instanceof de){if(0!==d.length){for(t=0,r=d.length;tw,!(this.step&&null!=w&&p)&&(b=S.freeVariable("len")),r=""+v+k+" = 0, "+b+" = "+P+".length",i=""+v+k+" = "+P+".length - 1",o=k+" < "+b,n=k+" >= 0",this.step?(null==w?(o=F+" > 0 ? "+o+" : "+n,r="("+F+" > 0 ? ("+r+") : "+i+")"):p&&(o=n,r=i),f=k+" += "+F):f=""+(T===k?k+"++":"++"+k),u=[this.makeCode(r+"; "+o+"; "+v+f)])),this.returns&&(E=""+this.tab+I+" = [];\n",x="\n"+this.tab+"return "+I+";",a.makeReturn(I)),this.guard&&(1=X?this.wrapInParentheses(n):n}},{key:"unfoldSoak",value:function(){return this.soak&&this}}]),a}(p);return e.prototype.children=["condition","body","elseBody"],e}(),Re={modulo:function(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},objectWithoutKeys:function(){return"function(o, ks) { var res = {}; for (var k in o) ([].indexOf.call(ks, k) < 0 && {}.hasOwnProperty.call(o, k)) && (res[k] = o[k]); return res; }"},boundMethodCheck:function(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},hasProp:function(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function(){return"[].slice"},splice:function(){return"[].splice"}},z=1,q=2,W=3,X=4,Y=5,H=6,De=" ",fe=/^[+-]?\d+$/,sa=function(e,a){var t,o;return o=a.scope.root,e in o.utilities?o.utilities[e]:(t=o.freeVariable(e),o.assign(t,Re[e](a)),o.utilities[e]=t)},ea=function(e,a){var t=2=e);)e--;return a&&[a.sourceLine,a.sourceColumn]}}]),e}(),o=function(){var e=function(){function e(){_classCallCheck(this,e),this.lines=[]}return _createClass(e,[{key:"add",value:function(e,a){var o=2=t);)t--;return n&&n.sourceLocation(o)}},{key:"generate",value:function(){var e=0e?1:0,l=(a(e)<<1)+s;l||!t;)o=l&i,l>>=r,l&&(o|=n),t+=this.encodeBase64(o);return t}},{key:"encodeBase64",value:function(e){return o[e]||function(){throw new Error("Cannot Base64 encode value: "+e)}()}}]),e}(),o,n,r,i;return r=5,n=1<",l(m,e),f[m]=e,T&&(C=new r),O=u.tokenize(e,a),a.referencedVars=function(){var e,a,t;for(t=[],e=0,a=O.length;e"),d=e.getLineNumber(),o=e.getColumnNumber(),c=a(r,d,o),n=c?r+":"+c[0]+":"+c[1]:r+":"+d+":"+o),i=e.getFunctionName(),s=e.isConstructor(),l=!(e.isToplevel()||s),l?(p=e.getMethodName(),m=e.getTypeName(),i?(u=t="",m&&i.indexOf(m)&&(u=m+"."),p&&i.indexOf("."+p)!==i.length-p.length-1&&(t=" [as "+p+"]"),""+u+i+t+" ("+n+")"):m+"."+(p||"")+" ("+n+")"):s?"new "+(i||"")+" ("+n+")":i?i+" ("+n+")":n},p=function(e){var a;return null==g[e]?null==g[""]?null==f[e]?null:(a=i(f[e],{filename:e,sourceMap:!0,literate:c.isLiterate(e)}),a.sourceMap):g[""]:g[e]},Error.prepareStackTrace=function(e,t){var o,n,r;return r=function(e,a,t){var o,n;return n=p(e),null!=n&&(o=n.sourceLocation([a-1,t-1])),null==o?null:[o[0]+1,o[1]+1]},n=function(){var e,n,i;for(i=[],e=0,n=t.length;e=7.6.0"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",browser:"./lib/coffeescript/browser",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"babel-core":"~6.25.0","babel-preset-babili":"~0.1.4","babel-preset-env":"~1.6.0",babili:"^0.1.4",docco:"~0.7.0","highlight.js":"~9.12.0",jison:">=0.4.17","markdown-it":"~8.3.1",underscore:"~1.8.3",webpack:"~3.2.0"},dependencies:{}}}(),e["./helpers"]=function(){var e={};return function(){var a,t,o,n,r,i,s,l;e.starts=function(e,a,t){return a===e.substr(t,a.length)},e.ends=function(e,a,t){var o;return o=a.length,a===e.substr(e.length-o-(t||0),o)},e.repeat=s=function(e,a){var t;for(t="";0>>=1,e+=e;return t},e.compact=function(e){var a,t,o,n;for(n=[],a=0,o=e.length;ar)return n.returnOnNegativeLevel?void 0:o.call(this,l,e);e+=1}return e-1}},{key:"removeLeadingNewlines",value:function(){var e,a,t,o,n,r,i,s,l;for(i=this.tokens,e=a=0,n=i.length;ar;o=0<=r?++n:--n)if(null!=l[o]&&("string"==typeof l[o]&&(l[o]=[l[o]]),i=this.tag(e+o+a),0>t.call(l[o],i)))return-1;return e+o+a-1}},{key:"looksObjectish",value:function(e){var a,o;return-1!==this.indexOfTag(e,"@",null,":")||-1!==this.indexOfTag(e,null,":")||(o=this.indexOfTag(e,c),-1!==o&&(a=null,this.detectEnd(o+1,function(e){var a;return a=e[0],0<=t.call(p,a)},function(e,t){return a=t}),":"===this.tag(a+1)))}},{key:"findTagsBackwards",value:function(e,a){var o,n,r,i,s,l,d;for(o=[];0<=e&&(o.length||(i=this.tag(e),0>t.call(a,i))&&((s=this.tag(e),0>t.call(c,s))||this.tokens[e].generated)&&(l=this.tag(e),0>t.call(f,l)));)(n=this.tag(e),0<=t.call(p,n))&&o.push(this.tag(e)),(r=this.tag(e),0<=t.call(c,r))&&o.length&&o.pop(),e-=1;return d=this.tag(e),0<=t.call(a,d)}},{key:"addImplicitBracesAndParens",value:function(){var e,a;return e=[],a=null,this.scanTokens(function(o,d,n){var i=this,y=_slicedToArray(o,1),T,v,b,$,_,C,D,E,x,I,S,A,k,R,O,L,w,F,P,j,s,M,U,V,B,G,X,H,W,Y;Y=y[0];var q=F=0"!==w&&"->"!==w&&"["!==w&&"("!==w&&","!==w&&"{"!==w&&"ELSE"!==w&&"="!==w)for(;C()||E()&&":"!==w;)C()?T():v();return D()&&e.pop(),e.push([Y,d]),b(1)}if(0<=t.call(c,Y))return e.push([Y,d]),b(1);if(0<=t.call(p,Y)){for(;_();)C()?T():E()?v():e.pop();a=e.pop()}if((0<=t.call(h,Y)&&o.spaced||"?"===Y&&0t.call(p,e)):return a[1];case"@"!==this.tag(d-2):return d-2;default:return d-1;}}.call(this),W=0===j||(P=this.tag(j-1),0<=t.call(f,P))||n[j-1].newLine,B()){var Z=B(),Q=_slicedToArray(Z,2);if(V=Q[0],M=Q[1],("{"===V||"INDENT"===V&&"{"===this.tag(M-1))&&(W||","===this.tag(j-1)||"{"===this.tag(j-1)))return b(1)}return H(j,!!W),b(2)}if(0<=t.call(f,Y))for(A=e.length-1;0<=A&&(U=e[A],!!x(U));A+=-1)S(U)&&(U[2].sameLine=!1);if(k="OUTDENT"===w||F.newLine,0<=t.call(m,Y)||0<=t.call(r,Y)&&k)for(;_();){var ee=B(),ae=_slicedToArray(ee,3);V=ae[0],M=ae[1];var te=ae[2];if(s=te.sameLine,W=te.startsLine,C()&&","!==w)T();else if(E()&&s&&"TERMINATOR"!==Y&&":"!==w&&!(("POST_IF"===Y||"FOR"===Y||"WHILE"===Y||"UNTIL"===Y)&&W&&$(d+1)))v();else if(E()&&"TERMINATOR"===Y&&","!==w&&!(W&&this.looksObjectish(d+1)))v();else break}if(","===Y&&!this.looksObjectish(d+1)&&E()&&("TERMINATOR"!==R||!this.looksObjectish(d+2)))for(L="OUTDENT"===R?1:0;E();)v(d+L);return b(1)})}},{key:"enforceValidCSXAttributes",value:function(){return this.scanTokens(function(e,a,t){var o,n;return e.csxColon&&(o=t[a+1],"STRING_START"!==(n=o[0])&&"STRING"!==n&&"("!==n&&D("expected wrapped or quoted JSX attribute",o[2])),1})}},{key:"rescueStowawayComments",value:function(){var e,a,o;return e=function(e,a,t,o){return"TERMINATOR"!==t[a][0]&&t[o](N("TERMINATOR","\n",t[a])),t[o](N("JS","",t[a],e))},o=function(a,o,n){var r,i,l,d,p,c,u;for(i=o;i!==n.length&&(p=n[i][0],0<=t.call(s,p));)i++;if(!(i===n.length||(c=n[i][0],0<=t.call(s,c)))){for(u=a.comments,l=0,d=u.length;l"!==s&&"=>"!==s)||(l=e[0],0<=t.call(r,l))&&(this.tokens[a-1].newLine||"OUTDENT"===this.tokens[a-1][0])},e=function(e,a){return this.tokens.splice(","===this.tag(a-1)?a-1:a,0,n)},this.scanTokens(function(r,l,i){var p=_slicedToArray(r,1),c,u,m,h,g;if(g=p[0],"TERMINATOR"===g){if("ELSE"===this.tag(l+1)&&"OUTDENT"!==this.tag(l-1))return i.splice.apply(i,[l,1].concat(_toConsumableArray(this.indentation()))),1;if(m=this.tag(l+1),0<=t.call(d,m))return i.splice(l,1),0}if("CATCH"===g)for(c=u=1;2>=u;c=++u)if("OUTDENT"===(h=this.tag(l+c))||"TERMINATOR"===h||"FINALLY"===h)return i.splice.apply(i,[l+c,0].concat(_toConsumableArray(this.indentation()))),2+c;if(("->"===g||"=>"===g)&&(","===this.tag(l+1)||"."===this.tag(l+1)&&r.newLine)){var f=this.indentation(i[l]),y=_slicedToArray(f,2);return o=y[0],n=y[1],i.splice(l+1,0,o,n),1}if(0<=t.call(v,g)&&"INDENT"!==this.tag(l+1)&&("ELSE"!==g||"IF"!==this.tag(l+1))){s=g;var k=this.indentation(i[l]),T=_slicedToArray(k,2);return o=T[0],n=T[1],"THEN"===s&&(o.fromThen=!0),i.splice(l+1,0,o),this.detectEnd(l+2,a,e),"THEN"===g&&i.splice(l,1),1}return 1})}},{key:"tagPostfixConditionals",value:function(){var e,a,o;return o=null,a=function(e,a){var o=_slicedToArray(e,1),n,r;r=o[0];var i=_slicedToArray(this.tokens[a-1],1);return n=i[0],"TERMINATOR"===r||"INDENT"===r&&0>t.call(v,n)},e=function(e){if("INDENT"!==e[0]||e.generated&&!e.fromThen)return o[0]="POST_"+o[0]},this.scanTokens(function(t,n){return"IF"===t[0]?(o=t,this.detectEnd(n+1,a,e),1):1})}},{key:"indentation",value:function(e){var a,t;return a=["INDENT",2],t=["OUTDENT",2],e?(a.generated=t.generated=!0,a.origin=t.origin=e):a.explicit=t.explicit=!0,[a,t]}},{key:"tag",value:function(e){var a;return null==(a=this.tokens[e])?void 0:a[0]}}]),e}();return e.prototype.generate=N,e}(),n=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],a.INVERSES=i={},c=[],p=[],(b=0,$=n.length);b<$;b++){var E=_slicedToArray(n[b],2);k=E[0],C=E[1],c.push(i[C]=k),p.push(i[k]=C)}d=["CATCH","THEN","ELSE","FINALLY"].concat(p),h=["IDENTIFIER","PROPERTY","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],u=["IDENTIFIER","CSX_TAG","PROPERTY","NUMBER","INFINITY","NAN","STRING","STRING_START","REGEX","REGEX_START","JS","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","UNDEFINED","NULL","BOOL","UNARY","YIELD","AWAIT","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],g=["+","-"],m=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],v=["ELSE","->","=>","TRY","FINALLY","THEN"],T=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],f=["TERMINATOR","INDENT","OUTDENT"],r=[".","?.","::","?::"],l=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],s=["(",")","[","]","{","}",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","LEADING_WHEN","OUTDENT","PARAM_START","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(g.concat(m.concat(r.concat(l))))}.call(this),{exports:a}.exports}(),e["./lexer"]=function(){var a={};return function(){var t=[].indexOf,n=e("./rewriter"),r,i,s,l,d,p,c,u,m,h,g,f,y,k,T,v,N,b,$,_,C,D,E,x,I,S,A,R,O,L,w,F,P,j,M,U,V,B,G,X,H,W,Y,q,z,K,J,Z,Q,ee,ae,te,oe,ne,re,ie,se,le,de,pe,ce,ue,me,he,ge,fe,ye,ke,Te,ve,Ne,be,$e;z=n.Rewriter,S=n.INVERSES;var _e=e("./helpers");he=_e.count,be=_e.starts,me=_e.compact,Ne=_e.repeat,ge=_e.invertLiterate,ve=_e.merge,ue=_e.attachCommentsToNode,Te=_e.locationDataToString,$e=_e.throwSyntaxError,a.Lexer=F=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"tokenize",value:function(e){var a=1this.indent){if(i)return this.indebt=s-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=s,this.indentLiteral=r,t.length;a=s-this.indent+this.outdebt,this.token("INDENT",a,t.length-s,s),this.indents.push(a),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=s,this.indentLiteral=r}else st.call(m,h)))))return 0;var T=d,v=_slicedToArray(T,3);return l=v[0],s=v[1],o=v[2],p=this.token("CSX_TAG",s,1,s.length),this.token("CALL_START","("),this.token("[","["),this.ends.push({tag:"/>",origin:p,name:s}),this.csxDepth++,s.length+1}if(n=this.atCSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("]","]",0,2),this.token("CALL_END",")",0,2),this.csxDepth--,2;if("{"===i)return":"===u?(g=this.token("(","("),this.csxObjAttribute[this.csxDepth]=!1):(g=this.token("{","{"),this.csxObjAttribute[this.csxDepth]=!0),this.ends.push({tag:"}",origin:g}),1;if(">"===i){this.pair("/>"),p=this.token("]","]"),this.token(",",",");var N=this.matchWithInterpolations(I,">",""})}),d=y.exec(this.chunk.slice(r)),d&&d[0]===n.name||this.error("expected corresponding CSX closing tag for "+n.name,n.origin[2]),a=r+n.name.length,">"!==this.chunk[a]&&this.error("missing closing > after tag name",{offset:a,length:1}),this.token("CALL_END",")",r,n.name.length+1),this.csxDepth--,a+1}return 0}return this.atCSXTag(1)?"}"===i?(this.pair(i),this.csxObjAttribute[this.csxDepth]?(this.token("}","}"),this.csxObjAttribute[this.csxDepth]=!1):this.token(")",")"),this.token(",",","),1):0:0}},{key:"atCSXTag",value:function(){var e=0"===(null==t?void 0:t.tag)&&t}},{key:"literalToken",value:function(){var e,a,o,n,r,i,d,p,c,u,m,f;if(e=V.exec(this.chunk)){var y=e,k=_slicedToArray(y,1);f=k[0],l.test(f)&&this.tagParameters()}else f=this.chunk.charAt(0);if(u=f,n=this.prev(),n&&0<=t.call(["="].concat(_toConsumableArray(g)),f)&&(c=!1,"="!==f||"||"!==(r=n[1])&&"&&"!==r||n.spaced||(n[0]="COMPOUND_ASSIGN",n[1]+="=",n=this.tokens[this.tokens.length-2],c=!0),n&&"PROPERTY"!==n[0]&&(o=null==(i=n.origin)?n:i,a=ye(n[1],o[1]),a&&this.error(a,o[2])),c))return f.length;if("{"===f&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===f?this.importSpecifierList=!1:"{"===f&&"EXPORT"===(null==n?void 0:n[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===f&&(this.exportSpecifierList=!1),";"===f)this.seenFor=this.seenImport=this.seenExport=!1,u="TERMINATOR";else if("*"===f&&"EXPORT"===n[0])u="EXPORT_ALL";else if(0<=t.call(P,f))u="MATH";else if(0<=t.call(h,f))u="COMPARE";else if(0<=t.call(g,f))u="COMPOUND_ASSIGN";else if(0<=t.call(ie,f))u="UNARY";else if(0<=t.call(se,f))u="UNARY_MATH";else if(0<=t.call(K,f))u="SHIFT";else if("?"===f&&(null==n?void 0:n.spaced))u="BIN?";else if(n&&!n.spaced)if("("===f&&(d=n[0],0<=t.call(s,d)))"?"===n[0]&&(n[0]="FUNC_EXIST"),u="CALL_START";else if("["===f&&(p=n[0],0<=t.call(x,p)))switch(u="INDEX_START",n[0]){case"?":n[0]="INDEX_SOAK";}return m=this.makeToken(u,f),"("===f||"{"===f||"["===f?this.ends.push({tag:S[f],origin:m}):")"===f||"}"===f||"]"===f?this.pair(f):void 0,(this.tokens.push(this.makeToken(u,f)),f.length)}},{key:"tagParameters",value:function(){var e,a,t,o,n;if(")"!==this.tag())return this;for(t=[],n=this.tokens,e=n.length,a=n[--e],a[0]="PARAM_END";o=n[--e];)switch(o[0]){case")":t.push(o);break;case"(":case"CALL_START":if(t.length)t.pop();else return"("===o[0]?(o[0]="PARAM_START",this):(a[0]="CALL_END",this);}return this}},{key:"closeIndentation",value:function(){return this.outdentToken(this.indent)}},{key:"matchWithInterpolations",value:function(a,t,o,n){var r,i,s,l,d,p,c,u,m,h,g,f,y,k,T,v,N,b;if(null==o&&(o=t),null==n&&(n=/^#\{/),b=[],f=t.length,this.chunk.slice(0,f)!==t)return null;for(v=this.chunk.slice(f);;){var $=a.exec(v),_=_slicedToArray($,1);if(N=_[0],this.validateEscapes(N,{isRegex:"/"===t.charAt(0),offsetInChunk:f}),b.push(this.makeToken("NEOSTRING",N,f)),v=v.slice(N.length),f+=N.length,!(h=n.exec(v)))break;var C=h,D=_slicedToArray(C,1);c=D[0],p=c.length-1;var E=this.getLineAndColumnFromChunk(f+p),x=_slicedToArray(E,2);m=x[0],s=x[1],T=v.slice(p);var I=new e().tokenize(T,{line:m,column:s,untilBalanced:!0});g=I.tokens,d=I.index,d+=p,r="}"===v[d-1],r&&(y=g[0],i=g[g.length-1],y[0]=y[1]="(",i[0]=i[1]=")",i.origin=["","end of interpolation",i[2]]),"TERMINATOR"===(null==(k=g[1])?void 0:k[0])&&g.splice(1,1),r||(y=this.makeToken("(","(",f,0),i=this.makeToken(")",")",f+d,0),g=[y].concat(_toConsumableArray(g),[i])),b.push(["TOKENS",g]),v=v.slice(d),f+=d}return v.slice(0,o.length)!==o&&this.error("missing "+o,{length:t.length}),l=b[0],u=b[b.length-1],l[2].first_column-=t.length,"\n"===u[1].substr(-1)?(u[2].last_line+=1,u[2].last_column=o.length-1):u[2].last_column+=o.length,0===u[1].length&&(u[2].last_column-=1),{tokens:b,index:f+o.length}}},{key:"mergeInterpolationTokens",value:function(e,a,t){var o,n,r,s,i,l,d,p,c,u,m,h,g,f,y;for(1r&&(u=this.token("+","+"),u[2]={first_line:p[2].first_line,first_column:p[2].first_column,last_line:p[2].first_line,last_column:p[2].first_column}),(k=this.tokens).push.apply(k,_toConsumableArray(f))}if(c)return l=e[e.length-1],c.origin=["STRING",null,{first_line:c[2].first_line,first_column:c[2].first_column,last_line:l[2].last_line,last_column:l[2].last_column}],c[2]=c.origin[2],m=this.token("STRING_END",")"),m[2]={first_line:l[2].last_line,first_column:l[2].last_column,last_line:l[2].last_line,last_column:l[2].last_column}}},{key:"pair",value:function(e){var a,t,o,n,r;return o=this.ends,t=o[o.length-1],e===(r=null==t?void 0:t.tag)?this.ends.pop():("OUTDENT"!==r&&this.error("unmatched "+e),n=this.indents,a=n[n.length-1],this.outdentToken(a,!0),this.pair(e))}},{key:"getLineAndColumnFromChunk",value:function(e){var a,t,o,n,r;return 0===e?[this.chunkLine,this.chunkColumn]:(r=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),o=he(r,"\n"),a=this.chunkColumn,0e)?n(e):(a=o((e-65536)/1024)+55296,t=(e-65536)%1024+56320,""+n(a)+n(t))}},{key:"replaceUnicodeCodePointEscapes",value:function(e,a){var o=this,n;return n=null!=a.flags&&0>t.call(a.flags,"u"),e.replace(de,function(e,t,r,i){var s;return t?t:(s=parseInt(r,16),1114111t.call([].concat(_toConsumableArray(R),_toConsumableArray(c)),e):return"keyword '"+a+"' can't be assigned";case 0>t.call(Z,e):return"'"+a+"' can't be assigned";case 0>t.call(q,e):return"reserved word '"+a+"' can't be assigned";default:return!1;}},a.isUnassignable=ye,fe=function(e){var a;return"IDENTIFIER"===e[0]?("from"===e[1]&&(e[1][0]="IDENTIFIER",!0),!0):"FOR"!==e[0]&&("{"===(a=e[1])||"["===a||","===a||":"===a?!1:!0)},R=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],c=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],p={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},d=function(){var e;for(ke in e=[],p)e.push(ke);return e}(),c=c.concat(d),q=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],Z=["arguments","eval"],a.JS_FORBIDDEN=R.concat(q).concat(Z),r=65279,D=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,y=/^(?![\d<])((?:(?!\s)[\.\-$\w\x7f-\uffff])+)/,f=/^(?!\d)((?:(?!\s)[\-$\w\x7f-\uffff])+)([^\S]*=(?!=))?/,U=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,V=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,ce=/^[^\n\S]+/,u=/^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,l=/^[-=]>/,j=/^(?:\n[^\n\S]*)+/,A=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,C=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,oe=/^(?:'''|"""|'|")/,te=/^(?:[^\\']|\\[\s\S])*/,Q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,b=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,v=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,I=/^(?:[^\{<])*/,k=/^(?:\{|<(?!\/))/,ae=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,J=/\s*\n\s*/g,N=/\n+([^\n\S]*)(?=\S)/g,G=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,X=/^\w*/,pe=/^(?!.*(.).*\1)[imguy]*$/,$=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/,_=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,H=/^(\/|\/{3}\s*)(\*)/,B=/^\/=?\s/,T=/\*\//,w=/^\s*(?:,|\??\.(?![.\d])|::)/,ee=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,W=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,de=/(\\\\)|\\u\{([\da-fA-F]+)\}/g,O=/^[^\n\S]*\n/,ne=/\n[^\n\S]*$/,re=/\s+$/,g=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],ie=["NEW","TYPEOF","DELETE","DO"],se=["!","~"],K=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],P=["*","/","%","//","%%"],Y=["IN","OF","INSTANCEOF"],i=["TRUE","FALSE"],s=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER"],x=s.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),m=["IDENTIFIER",")","]","NUMBER"],M=x.concat(["++","--"]),L=["INDENT","OUTDENT","TERMINATOR"],E=[")","}","]"],le=["\\",".","?.","?::","UNARY","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS","DEFAULT"]}.call(this),{exports:a}.exports}(),e["./parser"]=function(){var a={},t={exports:a},o=function(){function e(){this.yy={}}var a=function(e,a,t,o){for(t=t||{},o=e.length;o--;t[e[o]]=a);return t},t=[1,20],o=[1,50],n=[1,84],r=[1,85],i=[1,80],s=[1,86],l=[1,87],d=[1,82],p=[1,83],c=[1,57],u=[1,59],m=[1,60],h=[1,61],g=[1,62],f=[1,63],y=[1,66],k=[1,51],T=[1,38],v=[1,32],N=[1,69],b=[1,70],$=[1,79],_=[1,48],C=[1,52],D=[1,53],E=[1,67],x=[1,68],I=[1,65],S=[1,43],A=[1,49],R=[1,64],O=[1,74],L=[1,75],w=[1,76],F=[1,77],P=[1,47],j=[1,73],M=[1,34],U=[1,35],V=[1,36],B=[1,37],G=[1,39],X=[1,40],H=[1,88],W=[1,6,32,43,137],Y=[1,103],q=[1,91],z=[1,90],K=[1,89],J=[1,92],Z=[1,93],Q=[1,94],ee=[1,95],ae=[1,96],te=[1,97],oe=[1,98],ne=[1,99],re=[1,100],ie=[1,101],se=[1,102],le=[1,106],de=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],pe=[2,187],ce=[1,112],ue=[1,117],me=[1,113],he=[1,114],ge=[1,115],fe=[1,118],ye=[1,111],ke=[1,6,32,43,137,139,141,145,162],Te=[1,6,31,32,41,42,43,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],ve=[2,114],Ne=[2,118],be=[2,92],$e=[1,123],_e=[1,128],Ce=[1,129],De=[1,131],Ee=[1,135],xe=[1,133],Ie=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Se=[2,111],Ae=[1,6,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Re=[2,27],Oe=[1,160],Le=[2,81],we=[1,163],Fe=[1,169],Pe=[1,181],je=[1,183],Me=[1,178],Ue=[1,185],Ve=[1,186],Be=[1,188],Ge=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,105,119,120,121,126,128,137,139,140,141,145,146,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],Xe=[2,134],He=[1,212],We=[1,222],Ye=[1,6,31,32,41,42,43,61,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],qe=[1,6,29,31,32,41,42,43,57,61,64,74,75,77,82,87,95,96,97,99,103,105,111,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],ze=[1,6,31,32,41,42,43,48,61,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Ke=[1,244],Je=[41,42,120],Ze=[1,254],Qe=[1,253],ea=[2,90],aa=[1,260],ta=[6,31,32,82,87],oa=[6,31,32,57,64,82,87],na=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,170,171,172,173,174,175,176,177,178,179,180],ra=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,170,172,173,174,175,176,177,178,179,180],ia=[41,42,74,75,95,96,97,99,119,120],sa=[1,280],la=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162],da=[2,79],pa=[1,294],ca=[1,296],ua=[1,301],ma=[1,303],ha=[2,208],ga=[1,6,31,32,41,42,43,57,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],fa=[1,312],ya=[6,31,32,87,121,126],ka=[1,6,31,32,41,42,43,57,61,64,74,75,77,82,87,95,96,97,99,103,105,119,120,121,126,128,137,139,140,141,145,146,152,153,154,162,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],Ta=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,146,162],va=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,140,146,162],Na=[152,153,154],ba=[87,152,153,154],$a=[6,31,103],_a=[1,328],Ca=[6,31,32,87,103],Da=[6,31,32,61,87,103],Ea=[1,334],xa=[1,335],Ia=[6,31,32,57,61,64,74,75,87,103,120],Sa=[6,31,32,64,74,75,87,103,120],Aa=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,165,166,172,173,174,175,176,177,178,179,180],Ra=[1,6,31,32,41,42,43,48,64,74,75,77,82,87,95,96,97,99,103,119,120,121,126,128,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Oa=[13,28,34,35,39,41,42,45,46,50,51,52,53,54,55,71,77,78,79,80,84,85,101,104,106,114,123,124,125,131,135,136,139,141,143,145,155,161,163,164,165,166,167,168],La=[2,197],wa=[6,31,32],Fa=[2,91],Pa=[1,353],ja=[1,354],Ma=[1,6,31,32,43,64,77,82,87,103,121,126,128,133,134,137,139,140,141,145,146,157,159,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],Ua=[32,157,159],Va=[1,6,32,43,64,77,82,87,103,121,126,128,137,140,146,162],Ba=[1,382],Ga=[1,388],Xa=[1,6,32,43,137,162],Ha=[2,106],Wa=[1,399],Ya=[1,400],qa=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,157,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],za=[1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,141,145,146,162],Ka=[1,413],Ja=[1,414],Za=[6,31,32,103],Qa=[6,31,32,87],et=[1,6,31,32,43,64,77,82,87,103,121,126,128,133,137,139,140,141,145,146,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],at=[31,87],tt=[1,443],ot=[1,444],nt=[1,450],rt=[1,451],it={trace:function(){},yy:{},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,Code:17,Operation:18,Assign:19,If:20,Try:21,While:22,For:23,Switch:24,Class:25,Throw:26,Yield:27,YIELD:28,FROM:29,Block:30,INDENT:31,OUTDENT:32,Identifier:33,IDENTIFIER:34,CSX_TAG:35,Property:36,PROPERTY:37,AlphaNumeric:38,NUMBER:39,String:40,STRING:41,STRING_START:42,STRING_END:43,Regex:44,REGEX:45,REGEX_START:46,Invocation: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,ObjRestValue:60,":":61,SimpleObjAssignable:62,ThisProperty:63,"...":64,ObjSpreadExpr:65,ObjSpreadIdentifier:66,Object:67,Parenthetical:68,Super:69,This:70,SUPER:71,Arguments:72,ObjSpreadAccessor:73,".":74,INDEX_START:75,IndexValue:76,INDEX_END:77,RETURN:78,AWAIT:79,PARAM_START:80,ParamList:81,PARAM_END:82,FuncGlyph:83,"->":84,"=>":85,OptComma:86,",":87,Param:88,ParamVar:89,Array:90,Splat:91,SimpleAssignable:92,Accessor:93,Range:94,"?.":95,"::":96,"?::":97,Index:98,INDEX_SOAK:99,Slice:100,"{":101,AssignList:102,"}":103,CLASS:104,EXTENDS:105,IMPORT:106,ImportDefaultSpecifier:107,ImportNamespaceSpecifier:108,ImportSpecifierList:109,ImportSpecifier:110,AS:111,DEFAULT:112,IMPORT_ALL:113,EXPORT:114,ExportSpecifierList:115,EXPORT_ALL:116,ExportSpecifier:117,OptFuncExist:118,FUNC_EXIST:119,CALL_START:120,CALL_END:121,ArgList:122,THIS:123,"@":124,"[":125,"]":126,RangeDots:127,"..":128,Arg:129,SimpleArgs:130,TRY:131,Catch:132,FINALLY:133,CATCH:134,THROW:135,"(":136,")":137,WhileSource:138,WHILE:139,WHEN:140,UNTIL:141,Loop:142,LOOP:143,ForBody:144,FOR:145,BY:146,ForStart:147,ForSource:148,ForVariables:149,OWN:150,ForValue:151,FORIN:152,FOROF:153,FORFROM:154,SWITCH:155,Whens:156,ELSE:157,When:158,LEADING_WHEN:159,IfBlock:160,IF:161,POST_IF:162,UNARY:163,UNARY_MATH:164,"-":165,"+":166,"--":167,"++":168,"?":169,MATH:170,"**":171,SHIFT:172,COMPARE:173,"&":174,"^":175,"|":176,"&&":177,"||":178,"BIN?":179,RELATION:180,COMPOUND_ASSIGN:181,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",13:"STATEMENT",28:"YIELD",29:"FROM",31:"INDENT",32:"OUTDENT",34:"IDENTIFIER",35:"CSX_TAG",37:"PROPERTY",39:"NUMBER",41:"STRING",42:"STRING_START",43:"STRING_END",45:"REGEX",46:"REGEX_START",48:"REGEX_END",50:"JS",51:"UNDEFINED",52:"NULL",53:"BOOL",54:"INFINITY",55:"NAN",57:"=",61:":",64:"...",71:"SUPER",74:".",75:"INDEX_START",77:"INDEX_END",78:"RETURN",79:"AWAIT",80:"PARAM_START",82:"PARAM_END",84:"->",85:"=>",87:",",95:"?.",96:"::",97:"?::",99:"INDEX_SOAK",101:"{",103:"}",104:"CLASS",105:"EXTENDS",106:"IMPORT",111:"AS",112:"DEFAULT",113:"IMPORT_ALL",114:"EXPORT",116:"EXPORT_ALL",119:"FUNC_EXIST",120:"CALL_START",121:"CALL_END",123:"THIS",124:"@",125:"[",126:"]",128:"..",131:"TRY",133:"FINALLY",134:"CATCH",135:"THROW",136:"(",137:")",139:"WHILE",140:"WHEN",141:"UNTIL",143:"LOOP",145:"FOR",146:"BY",150:"OWN",152:"FORIN",153:"FOROF",154:"FORFROM",155:"SWITCH",157:"ELSE",159:"LEADING_WHEN",161:"IF",162:"POST_IF",163:"UNARY",164:"UNARY_MATH",165:"-",166:"+",167:"--",168:"++",169:"?",170:"MATH",171:"**",172:"SHIFT",173:"COMPARE",174:"&",175:"^",176:"|",177:"&&",178:"||",179:"BIN?",180:"RELATION",181:"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],[27,1],[27,2],[27,3],[30,2],[30,3],[33,1],[33,1],[36,1],[38,1],[38,1],[40,1],[40,3],[44,1],[44,3],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[49,1],[19,3],[19,4],[19,5],[58,1],[58,1],[58,3],[58,5],[58,3],[58,5],[62,1],[62,1],[62,1],[59,1],[59,1],[60,2],[60,2],[60,2],[60,2],[65,1],[65,1],[65,1],[65,1],[65,1],[65,2],[65,2],[65,2],[66,2],[66,2],[73,2],[73,3],[12,2],[12,4],[12,1],[10,3],[10,2],[11,3],[11,2],[17,5],[17,2],[83,1],[83,1],[86,0],[86,1],[81,0],[81,1],[81,3],[81,4],[81,6],[88,1],[88,2],[88,2],[88,3],[88,1],[89,1],[89,1],[89,1],[89,1],[91,2],[91,2],[92,1],[92,2],[92,1],[56,1],[56,1],[56,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[69,3],[69,4],[93,2],[93,2],[93,2],[93,2],[93,1],[93,1],[98,3],[98,2],[76,1],[76,1],[67,4],[102,0],[102,1],[102,3],[102,4],[102,6],[25,1],[25,2],[25,3],[25,4],[25,2],[25,3],[25,4],[25,5],[14,2],[14,4],[14,4],[14,5],[14,7],[14,6],[14,9],[109,1],[109,3],[109,4],[109,4],[109,6],[110,1],[110,3],[110,1],[110,3],[107,1],[108,3],[15,3],[15,5],[15,2],[15,4],[15,5],[15,6],[15,3],[15,4],[15,7],[115,1],[115,3],[115,4],[115,4],[115,6],[117,1],[117,3],[117,3],[117,1],[117,3],[47,3],[47,3],[47,3],[118,0],[118,1],[72,2],[72,4],[70,1],[70,1],[63,2],[90,2],[90,4],[127,1],[127,1],[94,5],[100,3],[100,2],[100,2],[100,1],[122,1],[122,3],[122,4],[122,4],[122,6],[129,1],[129,1],[129,1],[130,1],[130,3],[21,2],[21,3],[21,4],[21,5],[132,3],[132,3],[132,2],[26,2],[26,4],[68,3],[68,5],[138,2],[138,4],[138,2],[138,4],[22,2],[22,2],[22,2],[22,1],[142,2],[142,2],[23,2],[23,2],[23,2],[144,2],[144,4],[144,2],[147,2],[147,3],[151,1],[151,1],[151,1],[151,1],[149,1],[149,3],[148,2],[148,2],[148,4],[148,4],[148,4],[148,6],[148,6],[148,2],[148,4],[24,5],[24,7],[24,4],[24,6],[156,1],[156,2],[158,3],[158,4],[160,3],[160,5],[20,1],[20,3],[20,3],[20,3],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,5],[18,4]],performAction:function(e,a,t,o,n,r,i){var s=r.length-1;switch(n){case 1:return this.$=o.addDataToNode(o,i[s],i[s])(new o.Block);break;case 2:return this.$=r[s];break;case 3:this.$=o.addDataToNode(o,i[s],i[s])(o.Block.wrap([r[s]]));break;case 4:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].push(r[s]));break;case 5:this.$=r[s-1];break;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 36:case 41:case 43:case 53:case 58:case 59:case 60:case 61:case 62:case 67:case 68:case 69:case 70:case 71:case 90:case 91:case 102:case 103:case 104:case 105:case 110:case 111:case 114:case 119:case 128:case 208:case 209:case 211:case 242:case 243:case 261:case 267:this.$=r[s];break;case 12:this.$=o.addDataToNode(o,i[s],i[s])(new o.StatementLiteral(r[s]));break;case 27:this.$=o.addDataToNode(o,i[s],i[s])(new o.Op(r[s],new o.Value(new o.Literal(""))));break;case 28:case 271:case 272:case 275:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op(r[s-1],r[s]));break;case 29:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op(r[s-2].concat(r[s-1]),r[s]));break;case 30:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Block);break;case 31:case 78:case 129:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-1]);break;case 32:this.$=o.addDataToNode(o,i[s],i[s])(new o.IdentifierLiteral(r[s]));break;case 33:this.$=o.addDataToNode(o,i[s],i[s])(new o.CSXTag(r[s]));break;case 34:this.$=o.addDataToNode(o,i[s],i[s])(new o.PropertyName(r[s]));break;case 35:this.$=o.addDataToNode(o,i[s],i[s])(new o.NumberLiteral(r[s]));break;case 37:this.$=o.addDataToNode(o,i[s],i[s])(new o.StringLiteral(r[s]));break;case 38:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.StringWithInterpolations(r[s-1]));break;case 39:this.$=o.addDataToNode(o,i[s],i[s])(new o.RegexLiteral(r[s]));break;case 40:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.RegexWithInterpolations(r[s-1].args));break;case 42:this.$=o.addDataToNode(o,i[s],i[s])(new o.PassthroughLiteral(r[s]));break;case 44:this.$=o.addDataToNode(o,i[s],i[s])(new o.UndefinedLiteral(r[s]));break;case 45:this.$=o.addDataToNode(o,i[s],i[s])(new o.NullLiteral(r[s]));break;case 46:this.$=o.addDataToNode(o,i[s],i[s])(new o.BooleanLiteral(r[s]));break;case 47:this.$=o.addDataToNode(o,i[s],i[s])(new o.InfinityLiteral(r[s]));break;case 48:this.$=o.addDataToNode(o,i[s],i[s])(new o.NaNLiteral(r[s]));break;case 49:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(r[s-2],r[s]));break;case 50:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Assign(r[s-3],r[s]));break;case 51:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(r[s-4],r[s-1]));break;case 52:case 108:case 112:case 113:case 115:case 116:case 117:case 118:case 120:case 244:case 245:this.$=o.addDataToNode(o,i[s],i[s])(new o.Value(r[s]));break;case 54:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),r[s],"object",{operatorToken:o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1]))}));break;case 55:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(o.addDataToNode(o,i[s-4])(new o.Value(r[s-4])),r[s-1],"object",{operatorToken:o.addDataToNode(o,i[s-3])(new o.Literal(r[s-3]))}));break;case 56:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),r[s],null,{operatorToken:o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1]))}));break;case 57:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(o.addDataToNode(o,i[s-4])(new o.Value(r[s-4])),r[s-1],null,{operatorToken:o.addDataToNode(o,i[s-3])(new o.Literal(r[s-3]))}));break;case 63:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(new o.Value(r[s-1])));break;case 64:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(new o.Value(r[s])));break;case 65:case 106:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(r[s-1]));break;case 66:case 107:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Splat(r[s]));break;case 72:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.SuperCall(o.addDataToNode(o,i[s-1])(new o.Super),r[s],!1,r[s-1]));break;case 73:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Call(new o.Value(r[s-1]),r[s]));break;case 74:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Call(r[s-1],r[s]));break;case 75:case 76:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Value(r[s-1]).add(r[s]));break;case 77:case 123:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Access(r[s]));break;case 79:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Return(r[s]));break;case 80:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Return(new o.Value(r[s-1])));break;case 81:this.$=o.addDataToNode(o,i[s],i[s])(new o.Return);break;case 82:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.YieldReturn(r[s]));break;case 83:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.YieldReturn);break;case 84:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.AwaitReturn(r[s]));break;case 85:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.AwaitReturn);break;case 86:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Code(r[s-3],r[s],r[s-1]));break;case 87:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Code([],r[s],r[s-1]));break;case 88:case 89:this.$=o.addDataToNode(o,i[s],i[s])(new o.FuncGlyph(r[s]));break;case 92:case 134:this.$=o.addDataToNode(o,i[s],i[s])([]);break;case 93:case 135:case 154:case 174:case 203:case 246:this.$=o.addDataToNode(o,i[s],i[s])([r[s]]);break;case 94:case 136:case 155:case 175:case 204:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].concat(r[s]));break;case 95:case 137:case 156:case 176:case 205:this.$=o.addDataToNode(o,i[s-3],i[s])(r[s-3].concat(r[s]));break;case 96:case 138:case 158:case 178:case 207:this.$=o.addDataToNode(o,i[s-5],i[s])(r[s-5].concat(r[s-2]));break;case 97:this.$=o.addDataToNode(o,i[s],i[s])(new o.Param(r[s]));break;case 98:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Param(r[s-1],null,!0));break;case 99:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Param(r[s],null,!0));break;case 100:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Param(r[s-2],r[s]));break;case 101:case 210:this.$=o.addDataToNode(o,i[s],i[s])(new o.Expansion);break;case 109:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].add(r[s]));break;case 121:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Super(o.addDataToNode(o,i[s])(new o.Access(r[s])),[],!1,r[s-2]));break;case 122:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Super(o.addDataToNode(o,i[s-1])(new o.Index(r[s-1])),[],!1,r[s-3]));break;case 124:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Access(r[s],"soak"));break;case 125:this.$=o.addDataToNode(o,i[s-1],i[s])([o.addDataToNode(o,i[s-1])(new o.Access(new o.PropertyName("prototype"))),o.addDataToNode(o,i[s])(new o.Access(r[s]))]);break;case 126:this.$=o.addDataToNode(o,i[s-1],i[s])([o.addDataToNode(o,i[s-1])(new o.Access(new o.PropertyName("prototype"),"soak")),o.addDataToNode(o,i[s])(new o.Access(r[s]))]);break;case 127:this.$=o.addDataToNode(o,i[s],i[s])(new o.Access(new o.PropertyName("prototype")));break;case 130:this.$=o.addDataToNode(o,i[s-1],i[s])(o.extend(r[s],{soak:!0}));break;case 131:this.$=o.addDataToNode(o,i[s],i[s])(new o.Index(r[s]));break;case 132:this.$=o.addDataToNode(o,i[s],i[s])(new o.Slice(r[s]));break;case 133:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Obj(r[s-2],r[s-3].generated));break;case 139:this.$=o.addDataToNode(o,i[s],i[s])(new o.Class);break;case 140:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Class(null,null,r[s]));break;case 141:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Class(null,r[s]));break;case 142:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Class(null,r[s-1],r[s]));break;case 143:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Class(r[s]));break;case 144:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Class(r[s-1],null,r[s]));break;case 145:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Class(r[s-2],r[s]));break;case 146:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Class(r[s-3],r[s-1],r[s]));break;case 147:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.ImportDeclaration(null,r[s]));break;case 148:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-2],null),r[s]));break;case 149:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ImportDeclaration(new o.ImportClause(null,r[s-2]),r[s]));break;case 150:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList([])),r[s]));break;case 151:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList(r[s-4])),r[s]));break;case 152:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-4],r[s-2]),r[s]));break;case 153:this.$=o.addDataToNode(o,i[s-8],i[s])(new o.ImportDeclaration(new o.ImportClause(r[s-7],new o.ImportSpecifierList(r[s-4])),r[s]));break;case 157:case 177:case 190:case 206:this.$=o.addDataToNode(o,i[s-3],i[s])(r[s-2]);break;case 159:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportSpecifier(r[s]));break;case 160:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportSpecifier(r[s-2],r[s]));break;case 161:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportSpecifier(new o.Literal(r[s])));break;case 162:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 163:this.$=o.addDataToNode(o,i[s],i[s])(new o.ImportDefaultSpecifier(r[s]));break;case 164:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ImportNamespaceSpecifier(new o.Literal(r[s-2]),r[s]));break;case 165:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList([])));break;case 166:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-2])));break;case 167:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.ExportNamedDeclaration(r[s]));break;case 168:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-2],r[s],null,{moduleDeclaration:"export"})));break;case 169:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-3],r[s],null,{moduleDeclaration:"export"})));break;case 170:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-4],r[s-1],null,{moduleDeclaration:"export"})));break;case 171:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportDefaultDeclaration(r[s]));break;case 172:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.ExportAllDeclaration(new o.Literal(r[s-2]),r[s]));break;case 173:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-4]),r[s]));break;case 179:this.$=o.addDataToNode(o,i[s],i[s])(new o.ExportSpecifier(r[s]));break;case 180:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(r[s-2],r[s]));break;case 181:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(r[s-2],new o.Literal(r[s])));break;case 182:this.$=o.addDataToNode(o,i[s],i[s])(new o.ExportSpecifier(new o.Literal(r[s])));break;case 183:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.ExportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 184:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.TaggedTemplateCall(r[s-2],r[s],r[s-1]));break;case 185:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Call(r[s-2],r[s],r[s-1]));break;case 186:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.SuperCall(o.addDataToNode(o,i[s-2])(new o.Super),r[s],r[s-1],r[s-2]));break;case 187:this.$=o.addDataToNode(o,i[s],i[s])(!1);break;case 188:this.$=o.addDataToNode(o,i[s],i[s])(!0);break;case 189:this.$=o.addDataToNode(o,i[s-1],i[s])([]);break;case 191:case 192:this.$=o.addDataToNode(o,i[s],i[s])(new o.Value(new o.ThisLiteral(r[s])));break;case 193:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Value(o.addDataToNode(o,i[s-1])(new o.ThisLiteral(r[s-1])),[o.addDataToNode(o,i[s])(new o.Access(r[s]))],"this"));break;case 194:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Arr([]));break;case 195:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Arr(r[s-2]));break;case 196:this.$=o.addDataToNode(o,i[s],i[s])("inclusive");break;case 197:this.$=o.addDataToNode(o,i[s],i[s])("exclusive");break;case 198:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Range(r[s-3],r[s-1],r[s-2]));break;case 199:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Range(r[s-2],r[s],r[s-1]));break;case 200:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Range(r[s-1],null,r[s]));break;case 201:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Range(null,r[s],r[s-1]));break;case 202:this.$=o.addDataToNode(o,i[s],i[s])(new o.Range(null,null,r[s]));break;case 212:this.$=o.addDataToNode(o,i[s-2],i[s])([].concat(r[s-2],r[s]));break;case 213:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Try(r[s]));break;case 214:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Try(r[s-1],r[s][0],r[s][1]));break;case 215:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Try(r[s-2],null,null,r[s]));break;case 216:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Try(r[s-3],r[s-2][0],r[s-2][1],r[s]));break;case 217:this.$=o.addDataToNode(o,i[s-2],i[s])([r[s-1],r[s]]);break;case 218:this.$=o.addDataToNode(o,i[s-2],i[s])([o.addDataToNode(o,i[s-1])(new o.Value(r[s-1])),r[s]]);break;case 219:this.$=o.addDataToNode(o,i[s-1],i[s])([null,r[s]]);break;case 220:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Throw(r[s]));break;case 221:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Throw(new o.Value(r[s-1])));break;case 222:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Parens(r[s-1]));break;case 223:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Parens(r[s-2]));break;case 224:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(r[s]));break;case 225:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.While(r[s-2],{guard:r[s]}));break;case 226:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(r[s],{invert:!0}));break;case 227:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.While(r[s-2],{invert:!0,guard:r[s]}));break;case 228:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].addBody(r[s]));break;case 229:case 230:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s].addBody(o.addDataToNode(o,i[s-1])(o.Block.wrap([r[s-1]]))));break;case 231:this.$=o.addDataToNode(o,i[s],i[s])(r[s]);break;case 232:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(o.addDataToNode(o,i[s-1])(new o.BooleanLiteral("true"))).addBody(r[s]));break;case 233:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.While(o.addDataToNode(o,i[s-1])(new o.BooleanLiteral("true"))).addBody(o.addDataToNode(o,i[s])(o.Block.wrap([r[s]]))));break;case 234:case 235:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.For(r[s-1],r[s]));break;case 236:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.For(r[s],r[s-1]));break;case 237:this.$=o.addDataToNode(o,i[s-1],i[s])({source:o.addDataToNode(o,i[s])(new o.Value(r[s]))});break;case 238:this.$=o.addDataToNode(o,i[s-3],i[s])({source:o.addDataToNode(o,i[s-2])(new o.Value(r[s-2])),step:r[s]});break;case 239:this.$=o.addDataToNode(o,i[s-1],i[s])(function(){return r[s].own=r[s-1].own,r[s].ownTag=r[s-1].ownTag,r[s].name=r[s-1][0],r[s].index=r[s-1][1],r[s]}());break;case 240:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s]);break;case 241:this.$=o.addDataToNode(o,i[s-2],i[s])(function(){return r[s].own=!0,r[s].ownTag=o.addDataToNode(o,i[s-1])(new o.Literal(r[s-1])),r[s]}());break;case 247:this.$=o.addDataToNode(o,i[s-2],i[s])([r[s-2],r[s]]);break;case 248:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s]});break;case 249:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s],object:!0});break;case 250:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s]});break;case 251:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s],object:!0});break;case 252:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],step:r[s]});break;case 253:this.$=o.addDataToNode(o,i[s-5],i[s])({source:r[s-4],guard:r[s-2],step:r[s]});break;case 254:this.$=o.addDataToNode(o,i[s-5],i[s])({source:r[s-4],step:r[s-2],guard:r[s]});break;case 255:this.$=o.addDataToNode(o,i[s-1],i[s])({source:r[s],from:!0});break;case 256:this.$=o.addDataToNode(o,i[s-3],i[s])({source:r[s-2],guard:r[s],from:!0});break;case 257:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Switch(r[s-3],r[s-1]));break;case 258:this.$=o.addDataToNode(o,i[s-6],i[s])(new o.Switch(r[s-5],r[s-3],r[s-1]));break;case 259:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Switch(null,r[s-1]));break;case 260:this.$=o.addDataToNode(o,i[s-5],i[s])(new o.Switch(null,r[s-3],r[s-1]));break;case 262:this.$=o.addDataToNode(o,i[s-1],i[s])(r[s-1].concat(r[s]));break;case 263:this.$=o.addDataToNode(o,i[s-2],i[s])([[r[s-1],r[s]]]);break;case 264:this.$=o.addDataToNode(o,i[s-3],i[s])([[r[s-2],r[s-1]]]);break;case 265:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s-1],r[s],{type:r[s-2]}));break;case 266:this.$=o.addDataToNode(o,i[s-4],i[s])(r[s-4].addElse(o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s-1],r[s],{type:r[s-2]}))));break;case 268:this.$=o.addDataToNode(o,i[s-2],i[s])(r[s-2].addElse(r[s]));break;case 269:case 270:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.If(r[s],o.addDataToNode(o,i[s-2])(o.Block.wrap([r[s-2]])),{type:r[s-1],statement:!0}));break;case 273:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("-",r[s]));break;case 274:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("+",r[s]));break;case 276:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("--",r[s]));break;case 277:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("++",r[s]));break;case 278:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("--",r[s-1],null,!0));break;case 279:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Op("++",r[s-1],null,!0));break;case 280:this.$=o.addDataToNode(o,i[s-1],i[s])(new o.Existence(r[s-1]));break;case 281:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op("+",r[s-2],r[s]));break;case 282:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op("-",r[s-2],r[s]));break;case 283:case 284:case 285:case 286:case 287:case 288:case 289:case 290:case 291:case 292:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Op(r[s-1],r[s-2],r[s]));break;case 293:this.$=o.addDataToNode(o,i[s-2],i[s])(function(){return"!"===r[s-1].charAt(0)?new o.Op(r[s-1].slice(1),r[s-2],r[s]).invert():new o.Op(r[s-1],r[s-2],r[s])}());break;case 294:this.$=o.addDataToNode(o,i[s-2],i[s])(new o.Assign(r[s-2],r[s],r[s-1]));break;case 295:this.$=o.addDataToNode(o,i[s-4],i[s])(new o.Assign(r[s-4],r[s-1],r[s-3]));break;case 296:this.$=o.addDataToNode(o,i[s-3],i[s])(new o.Assign(r[s-3],r[s],r[s-2]));}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{1:[3]},{1:[2,2],6:H},a(W,[2,3]),a(W,[2,6],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(W,[2,7],{147:78,138:107,144:108,139:O,141:L,145:F,162:le}),a(W,[2,8]),a(de,[2,15],{118:109,93:110,98:116,41:pe,42:pe,120:pe,74:ce,75:ue,95:me,96:he,97:ge,99:fe,119:ye}),a(de,[2,16]),a(de,[2,17]),a(de,[2,18]),a(de,[2,19]),a(de,[2,20]),a(de,[2,21]),a(de,[2,22]),a(de,[2,23]),a(de,[2,24]),a(de,[2,25]),a(de,[2,26]),a(ke,[2,11]),a(ke,[2,12]),a(ke,[2,13]),a(ke,[2,14]),a(W,[2,9]),a(W,[2,10]),a(Te,ve,{57:[1,119]}),a(Te,[2,115]),a(Te,[2,116]),a(Te,[2,117]),a(Te,Ne),a(Te,[2,119]),a(Te,[2,120]),a([6,31,82,87],be,{81:120,88:121,89:122,33:124,63:125,90:126,67:127,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),{30:130,31:De},{7:132,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:136,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:137,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:138,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:139,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:[1,140],79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:141,94:28,101:$,123:E,124:x,125:I,136:R},{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:144,94:28,101:$,123:E,124:x,125:I,136:R},a(Ie,Se,{167:[1,145],168:[1,146],181:[1,147]}),a(de,[2,267],{157:[1,148]}),{30:149,31:De},{30:150,31:De},a(de,[2,231]),{30:151,31:De},{7:152,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,153],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ae,[2,139],{49:26,68:27,94:28,47:29,70:30,69:31,90:54,67:55,38:56,44:58,33:71,63:72,40:81,16:142,56:143,30:154,92:156,31:De,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,101:$,105:[1,155],123:E,124:x,125:I,136:R}),{7:157,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,158],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a([1,6,32,43,137,139,141,145,162,169,170,171,172,173,174,175,176,177,178,179,180],Re,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:159,13:t,28:Ee,29:Oe,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:[1,161],79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(ke,Le,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:162,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),{33:168,34:n,35:r,40:164,41:s,42:l,101:[1,167],107:165,108:166,113:Fe},{25:171,33:172,34:n,35:r,101:[1,170],104:_,112:[1,173],116:[1,174]},a(Ie,[2,112]),a(Ie,[2,113]),a(Te,[2,41]),a(Te,[2,42]),a(Te,[2,43]),a(Te,[2,44]),a(Te,[2,45]),a(Te,[2,46]),a(Te,[2,47]),a(Te,[2,48]),{4:175,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,31:[1,176],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:177,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:179,123:E,124:x,125:I,126:Me,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{74:Ue,75:Ve,118:184,119:ye,120:pe},a(Te,[2,191]),a(Te,[2,192],{36:187,37:Be}),{31:[2,88]},{31:[2,89]},a(Ge,[2,108]),a(Ge,[2,110]),{7:189,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:190,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:191,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:193,8:134,12:19,13:t,14:21,15:22,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:Ee,30:192,31:De,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{33:198,34:n,35:r,63:199,67:201,90:200,94:194,101:$,124:_e,125:I,149:195,150:[1,196],151:197},{148:202,152:[1,203],153:[1,204],154:[1,205]},a([6,31,87,103],Xe,{40:81,102:206,58:207,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,34:n,35:r,37:Be,39:i,41:s,42:l,64:He,71:We,101:$,123:E,124:x,136:R}),a(Ye,[2,35]),a(Ye,[2,36]),a(Te,[2,39]),{16:142,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:223,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:143,63:72,67:55,68:27,69:31,70:30,71:y,90:54,92:224,94:28,101:$,123:E,124:x,125:I,136:R},a(qe,[2,32]),a(qe,[2,33]),a(ze,[2,37]),{4:225,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(W,[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,12:19,14:21,15:22,10:23,11:24,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,5:226,13:t,28:o,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:T,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(de,[2,280]),{7:227,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:228,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:229,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:230,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:231,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:232,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:233,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:234,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:235,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:236,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:237,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:238,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:239,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:240,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,230]),a(de,[2,235]),{7:241,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,229]),a(de,[2,234]),{40:242,41:s,42:l,72:243,120:Ke},a(Ge,[2,109]),a(Je,[2,188]),{36:245,37:Be},{36:246,37:Be},a(Ge,[2,127],{36:247,37:Be}),{36:248,37:Be},a(Ge,[2,128]),{7:250,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:Ze,67:55,68:27,69:31,70:30,71:y,76:249,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,100:251,101:$,104:_,106:C,114:D,123:E,124:x,125:I,127:252,128:Qe,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{75:ue,98:255,99:fe},{6:[1,257],7:256,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,258],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a([6,31],ea,{86:261,82:[1,259],87:aa}),a(ta,[2,93]),a(ta,[2,97],{57:[1,263],64:[1,262]}),a(ta,[2,101],{33:124,63:125,90:126,67:127,89:264,34:n,35:r,101:$,124:_e,125:Ce}),a(oa,[2,102]),a(oa,[2,103]),a(oa,[2,104]),a(oa,[2,105]),{36:187,37:Be},{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:179,123:E,124:x,125:I,126:Me,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,87]),{4:267,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,32:[1,266],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(na,[2,271],{147:78,138:104,144:105,169:K}),{7:139,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{138:107,139:O,141:L,144:108,145:F,147:78,162:le},a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,169,170,171,172,173,174,175,176,177,178,179,180],Re,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:159,13:t,28:Ee,29:Oe,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,143:w,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(ra,[2,272],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,273],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,274],{147:78,138:104,144:105,169:K,171:Z}),a(na,[2,275],{147:78,138:104,144:105,169:K}),a(W,[2,85],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:268,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:Le,141:Le,145:Le,162:Le,143:w,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(de,[2,276],{41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se}),a(Je,pe,{118:109,93:110,98:116,74:ce,75:ue,95:me,96:he,97:ge,99:fe,119:ye}),a(ia,ve),a(de,[2,277],{41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se}),a(de,[2,278]),a(de,[2,279]),{6:[1,271],7:269,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,270],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{30:272,31:De,161:[1,273]},a(de,[2,213],{132:274,133:[1,275],134:[1,276]}),a(de,[2,228]),a(de,[2,236]),{31:[1,277],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{156:278,158:279,159:sa},a(de,[2,140]),{7:281,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ae,[2,143],{30:282,31:De,41:Se,42:Se,74:Se,75:Se,95:Se,96:Se,97:Se,99:Se,119:Se,120:Se,105:[1,283]}),a(la,[2,220],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{67:284,101:$},a(la,[2,28],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:285,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(W,[2,83],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:286,13:t,28:Ee,31:we,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:Le,141:Le,145:Le,162:Le,143:w,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(ke,da,{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{67:287,101:$},a(ke,[2,147]),{29:[1,288],87:[1,289]},{29:[1,290]},{31:pa,33:295,34:n,35:r,103:[1,291],109:292,110:293,112:ca},a([29,87],[2,163]),{111:[1,297]},{31:ua,33:302,34:n,35:r,103:[1,298],112:ma,115:299,117:300},a(ke,[2,167]),{57:[1,304]},{7:305,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{29:[1,306]},{6:H,137:[1,307]},{4:308,5:3,7:4,8:5,9:6,10:23,11:24,12:19,13:t,14:21,15:22,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:o,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:T,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a([6,31,87,126],ha,{147:78,138:104,144:105,127:309,64:[1,310],128:Qe,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ga,[2,194]),a([6,31,126],ea,{86:311,87:fa}),a(ya,[2,203]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:313,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ya,[2,209]),a(ya,[2,210],{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,7:314,13:t,28:Ee,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),{72:315,120:Ke},{36:316,37:Be},{7:317,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ka,[2,193]),a(ka,[2,34]),{30:318,31:De,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Ta,[2,224],{147:78,138:104,144:105,139:O,140:[1,319],141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ta,[2,226],{147:78,138:104,144:105,139:O,140:[1,320],141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,232]),a(va,[2,233],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,162,165,166,169,170,171,172,173,174,175,176,177,178,179,180],[2,237],{146:[1,321]}),a(Na,[2,240]),{33:198,34:n,35:r,63:199,67:201,90:200,101:$,124:_e,125:Ce,149:322,151:197},a(Na,[2,246],{87:[1,323]}),a(ba,[2,242]),a(ba,[2,243]),a(ba,[2,244]),a(ba,[2,245]),a(de,[2,239]),{7:324,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:325,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:326,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a($a,ea,{86:327,87:_a}),a(Ca,[2,135]),a(Ca,[2,52],{61:[1,329]}),a(Ca,[2,53]),a(Da,[2,61],{72:332,73:333,57:[1,330],64:[1,331],74:Ea,75:xa,120:Ke}),a(Da,[2,62]),{33:214,34:n,35:r,36:215,37:Be,62:336,63:216,65:337,66:217,67:218,68:219,69:220,70:221,71:We,101:$,123:E,124:x,136:R},{64:[1,338],72:339,73:340,74:Ea,75:xa,120:Ke},a(Ia,[2,58]),a(Ia,[2,59]),a(Ia,[2,60]),a(Sa,[2,67]),a(Sa,[2,68]),a(Sa,[2,69]),a(Sa,[2,70]),a(Sa,[2,71]),{72:341,74:Ue,75:Ve,120:Ke},a(ia,Ne,{48:[1,342]}),a(ia,Se),{6:H,43:[1,343]},a(W,[2,4]),a(Aa,[2,281],{147:78,138:104,144:105,169:K,170:J,171:Z}),a(Aa,[2,282],{147:78,138:104,144:105,169:K,170:J,171:Z}),a(ra,[2,283],{147:78,138:104,144:105,169:K,171:Z}),a(ra,[2,284],{147:78,138:104,144:105,169:K,171:Z}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,172,173,174,175,176,177,178,179,180],[2,285],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,173,174,175,176,177,178,179],[2,286],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,174,175,176,177,178,179],[2,287],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,175,176,177,178,179],[2,288],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,176,177,178,179],[2,289],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,177,178,179],[2,290],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,178,179],[2,291],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,179],[2,292],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,180:se}),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,146,162,173,174,175,176,177,178,179,180],[2,293],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q}),a(va,[2,270],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,269],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ra,[2,184]),a(Ra,[2,185]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,121:[1,344],122:345,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ge,[2,123]),a(Ge,[2,124]),a(Ge,[2,125]),a(Ge,[2,126]),{77:[1,346]},{64:Ze,77:[2,131],127:347,128:Qe,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{77:[2,132]},{7:348,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,77:[2,202],78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Oa,[2,196]),a(Oa,La),a(Ge,[2,130]),a(la,[2,49],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:349,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:350,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{83:351,84:N,85:b},a(wa,Fa,{89:122,33:124,63:125,90:126,67:127,88:352,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),{6:Pa,31:ja},a(ta,[2,98]),{7:355,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ta,[2,99]),a(ya,ha,{147:78,138:104,144:105,64:[1,356],139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ma,[2,30]),{6:H,32:[1,357]},a(W,[2,84],{147:78,138:104,144:105,139:da,141:da,145:da,162:da,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,294],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:358,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:359,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,268]),{7:360,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,214],{133:[1,361]}),{30:362,31:De},{30:365,31:De,33:363,34:n,35:r,67:364,101:$},{156:366,158:279,159:sa},{32:[1,367],157:[1,368],158:369,159:sa},a(Ua,[2,261]),{7:371,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,130:370,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Va,[2,141],{147:78,138:104,144:105,30:372,31:De,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,144]),{7:373,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{32:[1,374]},a(la,[2,29],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(W,[2,82],{147:78,138:104,144:105,139:da,141:da,145:da,162:da,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,375]},{40:376,41:s,42:l},{101:[1,378],108:377,113:Fe},{40:379,41:s,42:l},{29:[1,380]},a($a,ea,{86:381,87:Ba}),a(Ca,[2,154]),{31:pa,33:295,34:n,35:r,109:383,110:293,112:ca},a(Ca,[2,159],{111:[1,384]}),a(Ca,[2,161],{111:[1,385]}),{33:386,34:n,35:r},a(ke,[2,165]),a($a,ea,{86:387,87:Ga}),a(Ca,[2,174]),{31:ua,33:302,34:n,35:r,112:ma,115:389,117:300},a(Ca,[2,179],{111:[1,390]}),a(Ca,[2,182],{111:[1,391]}),{6:[1,393],7:392,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,394],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Xa,[2,171],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{40:395,41:s,42:l},a(Te,[2,222]),{6:H,32:[1,396]},{7:397,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a([13,28,34,35,39,41,42,45,46,50,51,52,53,54,55,71,78,79,80,84,85,101,104,106,114,123,124,125,131,135,136,139,141,143,145,155,161,163,164,165,166,167,168],La,{6:Ha,31:Ha,87:Ha,126:Ha}),{6:Wa,31:Ya,126:[1,398]},a([6,31,32,121,126],Fa,{16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,12:19,14:21,15:22,56:25,49:26,68:27,94:28,47:29,70:30,69:31,83:33,92:41,160:42,138:44,142:45,144:46,90:54,67:55,38:56,44:58,33:71,63:72,147:78,40:81,8:134,91:182,7:265,129:401,13:t,28:Ee,34:n,35:r,39:i,41:s,42:l,45:d,46:p,50:c,51:u,52:m,53:h,54:g,55:f,64:je,71:y,78:k,79:xe,80:v,84:N,85:b,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,139:O,141:L,143:w,145:F,155:P,161:j,163:M,164:U,165:V,166:B,167:G,168:X}),a(wa,ea,{86:402,87:fa}),a(ya,[2,107],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ra,[2,186]),a(Te,[2,121]),{77:[1,403],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(qa,[2,265]),{7:404,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:405,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:406,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Na,[2,241]),{33:198,34:n,35:r,63:199,67:201,90:200,101:$,124:_e,125:Ce,151:407},a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,141,145,162],[2,248],{147:78,138:104,144:105,140:[1,408],146:[1,409],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,249],{147:78,138:104,144:105,140:[1,410],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,255],{147:78,138:104,144:105,140:[1,411],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{6:Ka,31:Ja,103:[1,412]},a(Za,Fa,{40:81,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,58:415,34:n,35:r,37:Be,39:i,41:s,42:l,64:He,71:We,101:$,123:E,124:x,136:R}),{7:416,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,417],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:418,8:134,12:19,13:t,14:21,15:22,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:Ee,31:[1,419],33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ca,[2,63]),a(Sa,[2,73]),a(Sa,[2,75]),{36:420,37:Be},{7:250,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:Ze,67:55,68:27,69:31,70:30,71:y,76:421,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,100:251,101:$,104:_,106:C,114:D,123:E,124:x,125:I,127:252,128:Qe,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ca,[2,64],{72:332,73:333,74:Ea,75:xa,120:Ke}),a(Ca,[2,66],{72:339,73:340,74:Ea,75:xa,120:Ke}),a(Ca,[2,65]),a(Sa,[2,74]),a(Sa,[2,76]),a(Sa,[2,72]),a(Te,[2,40]),a(ze,[2,38]),a(Ra,[2,189]),a([6,31,121],ea,{86:422,87:fa}),a(Ge,[2,129]),{7:423,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,77:[2,200],78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{77:[2,201],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(la,[2,50],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,424],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{30:425,31:De},a(ta,[2,94]),{33:124,34:n,35:r,63:125,64:$e,67:127,88:426,89:122,90:126,101:$,124:_e,125:Ce},a(Qa,be,{88:121,89:122,33:124,63:125,90:126,67:127,81:427,34:n,35:r,64:$e,101:$,124:_e,125:Ce}),a(ta,[2,100],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ya,Ha),a(Ma,[2,31]),{32:[1,428],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(la,[2,296],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{30:429,31:De,138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{30:430,31:De},a(de,[2,215]),{30:431,31:De},{30:432,31:De},a(et,[2,219]),{32:[1,433],157:[1,434],158:369,159:sa},a(de,[2,259]),{30:435,31:De},a(Ua,[2,262]),{30:436,31:De,87:[1,437]},a(at,[2,211],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,142]),a(Va,[2,145],{147:78,138:104,144:105,30:438,31:De,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(de,[2,221]),a(ke,[2,80]),a(ke,[2,148]),{29:[1,439]},{31:pa,33:295,34:n,35:r,109:440,110:293,112:ca},a(ke,[2,149]),{40:441,41:s,42:l},{6:tt,31:ot,103:[1,442]},a(Za,Fa,{33:295,110:445,34:n,35:r,112:ca}),a(wa,ea,{86:446,87:Ba}),{33:447,34:n,35:r},{33:448,34:n,35:r},{29:[2,164]},{6:nt,31:rt,103:[1,449]},a(Za,Fa,{33:302,117:452,34:n,35:r,112:ma}),a(wa,ea,{86:453,87:Ga}),{33:454,34:n,35:r,112:[1,455]},{33:456,34:n,35:r},a(Xa,[2,168],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:457,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:458,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ke,[2,172]),{137:[1,459]},{126:[1,460],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(ga,[2,195]),{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,129:461,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:265,8:134,12:19,13:t,14:21,15:22,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:Ee,31:Pe,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,64:je,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,91:182,92:41,94:28,101:$,104:_,106:C,114:D,122:462,123:E,124:x,125:I,129:180,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ya,[2,204]),{6:Wa,31:Ya,32:[1,463]},a(Te,[2,122]),a(va,[2,225],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,227],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(va,[2,238],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Na,[2,247]),{7:464,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:465,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:466,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:467,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(ga,[2,133]),{33:214,34:n,35:r,36:215,37:Be,38:211,39:i,40:81,41:s,42:l,58:468,59:208,60:209,62:210,63:216,64:He,65:213,66:217,67:218,68:219,69:220,70:221,71:We,101:$,123:E,124:x,136:R},a(Qa,Xe,{40:81,58:207,59:208,60:209,62:210,38:211,65:213,33:214,36:215,63:216,66:217,67:218,68:219,69:220,70:221,102:469,34:n,35:r,37:Be,39:i,41:s,42:l,64:He,71:We,101:$,123:E,124:x,136:R}),a(Ca,[2,136]),a(Ca,[2,54],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:470,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Ca,[2,56],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{7:471,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(Sa,[2,77]),{77:[1,472]},{6:Wa,31:Ya,121:[1,473]},{77:[2,199],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(de,[2,51]),a(de,[2,86]),a(ta,[2,95]),a(wa,ea,{86:474,87:aa}),a(de,[2,295]),a(qa,[2,266]),a(de,[2,216]),a(et,[2,217]),a(et,[2,218]),a(de,[2,257]),{30:475,31:De},{32:[1,476]},a(Ua,[2,263],{6:[1,477]}),{7:478,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},a(de,[2,146]),{40:479,41:s,42:l},a($a,ea,{86:480,87:Ba}),a(ke,[2,150]),{29:[1,481]},{33:295,34:n,35:r,110:482,112:ca},{31:pa,33:295,34:n,35:r,109:483,110:293,112:ca},a(Ca,[2,155]),{6:tt,31:ot,32:[1,484]},a(Ca,[2,160]),a(Ca,[2,162]),a(ke,[2,166],{29:[1,485]}),{33:302,34:n,35:r,112:ma,117:486},{31:ua,33:302,34:n,35:r,112:ma,115:487,117:300},a(Ca,[2,175]),{6:nt,31:rt,32:[1,488]},a(Ca,[2,180]),a(Ca,[2,181]),a(Ca,[2,183]),a(Xa,[2,169],{147:78,138:104,144:105,139:O,141:L,145:F,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),{32:[1,489],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Te,[2,223]),a(Te,[2,198]),a(ya,[2,205]),a(wa,ea,{86:490,87:fa}),a(ya,[2,206]),a([1,6,31,32,43,64,77,82,87,103,121,126,128,137,139,140,141,145,162],[2,250],{147:78,138:104,144:105,146:[1,491],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(za,[2,252],{147:78,138:104,144:105,140:[1,492],165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,251],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,256],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ca,[2,137]),a(wa,ea,{86:493,87:_a}),{32:[1,494],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},{32:[1,495],138:104,139:O,141:L,144:105,145:F,147:78,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se},a(Sa,[2,78]),a(Ra,[2,190]),{6:Pa,31:ja,32:[1,496]},{32:[1,497]},a(de,[2,260]),a(Ua,[2,264]),a(at,[2,212],{147:78,138:104,144:105,139:O,141:L,145:F,162:Y,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(ke,[2,152]),{6:tt,31:ot,103:[1,498]},{40:499,41:s,42:l},a(Ca,[2,156]),a(wa,ea,{86:500,87:Ba}),a(Ca,[2,157]),{40:501,41:s,42:l},a(Ca,[2,176]),a(wa,ea,{86:502,87:Ga}),a(Ca,[2,177]),a(ke,[2,170]),{6:Wa,31:Ya,32:[1,503]},{7:504,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{7:505,8:134,12:19,13:t,14:21,15:22,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:Ee,33:71,34:n,35:r,38:56,39:i,40:81,41:s,42:l,44:58,45:d,46:p,47:29,49:26,50:c,51:u,52:m,53:h,54:g,55:f,56:25,63:72,67:55,68:27,69:31,70:30,71:y,78:k,79:xe,80:v,83:33,84:N,85:b,90:54,92:41,94:28,101:$,104:_,106:C,114:D,123:E,124:x,125:I,131:S,135:A,136:R,138:44,139:O,141:L,142:45,143:w,144:46,145:F,147:78,155:P,160:42,161:j,163:M,164:U,165:V,166:B,167:G,168:X},{6:Ka,31:Ja,32:[1,506]},a(Ca,[2,55]),a(Ca,[2,57]),a(ta,[2,96]),a(de,[2,258]),{29:[1,507]},a(ke,[2,151]),{6:tt,31:ot,32:[1,508]},a(ke,[2,173]),{6:nt,31:rt,32:[1,509]},a(ya,[2,207]),a(la,[2,253],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(la,[2,254],{147:78,138:104,144:105,165:q,166:z,169:K,170:J,171:Z,172:Q,173:ee,174:ae,175:te,176:oe,177:ne,178:re,179:ie,180:se}),a(Ca,[2,138]),{40:510,41:s,42:l},a(Ca,[2,158]),a(Ca,[2,178]),a(ke,[2,153])],defaultActions:{69:[2,88],70:[2,89],251:[2,132],386:[2,164]},parseError:function(e,a){if(a.recoverable)this.trace(e);else{var t=function(e,a){this.message=e,this.hash=a};throw t.prototype=Error,new t(e,a)}},parse:function(e){var a=this,t=[0],o=[null],n=[],i=this.table,s="",l=0,d=0,c=0,u=1,m=n.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,"undefined"==typeof h.yylloc&&(h.yylloc={});var y=h.yylloc;n.push(y);var k=h.options&&h.options.ranges;this.parseError="function"==typeof g.yy.parseError?g.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var T=function(){var e;return e=h.lex()||u,"number"!=typeof e&&(e=a.symbols_[e]||e),e};for(var v={},N,b,$,_,C,D,p,E,x;;){if($=t[t.length-1],this.defaultActions[$]?_=this.defaultActions[$]:((null===N||"undefined"==typeof N)&&(N=T()),_=i[$]&&i[$][N]),"undefined"==typeof _||!_.length||!_[0]){var I="";for(D in x=[],i[$])this.terminals_[D]&&D>2&&x.push("'"+this.terminals_[D]+"'");I=h.showPosition?"Parse error on line "+(l+1)+":\n"+h.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[N]||N)+"'":"Parse error on line "+(l+1)+": Unexpected "+(N==u?"end of input":"'"+(this.terminals_[N]||N)+"'"),this.parseError(I,{text:h.match,token:this.terminals_[N]||N,line:h.yylineno,loc:y,expected:x})}if(_[0]instanceof Array&&1<_.length)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+N);switch(_[0]){case 1:t.push(N),o.push(h.yytext),n.push(h.yylloc),t.push(_[1]),N=null,b?(N=b,b=null):(d=h.yyleng,s=h.yytext,l=h.yylineno,y=h.yylloc,0n.call(this.compiledComments,i)))&&(this.compiledComments.push(i),s=i.here?new S(i).compileNode(e):new K(i).compileNode(e),s.isHereComment&&!s.newLine||a.includeCommentFragments()?c(s):s.unshift?(null==(o=t[0]).precedingComments&&(o.precedingComments=[]),t[0].precedingComments.push(s)):(null==(r=t[t.length-1]).followingComments&&(r.followingComments=[]),t[t.length-1].followingComments.push(s)));return t}},{key:"cache",value:function(e,a,t){var o,n,r;return o=null==t?this.shouldCache():t(this),o?(n=new R(e.scope.freeVariable("ref")),r=new d(n,this),a?[r.compileToFragments(e,a),[this.makeCode(n.value)]]:[r,n]):(n=a?this.compileToFragments(e,a):this,[n,n])}},{key:"hoist",value:function(){var e,a,t;return this.hoisted=!0,t=new A(this),e=this.compileNode,a=this.compileToFragments,this.compileNode=function(a){return t.update(e,a)},this.compileToFragments=function(e){return t.update(a,e)},t}},{key:"cacheToCodeFragments",value:function(e){return[He(e[0]),He(e[1])]}},{key:"makeReturn",value:function(e){var a;return a=this.unwrapAll(),e?new h(new J(e+".push"),[a]):new ge(a)}},{key:"contains",value:function(e){var a;return a=void 0,this.traverseChildren(!1,function(t){if(e(t))return a=t,!1}),a}},{key:"lastNode",value:function(e){return 0===e.length?null:e[e.length-1]}},{key:"toString",value:function(){var e=0=W?this.wrapInParentheses(t):t)}},{key:"compileRoot",value:function(e){var a,t,o,n,r,i;for(e.indent=e.bare?"":De,e.level=z,this.spaced=!0,e.scope=new ye(null,this,null,null==(r=e.referencedVars)?[]:r),i=e.locals||[],(t=0,o=i.length);t=Y?this.wrapInParentheses(a):a}}]),a}(re),t.StringLiteral=Ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(){var e;return e=this.csx?[this.makeCode(this.unquote(!0))]:_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this)}},{key:"unquote",value:function(e){var a;return a=this.value.slice(1,-1),e?a.replace(/\\n/g,"\n").replace(/\\"/g,"\""):a}}]),a}(J),t.RegexLiteral=me=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.PassthroughLiteral=pe=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.IdentifierLiteral=R=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"eachName",value:function(e){return e(this)}}]),a}(J);return e.prototype.isAssignable=Fe,e}(),t.CSXTag=m=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(R),t.PropertyName=ce=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J);return e.prototype.isAssignable=Fe,e}(),t.StatementLiteral=ve=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"jumps",value:function(e){return"break"!==this.value||(null==e?void 0:e.loop)||(null==e?void 0:e.block)?"continue"!==this.value||null!=e&&e.loop?void 0:this:this}},{key:"compileNode",value:function(){return[this.makeCode(""+this.tab+this.value+";")]}}]),a}(J);return e.prototype.isStatement=Fe,e.prototype.makeReturn=Ee,e}(),t.ThisLiteral=Ie=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"this"))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t;return a=(null==(t=e.scope.method)?void 0:t.bound)?e.scope.method.context:this.value,[this.makeCode(a)]}}]),a}(J),t.UndefinedLiteral=Oe=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"undefined"))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){return[this.makeCode(e.level>=X?"(void 0)":"void 0")]}}]),a}(J),t.NullLiteral=ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"null"))}return _inherits(a,e),a}(J),t.BooleanLiteral=u=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(J),t.Return=ge=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.expression=e,t}return _inherits(a,e),_createClass(a,[{key:"compileToFragments",value:function(e,t){var o,n;return o=null==(n=this.expression)?void 0:n.makeReturn(),o&&!(o instanceof a)?o.compileToFragments(e,t):_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileToFragments",this).call(this,e,t)}},{key:"compileNode",value:function(e){var a,t,o,r;if(a=[],this.expression){for(a=this.expression.compileToFragments(e,q),ia(a,this.makeCode(this.tab+"return ")),(o=0,r=a.length);othis.properties.length&&!this.base.shouldCache()&&(null==n||!n.shouldCache()))?[this,this]:(t=new a(this.base,this.properties.slice(0,-1)),t.shouldCache()&&(o=new R(e.scope.freeVariable("base")),t=new a(new de(new d(o,t)))),!n)?[t,o]:(n.shouldCache()&&(r=new R(e.scope.freeVariable("name")),n=new V(new d(r,n.index)),r=new V(r)),[t.add(n),new a(o||t.base,[r||n])])}},{key:"compileNode",value:function(e){var a,t,o,n,r;for(this.base.front=this.front,r=this.properties,a=this.base.compileToFragments(e,r.length?X:null),r.length&&fe.test(He(a))&&a.push(this.makeCode(".")),(t=0,o=r.length);to.length&&(o=r);this.content=this.content.replace(RegExp("^("+r+")","gm"),"")}return this.content="/*"+this.content+(a?" ":"")+"*/",e=this.makeCode(this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.multiline=l,e.isComment=e.isHereComment=!0,e}}]),a}(p),t.LineComment=K=function(e){function a(e){var t=e.content,o=e.newLine,n=e.unshift;_classCallCheck(this,a);var r=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return r.content=t,r.newLine=o,r.unshift=n,r}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(){var e;return e=this.makeCode(/^\s*$/.test(this.content)?"":"//"+this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.trail=!this.newLine&&!this.unshift,e.isComment=e.isLineComment=!0,e}}]),a}(p),t.Call=h=function(){var e=function(e){function a(e){var t=1")),(g=l).push.apply(g,_toConsumableArray(i.compileNode(e,W))),(f=l).push.apply(f,[this.makeCode("")]))}else l.push(this.makeCode(" />"));return l}}]),a}(p);return e.prototype.children=["variable","args"],e}(),t.SuperCall=_e=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function(e){var a;return(null==(a=this.expressions)?void 0:a.length)&&e.level===z}},{key:"compileNode",value:function(e){var t,o,n,r;if(null==(o=this.expressions)||!o.length)return _get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e);if(r=new J(He(_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e))),n=new c(this.expressions.slice()),e.level>z){var i=r.cache(e,null,Fe),s=_slicedToArray(i,2);r=s[0],t=s[1],n.push(t)}return n.unshift(r),n.compileToFragments(e,e.level===z?e.level:W)}}]),a}(h);return e.prototype.children=h.prototype.children.concat(["expressions"]),e}(),t.Super=$e=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.accessor=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o,n,r,i,s,l;if(t=e.scope.namedMethod(),(null==t?void 0:t.isMethod)||this.error("cannot use super outside of an instance method"),null==t.ctor&&null==this.accessor){var p=t;o=p.name,l=p.variable,(o.shouldCache()||o instanceof V&&o.index.isAssignable())&&(n=new R(e.scope.parent.freeVariable("name")),o.index=new d(n,o.index)),this.accessor=null==n?o:new V(n)}return(null==(r=this.accessor)||null==(i=r.name)?void 0:i.comments)&&(s=this.accessor.name.comments,delete this.accessor.name.comments),a=new Le(new J("super"),this.accessor?[this.accessor]:[]).compileToFragments(e),s&&Me(s,this.accessor.name),a}}]),a}(p);return e.prototype.children=["accessor"],e}(),t.RegexWithInterpolations=he=function(e){function a(){var e=0"+this.equals,o=null==this.stepNum?l?(a=[this.fromNum,this.toNum],n=a[0],u=a[1],a,n<=u?d+" "+u:r+" "+u):(t=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,t+" ? "+d+" "+this.toVar+" : "+r+" "+this.toVar):0=a(this.fromNum-this.toNum))?(c=function(){h=[];for(var e=u=this.fromNum,a=this.toNum;u<=a?e<=a:e>=a;u<=a?e++:e--)h.push(e);return h}.apply(this),this.exclusive&&c.pop(),[this.makeCode("["+c.join(", ")+"]")]):(i=this.tab+De,s=e.scope.freeVariable("i",{single:!0}),m=e.scope.freeVariable("results"),p="\n"+i+m+" = [];",l?(e.index=s,o=He(this.compileNode(e))):(g=s+" = "+this.fromC+(this.toC===this.toVar?"":", "+this.toC),n=this.fromVar+" <= "+this.toVar,o="var "+g+"; "+n+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+n+" ? "+s+"++ : "+s+"--"),d="{ "+m+".push("+s+"); }\n"+i+"return "+m+";\n"+e.indent,r=function(e){return null==e?void 0:e.contains(qe)},(r(this.from)||r(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+p+"\n"+i+"for ("+o+")"+d+"}).apply(this"+(null==t?"":t)+")")])}}]),t}(p);return e.prototype.children=["from","to"],e}(),t.Slice=ke=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.range=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a=this.range,t,o,n,r,i,s;return i=a.to,n=a.from,r=n&&n.compileToFragments(e,q)||[this.makeCode("0")],i&&(t=i.compileToFragments(e,q),o=He(t),(this.range.exclusive||-1!=+o)&&(s=", "+(this.range.exclusive?o:i.isNumber()?""+(+o+1):(t=i.compileToFragments(e,X),"+"+He(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+He(r)+(s||"")+")")]}}]),a}(p);return e.prototype.children=["range"],e}(),t.Obj=ie=function(){var e=function(e){function a(e){var t=1v)return s.push(new Le(new ie(y.slice(v,a),!0)))};e=y[a];)(d=this.addInitializerExpression(e))&&(k(),s.push(d),i.push(d),v=a+1),a++;k(),o.apply(r,[l,l-l+1].concat(s)),s,l+=s.length}else(d=this.addInitializerExpression(n))&&(i.push(d),r[l]=d),l+=1;for(u=0,h=i.length;uW||e.level===z&&n&&this.variable.base instanceof ie&&!this.nestedLhs&&!this.param?this.wrapInParentheses(t):t)}},{key:"compileObjectDestruct",value:function(e){var t,o,n,r,l,d,p,u,m,g,f,y;m=function(t){var o;if((o=!1,!(t instanceof a&&t.value.base instanceof ie))&&(o=t instanceof a?t.value.base instanceof R?t.value.base.compileWithoutComments(e):t.variable.base.compileWithoutComments(e):t.compileWithoutComments(e),o))return e.scope.add(o,"var",!0)},o=function(t){var o;if(t instanceof a){var n=t.variable.cache(e),r=_slicedToArray(n,2);return t.variable=r[0],o=r[1],o}return t},n=function(t){var n,r;return r=o(t),n=t instanceof a&&t.variable!==r,n||!r.isAssignable()?r:new J("'"+r.compileWithoutComments(e)+"'")},g=function(t,r){var l,d,c,u,h,f,y,T,p,k,v;for(k=[],v=void 0,(d=c=0,u=t.length);c=Y?this.wrapInParentheses(n):n;var x=k,I=_slicedToArray(x,1);if(y=I[0],1===T&&y instanceof v&&y.error("Destructuring assignment has no target"),c=this.variable.isObject(),$&&1===T&&!(y instanceof Te)){if(r=void 0,y instanceof a&&"object"===y.context){var S=y;p=S.variable.base,y=S.value,y instanceof a&&(r=y.value,y=y.variable)}else y instanceof a&&(r=y.value,y=y.variable),p=c?y.this?y.properties[0].name:new ce(y.unwrap().value):new re(0);return t=p.unwrap()instanceof ce,C=new Le(C),C.properties.push(new(t?i:V)(p)),g=Ke(y.unwrap().value),g&&y.error(g),r&&(r.isDefaultValue=!0,C=new se("?",C,r)),new a(y,C,null,{param:this.param}).compileToFragments(e,z)}for(D=C.compileToFragments(e,W),E=He(D),o=[],s=!1,(!(C.unwrap()instanceof R)||this.variable.assigns(E))&&(N=e.scope.freeVariable("ref"),o.push([this.makeCode(N+" = ")].concat(_toConsumableArray(D))),D=[this.makeCode(N)],E=N),(d=m=0,h=k.length);mz?this.wrapInParentheses(o):o}},{key:"eachName",value:function(e){return this.variable.unwrapAll().eachName(e)}}]),a}(p);return e.prototype.children=["variable","value"],e.prototype.isAssignable=Fe,e}(),t.FuncGlyph=I=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.glyph=e,t}return _inherits(a,e),a}(p),t.Code=f=function(){var e=function(e){function a(e,t,o){_classCallCheck(this,a);var n=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this)),r;return n.funcGlyph=o,n.params=e||[],n.body=t||new c,n.bound="=>"===(null==(r=n.funcGlyph)?void 0:r.glyph),n.isGenerator=!1,n.isAsync=!1,n.isMethod=!1,n.body.traverseChildren(!1,function(e){if((e instanceof se&&e.isYield()||e instanceof Pe)&&(n.isGenerator=!0),(e instanceof se&&e.isAwait()||e instanceof l)&&(n.isAsync=!0),n.isGenerator&&n.isAsync)return e.error("function can't contain both yield and await")}),n}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function(){return this.isMethod}},{key:"makeScope",value:function(e){return new ye(e,this.body,this)}},{key:"compileNode",value:function(e){var a,t,o,r,p,c,u,g,f,y,T,i,N,b,k,l,$,_,C,m,D,E,x,I,S,A,L,w,F,P,j,M,U,V,B,H,W,Y,q,z,K;for(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator&&this.name.error("Class constructor may not be a generator")),this.bound&&((null==(F=e.scope.method)?void 0:F.bound)&&(this.context=e.scope.method.context),!this.context&&(this.context="this")),e.scope=Ve(e,"classScope")||this.makeScope(e.scope),e.scope.shared=Ve(e,"sharedScope"),e.indent+=De,delete e.bare,delete e.isExistentialEquals,A=[],g=[],z=null==(P=null==(j=this.thisAssignments)?void 0:j.slice())?[]:P,L=[],y=!1,f=!1,I=[],this.eachParamName(function(a,t,o){var r;if(0<=n.call(I,a)&&t.error("multiple parameters named '"+a+"'"),I.push(a),t.this)return a=t.properties[0].name.value,0<=n.call(G,a)&&(a="_"+a),r=new R(e.scope.freeVariable(a)),o.renameParam(t,r),z.push(new d(t,r))}),M=this.params,(T=N=0,l=M.length);N")),o.push(this.makeCode(" {")),null==r?void 0:r.length){var te;(te=o).push.apply(te,[this.makeCode("\n")].concat(_toConsumableArray(r),[this.makeCode("\n"+this.tab)]))}return o.push(this.makeCode("}")),this.isMethod?Ye(o,this):this.front||e.level>=X?this.wrapInParentheses(o):o}},{key:"eachParamName",value:function(e){var a,t,o,n,r;for(n=this.params,r=[],(a=0,t=n.length);a"===e||">="===e||"<="===e||"==="===e||"!=="===e}},{key:"invert",value:function(){var e,a,o,n,i;if(this.isChainable()&&this.first.isChainable()){for(e=!0,a=this;a&&a.operator;)e&&(e=a.operator in t),a=a.first;if(!e)return new de(this).invert();for(a=this;a&&a.operator;)a.invert=!a.invert,a.operator=t[a.operator],a=a.first;return this}return(n=t[this.operator])?(this.operator=n,this.first.unwrap()instanceof r&&this.first.invert(),this):this.second?new de(this).invert():"!"===this.operator&&(o=this.first.unwrap())instanceof r&&("!"===(i=o.operator)||"in"===i||"instanceof"===i)?o:new r("!",this)}},{key:"unfoldSoak",value:function(e){var a;return("++"===(a=this.operator)||"--"===a||"delete"===a)&&ra(e,this,"first")}},{key:"generateDo",value:function(e){var a,t,o,n,r,i,s,l;for(i=[],t=e instanceof d&&(s=e.value.unwrap())instanceof f?s:e,l=t.params||[],(o=0,n=l.length);o=X?new de(this).compileToFragments(e):(o="+"===a||"-"===a,("new"===a||"typeof"===a||"delete"===a||o&&this.first instanceof r&&this.first.operator===a)&&t.push([this.makeCode(" ")]),(o&&this.first instanceof r||"new"===a&&this.first.isStatement(e))&&(this.first=new de(this.first)),t.push(this.first.compileToFragments(e,Y)),this.flip&&t.reverse(),this.joinFragmentArrays(t,""))}},{key:"compileContinuation",value:function(e){var a,t,o,r;return t=[],a=this.operator,null==e.scope.parent&&this.error(this.operator+" can only occur inside functions"),(null==(o=e.scope.method)?void 0:o.bound)&&e.scope.method.isGenerator&&this.error("yield cannot occur inside bound (fat arrow) functions"),0<=n.call(Object.keys(this.first),"expression")&&!(this.first instanceof Se)?null!=this.first.expression&&t.push(this.first.expression.compileToFragments(e,Y)):(e.level>=q&&t.push([this.makeCode("(")]),t.push([this.makeCode(a)]),""!==(null==(r=this.first.base)?void 0:r.value)&&t.push([this.makeCode(" ")]),t.push(this.first.compileToFragments(e,Y)),e.level>=q&&t.push([this.makeCode(")")])),this.joinFragmentArrays(t,"")}},{key:"compilePower",value:function(e){var a;return a=new Le(new R("Math"),[new i(new ce("pow"))]),new h(a,[this.first,this.second]).compileToFragments(e)}},{key:"compileFloorDivision",value:function(e){var a,t,o;return t=new Le(new R("Math"),[new i(new ce("floor"))]),o=this.second.shouldCache()?new de(this.second):this.second,a=new r("/",this.first,o),new h(t,[a]).compileToFragments(e)}},{key:"compileModulo",value:function(e){var a;return a=new Le(new J(sa("modulo",e))),new h(a,[this.first,this.second]).compileToFragments(e)}},{key:"toString",value:function(e){return _get(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"toString",this).call(this,e,this.constructor.name+" "+this.operator)}}]),r}(p),a,t;return a={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},t={"!==":"===","===":"!=="},e.prototype.children=["first","second"],e}(),t.In=U=function(){var e=function(e){function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return o.object=e,o.array=t,o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o,n,r;if(this.array instanceof Le&&this.array.isArray()&&this.array.base.objects.length){for(r=this.array.base.objects,t=0,o=r.length;t= 0"))),He(r)===He(n))?o:(o=r.concat(this.makeCode(", "),o),e.leveln.call(r,a)&&r.push(a);delete e.comments}if(null==(d=e.name)?void 0:d.comments){for(p=e.name.comments,o=0,s=p.length;on.call(r,a)&&r.push(a);return delete e.name.comments}}),Me(r,o),Qe(o.expression,o),o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function(e){var a,t,o;if(this.expression.front=this.front,o=this.expression.compile(e,Y),this.expression.unwrap()instanceof R&&!e.scope.check(o)){var n=this.negated?["===","||"]:["!==","&&"],r=_slicedToArray(n,2);a=r[0],t=r[1],o="typeof "+o+" "+a+" \"undefined\""+("undefined"===this.comparisonTarget?"":" "+t+" "+o+" "+a+" "+this.comparisonTarget)}else a="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",o=o+" "+a+" "+this.comparisonTarget;return[this.makeCode(e.level<=H?o:"("+o+")")]}}]),a}(p);return e.prototype.children=["expression"],e.prototype.invert=ae,e}(),t.Parens=de=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function(){return this.body}},{key:"shouldCache",value:function(){return this.body.shouldCache()}},{key:"compileNode",value:function(e){var a,t,o;return(t=this.body.unwrap(),t instanceof Le&&t.isAtomic()&&!this.csxAttribute)?(t.front=this.front,t.compileToFragments(e)):(o=t.compileToFragments(e,q),a=e.level=o.length),this.csxAttribute?this.wrapInBraces(o):a?o:this.wrapInParentheses(o))}}]),a}(p);return e.prototype.children=["body"],e}(),t.StringWithInterpolations=be=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function(){return this}},{key:"shouldCache",value:function(){return this.body.shouldCache()}},{key:"compileNode",value:function(e){var t,o,n,r,i,s,l,d,p;if(this.csxAttribute)return p=new de(new a(this.body)),p.csxAttribute=!0,p.compileNode(e);for(r=this.body.unwrap(),n=[],d=[],r.traverseChildren(!1,function(e){var a,t,o,r,i,s;if(e instanceof Ne){if(e.comments){var l;(l=d).push.apply(l,_toConsumableArray(e.comments)),delete e.comments}return n.push(e),!0}if(e instanceof de){if(0!==d.length){for(t=0,r=d.length;tw,!(this.step&&null!=w&&p)&&(b=S.freeVariable("len")),r=""+v+k+" = 0, "+b+" = "+P+".length",i=""+v+k+" = "+P+".length - 1",o=k+" < "+b,n=k+" >= 0",this.step?(null==w?(o=F+" > 0 ? "+o+" : "+n,r="("+F+" > 0 ? ("+r+") : "+i+")"):p&&(o=n,r=i),f=k+" += "+F):f=""+(T===k?k+"++":"++"+k),u=[this.makeCode(r+"; "+o+"; "+v+f)])),this.returns&&(E=""+this.tab+I+" = [];\n",x="\n"+this.tab+"return "+I+";",a.makeReturn(I)),this.guard&&(1=H?this.wrapInParentheses(n):n}},{key:"unfoldSoak",value:function(){return this.soak&&this}}]),a}(p);return e.prototype.children=["condition","body","elseBody"],e}(),Re={modulo:function(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},objectWithoutKeys:function(){return"function(o, ks) { var res = {}; for (var k in o) ([].indexOf.call(ks, k) < 0 && {}.hasOwnProperty.call(o, k)) && (res[k] = o[k]); return res; }"},boundMethodCheck:function(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},hasProp:function(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function(){return"[].slice"},splice:function(){return"[].splice"}},z=1,q=2,W=3,H=4,Y=5,X=6,De=" ",fe=/^[+-]?\d+$/,sa=function(e,a){var t,o;return o=a.scope.root,e in o.utilities?o.utilities[e]:(t=o.freeVariable(e),o.assign(t,Re[e](a)),o.utilities[e]=t)},ea=function(e,a){var t=2=e);)e--;return a&&[a.sourceLine,a.sourceColumn]}}]),e}(),o=function(){var e=function(){function e(){_classCallCheck(this,e),this.lines=[]}return _createClass(e,[{key:"add",value:function(e,a){var o=2=t);)t--;return n&&n.sourceLocation(o)}},{key:"generate",value:function(){var e=0e?1:0,l=(a(e)<<1)+s;l||!t;)o=l&i,l>>=r,l&&(o|=n),t+=this.encodeBase64(o);return t}},{key:"encodeBase64",value:function(e){return o[e]||function(){throw new Error("Cannot Base64 encode value: "+e)}()}}]),e}(),o,n,r,i;return r=5,n=1<",l(m,e),f[m]=e,T&&(C=new r),O=u.tokenize(e,a),a.referencedVars=function(){var e,a,t;for(t=[],e=0,a=O.length;e"),d=e.getLineNumber(),o=e.getColumnNumber(),c=a(r,d,o),n=c?r+":"+c[0]+":"+c[1]:r+":"+d+":"+o),i=e.getFunctionName(),s=e.isConstructor(),l=!(e.isToplevel()||s),l?(p=e.getMethodName(),m=e.getTypeName(),i?(u=t="",m&&i.indexOf(m)&&(u=m+"."),p&&i.indexOf("."+p)!==i.length-p.length-1&&(t=" [as "+p+"]"),""+u+i+t+" ("+n+")"):m+"."+(p||"")+" ("+n+")"):s?"new "+(i||"")+" ("+n+")":i?i+" ("+n+")":n},p=function(e){var a;return null==g[e]?null==g[""]?null==f[e]?null:(a=i(f[e],{filename:e,sourceMap:!0,literate:c.isLiterate(e)}),a.sourceMap):g[""]:g[e]},Error.prepareStackTrace=function(e,t){var o,n,r;return r=function(e,a,t){var o,n;return n=p(e),null!=n&&(o=n.sourceLocation([a-1,t-1])),null==o?null:[o[0]+1,o[1]+1]},n=function(){var e,n,i;for(i=[],e=0,n=t.length;e

    CoffeeScript is a little language that compiles into JavaScript. Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way.

    The golden rule of CoffeeScript is: “It’s just JavaScript.” The code compiles one-to-one into the equivalent JS, and there is no interpretation at runtime. You can use any existing JavaScript library seamlessly from CoffeeScript (and vice-versa). The compiled output is readable, pretty-printed, and tends to run as fast or faster than the equivalent handwritten JavaScript.

    -

    Latest Version: 2.0.0-beta3

    +

    Latest Version: 2.0.0-beta4

    npm install -g coffeescript@next
     
    @@ -3444,7 +3444,7 @@ The CoffeeScript logo is available in SVG for use in presentations.

    Annotated Source

    -

    You can browse the CoffeeScript 2.0.0-beta3 source in readable, annotated form here. You can also jump directly to a particular source file:

    +

    You can browse the CoffeeScript 2.0.0-beta4 source in readable, annotated form here. You can also jump directly to a particular source file:

    Changelog

    +
    +

    + 2.0.0-beta4 + +

      +
    • This release includes all the changes from 1.12.6 to 1.12.7.
    • +
    • Line comments (starting with #) are now output in the generated JavaScript.
    • +
    • Block comments (delimited by ###) are now allowed anywhere, including inline where they previously weren’t possible. This provides support for static type annotations using Flow’s comments-based syntax.
    • +
    • Spread syntax (... for objects) is now supported in JSX tags: <div {props...} />.
    • +
    • Argument parsing for scripts run via coffee is improved. See breaking changes.
    • +
    • CLI: Propagate SIGINT and SIGTERM signals when node is forked.
    • +
    • await in the REPL is now allowed without requiring a wrapper function.
    • +
    • do super is now allowed, and other accesses of super like super.x.y or super['x'].y now work.
    • +
    • Splat/spread syntax triple dots are now allowed on either the left or the right (so props... or ...props are both valid).
    • +
    • Tagged template literals are recognized as callable functions.
    • +
    • Bugfixes for object spread syntax in nested properties.
    • +
    • Bugfixes for destructured function parameter default values.
    • +

    1.12.7 diff --git a/docs/v2/test.html b/docs/v2/test.html index 210af1cb..5250e8bd 100644 --- a/docs/v2/test.html +++ b/docs/v2/test.html @@ -97,6 +97,17 @@ arrayEgal = (a, b) -> return no for el, idx in a when not arrayEgal el, b[idx] yes +diffOutput = (expectedOutput, actualOutput) -> + expectedOutputLines = expectedOutput.split '\n' + actualOutputLines = actualOutput.split '\n' + for line, i in actualOutputLines + if line isnt expectedOutputLines[i] + actualOutputLines[i] = "#{yellow}#{line}#{reset}" + """Expected generated JavaScript to be: + #{reset}#{expectedOutput}#{red} + but instead it was: + #{reset}#{actualOutputLines.join '\n'}#{red}""" + @eq = (a, b, msg) -> ok egal(a, b), msg or "Expected #{reset}#{a}#{red} to equal #{reset}#{b}#{red}" @@ -108,12 +119,9 @@ arrayEgal = (a, b) -> @eqJS = (input, expectedOutput, msg) -> actualOutput = CoffeeScript.compile input, bare: yes .replace /^\s+|\s+$/g, '' # Trim leading/trailing whitespace. + ok egal(expectedOutput, actualOutput), msg or diffOutput expectedOutput, actualOutput - ok egal(expectedOutput, actualOutput), msg or - """Expected generated JavaScript to be: - #{reset}#{expectedOutput}#{red} - but instead it was: - #{reset}#{actualOutput}#{red}""" +@isWindows = -> process.platform is 'win32' @doesNotThrow = (fn) -> @@ -153,9 +161,8 @@ msg = "failed #{total - passedTests} tests and #{msg}" unless yay say msg, (if yay then 'good' else 'bad') - + diff --git a/documentation/sections/changelog.md b/documentation/sections/changelog.md index 249de214..18cd2237 100644 --- a/documentation/sections/changelog.md +++ b/documentation/sections/changelog.md @@ -1,5 +1,22 @@ ## Changelog +``` +releaseHeader('2017-08-03', '2.0.0-beta4', '2.0.0-beta3') +``` + +* This release includes [all the changes from 1.12.6 to 1.12.7](#1.12.7). +* [Line comments](#comments) (starting with `#`) are now output in the generated JavaScript. +* [Block comments](#comments) (delimited by `###`) are now allowed anywhere, including inline where they previously weren’t possible. This provides support for [static type annotations](#type-annotations) using Flow’s comments-based syntax. +* Spread syntax (`...` for objects) is now supported in JSX tags: `
    `. +* Argument parsing for scripts run via `coffee` is improved. See [breaking changes](#breaking-changes-argument-parsing-and-shebang-lines). +* CLI: Propagate `SIGINT` and `SIGTERM` signals when node is forked. +* `await` in the REPL is now allowed without requiring a wrapper function. +* `do super` is now allowed, and other accesses of `super` like `super.x.y` or `super['x'].y` now work. +* Splat/spread syntax triple dots are now allowed on either the left or the right (so `props...` or `...props` are both valid). +* Tagged template literals are recognized as callable functions. +* Bugfixes for object spread syntax in nested properties. +* Bugfixes for destructured function parameter default values. + ``` releaseHeader('2017-07-16', '1.12.7', '1.12.6') ``` diff --git a/lib/coffeescript/browser.js b/lib/coffeescript/browser.js index 8dccad4e..8231cc68 100644 --- a/lib/coffeescript/browser.js +++ b/lib/coffeescript/browser.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // This **Browser** compatibility layer extends core CoffeeScript functions // to make things work smoothly when compiling code directly in the browser. diff --git a/lib/coffeescript/cake.js b/lib/coffeescript/cake.js index b8ede36d..6e29df22 100644 --- a/lib/coffeescript/cake.js +++ b/lib/coffeescript/cake.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // `cake` is a simplified version of [Make](http://www.gnu.org/software/make/) // ([Rake](http://rake.rubyforge.org/), [Jake](https://github.com/280north/jake)) diff --git a/lib/coffeescript/coffeescript.js b/lib/coffeescript/coffeescript.js index 22f729af..e5eecf4f 100644 --- a/lib/coffeescript/coffeescript.js +++ b/lib/coffeescript/coffeescript.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // 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 diff --git a/lib/coffeescript/command.js b/lib/coffeescript/command.js index 504063f9..be3cd049 100644 --- a/lib/coffeescript/command.js +++ b/lib/coffeescript/command.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // The `coffee` utility. Handles command-line compilation of CoffeeScript // into various forms: saved into `.js` files or printed to stdout diff --git a/lib/coffeescript/grammar.js b/lib/coffeescript/grammar.js index c8d74d39..edf97e3d 100644 --- a/lib/coffeescript/grammar.js +++ b/lib/coffeescript/grammar.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // The CoffeeScript parser is generated by [Jison](https://github.com/zaach/jison) // from this grammar file. Jison is a bottom-up parser generator, similar in diff --git a/lib/coffeescript/helpers.js b/lib/coffeescript/helpers.js index 934e8f02..5f84f088 100644 --- a/lib/coffeescript/helpers.js +++ b/lib/coffeescript/helpers.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // This file contains the common helper functions that we'd like to share among // the **Lexer**, **Rewriter**, and the **Nodes**. Merge objects, flatten diff --git a/lib/coffeescript/index.js b/lib/coffeescript/index.js index 75050790..e2d639cf 100644 --- a/lib/coffeescript/index.js +++ b/lib/coffeescript/index.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // Node.js Implementation var CoffeeScript, compile, ext, fn, fs, helpers, i, len, path, ref, vm, diff --git a/lib/coffeescript/lexer.js b/lib/coffeescript/lexer.js index 70dfc267..4f7a7387 100644 --- a/lib/coffeescript/lexer.js +++ b/lib/coffeescript/lexer.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt // matches against the beginning of the source code. When a match is found, diff --git a/lib/coffeescript/nodes.js b/lib/coffeescript/nodes.js index 66533d5a..ad9c6e5b 100644 --- a/lib/coffeescript/nodes.js +++ b/lib/coffeescript/nodes.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // `nodes.coffee` contains all of the node classes for the syntax tree. Most // nodes are created as the result of actions in the [grammar](grammar.html), diff --git a/lib/coffeescript/optparse.js b/lib/coffeescript/optparse.js index 69bc3677..c9c88e0c 100644 --- a/lib/coffeescript/optparse.js +++ b/lib/coffeescript/optparse.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments, repeat, slice = [].slice; diff --git a/lib/coffeescript/parser.js b/lib/coffeescript/parser.js index 22ca21d9..198d11a0 100755 --- a/lib/coffeescript/parser.js +++ b/lib/coffeescript/parser.js @@ -105,13 +105,16 @@ case 12: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.StatementLiteral($$[$0])); break; case 27: -this.$ = yy.addDataToNode(yy, _$[$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 28: case 271: case 272: case 275: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op($$[$0-1], + $$[$0])); break; case 29: -this.$ = yy.addDataToNode(yy, _$[$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 30: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Block); @@ -162,34 +165,49 @@ case 48: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.NaNLiteral($$[$0])); break; case 49: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign($$[$0-2], + $$[$0])); break; case 50: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Assign($$[$0-3], + $$[$0])); break; case 51: -this.$ = yy.addDataToNode(yy, _$[$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 52: case 108: case 112: case 113: case 115: case 116: case 117: case 118: case 120: case 244: case 245: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value($$[$0])); break; case 54: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', { +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.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', { +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.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, { +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.addDataToNode(yy, _$[$0-4], _$[$0])(new yy.Assign(yy.addDataToNode(yy, _$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, { +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; @@ -206,13 +224,18 @@ case 66: case 107: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Splat($$[$0])); break; case 72: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-1])(new yy.Super), $$[$0], false, $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-1])(new yy.Super), + $$[$0], + false, + $$[$0-1])); break; case 73: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Call(new yy.Value($$[$0-1]), $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Call(new yy.Value($$[$0-1]), + $$[$0])); break; case 74: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Call($$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Call($$[$0-1], + $$[$0])); break; case 75: case 76: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])((new yy.Value($$[$0-1])).add($$[$0])); @@ -242,10 +265,14 @@ case 85: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.AwaitReturn); break; case 86: -this.$ = yy.addDataToNode(yy, _$[$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 87: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Code([], + $$[$0], + $$[$0-1])); break; case 88: case 89: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.FuncGlyph($$[$0])); @@ -269,13 +296,18 @@ case 97: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Param($$[$0])); break; case 98: -this.$ = yy.addDataToNode(yy, _$[$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 99: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Param($$[$0], null, true)); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Param($$[$0], + null, + true)); break; case 100: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Param($$[$0-2], + $$[$0])); break; case 101: case 210: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Expansion); @@ -284,25 +316,36 @@ case 109: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].add($$[$0])); break; case 121: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0])), [], false, $$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0])), + [], + false, + $$[$0-2])); break; case 122: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0-1])(new yy.Index($$[$0-1])), [], false, $$[$0-3])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Super(yy.addDataToNode(yy, _$[$0-1])(new yy.Index($$[$0-1])), + [], + false, + $$[$0-3])); break; case 124: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak')); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Access($$[$0], + 'soak')); break; case 125: -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]))]); +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 126: -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]))]); +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 127: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Access(new yy.PropertyName('prototype'))); break; case 130: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(yy.extend($$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(yy.extend($$[$0], + { soak: true })); break; @@ -313,52 +356,76 @@ case 132: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Slice($$[$0])); break; case 133: -this.$ = yy.addDataToNode(yy, _$[$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 139: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Class); break; case 140: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class(null, + null, + $$[$0])); break; case 141: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class(null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Class(null, + $$[$0])); break; case 142: -this.$ = yy.addDataToNode(yy, _$[$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 143: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Class($$[$0])); break; case 144: -this.$ = yy.addDataToNode(yy, _$[$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 145: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Class($$[$0-2], + $$[$0])); break; case 146: -this.$ = yy.addDataToNode(yy, _$[$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 147: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ImportDeclaration(null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ImportDeclaration(null, + $$[$0])); break; case 148: -this.$ = yy.addDataToNode(yy, _$[$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 149: -this.$ = yy.addDataToNode(yy, _$[$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 150: -this.$ = yy.addDataToNode(yy, _$[$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 151: -this.$ = yy.addDataToNode(yy, _$[$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 152: -this.$ = yy.addDataToNode(yy, _$[$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 153: -this.$ = yy.addDataToNode(yy, _$[$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 157: case 177: case 190: case 206: this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])($$[$0-2]); @@ -367,19 +434,22 @@ case 159: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier($$[$0])); break; case 160: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ImportSpecifier($$[$0-2], + $$[$0])); break; case 161: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportSpecifier(new yy.Literal($$[$0]))); break; case 162: -this.$ = yy.addDataToNode(yy, _$[$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 163: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ImportDefaultSpecifier($$[$0])); break; case 164: -this.$ = yy.addDataToNode(yy, _$[$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 165: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportNamedDeclaration(new yy.ExportSpecifierList([]))); @@ -391,17 +461,26 @@ case 167: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.ExportNamedDeclaration($$[$0])); break; case 168: -this.$ = yy.addDataToNode(yy, _$[$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 169: -this.$ = yy.addDataToNode(yy, _$[$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 170: -this.$ = yy.addDataToNode(yy, _$[$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; @@ -409,34 +488,46 @@ case 171: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportDefaultDeclaration($$[$0])); break; case 172: -this.$ = yy.addDataToNode(yy, _$[$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 173: -this.$ = yy.addDataToNode(yy, _$[$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 179: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier($$[$0])); break; case 180: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.ExportSpecifier($$[$0-2], + $$[$0])); break; case 181: -this.$ = yy.addDataToNode(yy, _$[$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 182: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.ExportSpecifier(new yy.Literal($$[$0]))); break; case 183: -this.$ = yy.addDataToNode(yy, _$[$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 184: -this.$ = yy.addDataToNode(yy, _$[$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 185: -this.$ = yy.addDataToNode(yy, _$[$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 186: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-2])(new yy.Super), $$[$0], $$[$0-1], $$[$0-2])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.SuperCall(yy.addDataToNode(yy, _$[$0-2])(new yy.Super), + $$[$0], + $$[$0-1], + $$[$0-2])); break; case 187: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(false); @@ -451,7 +542,9 @@ case 191: case 192: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Value(new yy.ThisLiteral($$[$0]))); break; case 193: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value(yy.addDataToNode(yy, _$[$0-1])(new yy.ThisLiteral($$[$0-1])), [yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))], 'this')); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Value(yy.addDataToNode(yy, _$[$0-1])(new yy.ThisLiteral($$[$0-1])), + [yy.addDataToNode(yy, _$[$0])(new yy.Access($$[$0]))], + 'this')); break; case 194: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Arr([])); @@ -466,43 +559,65 @@ case 197: this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])('exclusive'); break; case 198: -this.$ = yy.addDataToNode(yy, _$[$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 199: -this.$ = yy.addDataToNode(yy, _$[$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 200: -this.$ = yy.addDataToNode(yy, _$[$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 201: -this.$ = yy.addDataToNode(yy, _$[$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 202: -this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Range(null, null, $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0], _$[$0])(new yy.Range(null, + null, + $$[$0])); break; case 212: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([].concat($$[$0-2], + $$[$0])); break; case 213: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Try($$[$0])); break; case 214: -this.$ = yy.addDataToNode(yy, _$[$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 215: -this.$ = yy.addDataToNode(yy, _$[$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 216: -this.$ = yy.addDataToNode(yy, _$[$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 217: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-1], $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-1], + $$[$0]]); break; case 218: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([yy.addDataToNode(yy, _$[$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 219: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([null, $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])([null, + $$[$0]]); break; case 220: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Throw($$[$0])); @@ -520,17 +635,20 @@ case 224: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0])); break; case 225: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], + { guard: $$[$0] })); break; case 226: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0], { +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.While($$[$0], + { invert: true })); break; case 227: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], { +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.While($$[$0-2], + { invert: true, guard: $$[$0] })); @@ -551,10 +669,12 @@ case 233: 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 234: case 235: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0-1], + $$[$0])); break; case 236: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.For($$[$0], + $$[$0-1])); break; case 237: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ @@ -587,7 +707,8 @@ this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])((function () { }())); break; case 247: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-2], $$[$0]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([$$[$0-2], + $$[$0]]); break; case 248: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])({ @@ -647,33 +768,45 @@ this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])({ }); break; case 257: -this.$ = yy.addDataToNode(yy, _$[$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 258: -this.$ = yy.addDataToNode(yy, _$[$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 259: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1])); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])(new yy.Switch(null, + $$[$0-1])); break; case 260: -this.$ = yy.addDataToNode(yy, _$[$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 262: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])($$[$0-1].concat($$[$0])); break; case 263: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])([[$$[$0-1], + $$[$0]]]); break; case 264: -this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]); +this.$ = yy.addDataToNode(yy, _$[$0-3], _$[$0])([[$$[$0-2], + $$[$0-1]]]); break; case 265: -this.$ = yy.addDataToNode(yy, _$[$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 266: -this.$ = yy.addDataToNode(yy, _$[$0-4], _$[$0])($$[$0-4].addElse(yy.addDataToNode(yy, _$[$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; @@ -681,58 +814,86 @@ case 268: this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])($$[$0-2].addElse($$[$0])); break; case 269: case 270: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.If($$[$0], yy.addDataToNode(yy, _$[$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 273: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('-', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('-', + $$[$0])); break; case 274: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('+', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('+', + $$[$0])); break; case 276: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('--', + $$[$0])); break; case 277: -this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Op('++', + $$[$0])); break; case 278: -this.$ = yy.addDataToNode(yy, _$[$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 279: -this.$ = yy.addDataToNode(yy, _$[$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 280: this.$ = yy.addDataToNode(yy, _$[$0-1], _$[$0])(new yy.Existence($$[$0-1])); break; case 281: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('+', + $$[$0-2], + $$[$0])); break; case 282: -this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0])); +this.$ = yy.addDataToNode(yy, _$[$0-2], _$[$0])(new yy.Op('-', + $$[$0-2], + $$[$0])); break; case 283: case 284: case 285: case 286: case 287: case 288: case 289: case 290: case 291: case 292: -this.$ = yy.addDataToNode(yy, _$[$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 293: 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(); + return new yy.Op($$[$0-1].slice(1), + $$[$0-2], + $$[$0]).invert(); } else { - return new yy.Op($$[$0-1], $$[$0-2], $$[$0]); + return new yy.Op($$[$0-1], + $$[$0-2], + $$[$0]); } }())); break; case 294: -this.$ = yy.addDataToNode(yy, _$[$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 295: -this.$ = yy.addDataToNode(yy, _$[$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 296: -this.$ = yy.addDataToNode(yy, _$[$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/lib/coffeescript/register.js b/lib/coffeescript/register.js index 2f582c0a..91a10005 100644 --- a/lib/coffeescript/register.js +++ b/lib/coffeescript/register.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, i, len, loadFile, path, ref; diff --git a/lib/coffeescript/repl.js b/lib/coffeescript/repl.js index 3d23f2c2..93019d6b 100644 --- a/lib/coffeescript/repl.js +++ b/lib/coffeescript/repl.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, replDefaults, runInContext, sawSIGINT, updateSyntaxError, vm; diff --git a/lib/coffeescript/rewriter.js b/lib/coffeescript/rewriter.js index 1ef4a762..6e932670 100644 --- a/lib/coffeescript/rewriter.js +++ b/lib/coffeescript/rewriter.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // The CoffeeScript language has a good deal of optional syntax, implicit syntax, // and shorthand syntax. This can greatly complicate a grammar and bloat diff --git a/lib/coffeescript/scope.js b/lib/coffeescript/scope.js index e1888629..5b9f0377 100644 --- a/lib/coffeescript/scope.js +++ b/lib/coffeescript/scope.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // The **Scope** class regulates lexical scoping within CoffeeScript. As you // generate code, you create a tree of scopes in the same shape as the nested diff --git a/lib/coffeescript/sourcemap.js b/lib/coffeescript/sourcemap.js index fff90362..7cc668ea 100644 --- a/lib/coffeescript/sourcemap.js +++ b/lib/coffeescript/sourcemap.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 2.0.0-beta3 +// Generated by CoffeeScript 2.0.0-beta4 (function() { // Source maps allow JavaScript runtimes to match running JavaScript back to // the original source code that corresponds to it. This can be minified diff --git a/package.json b/package.json index 89e59c94..16120faf 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "compiler" ], "author": "Jeremy Ashkenas", - "version": "2.0.0-beta3", + "version": "2.0.0-beta4", "license": "MIT", "engines": { "node": ">=7.6.0"