Browse Source

Adicionando filtro de partículas

capellaresumo 6 years ago
parent
commit
3ac6f6ec31
100 changed files with 0 additions and 36540 deletions
  1. 0 1
      ParticleFilter/node_modules/.bin/acorn
  2. 0 1
      ParticleFilter/node_modules/.bin/brfs
  3. 0 1
      ParticleFilter/node_modules/.bin/escodegen
  4. 0 1
      ParticleFilter/node_modules/.bin/esgenerate
  5. 0 1
      ParticleFilter/node_modules/.bin/esparse
  6. 0 1
      ParticleFilter/node_modules/.bin/esvalidate
  7. 0 1
      ParticleFilter/node_modules/.bin/quote-stream
  8. 0 77
      ParticleFilter/node_modules/acorn/AUTHORS
  9. 0 468
      ParticleFilter/node_modules/acorn/CHANGELOG.md
  10. 0 19
      ParticleFilter/node_modules/acorn/LICENSE
  11. 0 467
      ParticleFilter/node_modules/acorn/README.md
  12. 0 69
      ParticleFilter/node_modules/acorn/bin/_acorn.js
  13. 0 4
      ParticleFilter/node_modules/acorn/bin/acorn
  14. 0 21
      ParticleFilter/node_modules/acorn/bin/run_test262.js
  15. 0 409
      ParticleFilter/node_modules/acorn/bin/test262.whitelist
  16. 0 0
      ParticleFilter/node_modules/acorn/dist/.keep
  17. 0 29
      ParticleFilter/node_modules/acorn/dist/acorn.es.js
  18. 0 35
      ParticleFilter/node_modules/acorn/dist/acorn.js
  19. 0 1424
      ParticleFilter/node_modules/acorn/dist/acorn_loose.es.js
  20. 0 1434
      ParticleFilter/node_modules/acorn/dist/acorn_loose.js
  21. 0 432
      ParticleFilter/node_modules/acorn/dist/walk.es.js
  22. 0 452
      ParticleFilter/node_modules/acorn/dist/walk.js
  23. 0 341
      ParticleFilter/node_modules/acorn/package.json
  24. 0 58
      ParticleFilter/node_modules/amdefine/LICENSE
  25. 0 171
      ParticleFilter/node_modules/amdefine/README.md
  26. 0 301
      ParticleFilter/node_modules/amdefine/amdefine.js
  27. 0 36
      ParticleFilter/node_modules/amdefine/intercept.js
  28. 0 85
      ParticleFilter/node_modules/amdefine/package.json
  29. 0 21
      ParticleFilter/node_modules/ast-transform/LICENSE.md
  30. 0 53
      ParticleFilter/node_modules/ast-transform/README.md
  31. 0 43
      ParticleFilter/node_modules/ast-transform/index.js
  32. 0 1
      ParticleFilter/node_modules/ast-transform/node_modules/.bin/escodegen
  33. 0 1
      ParticleFilter/node_modules/ast-transform/node_modules/.bin/esgenerate
  34. 0 1
      ParticleFilter/node_modules/ast-transform/node_modules/.bin/esparse
  35. 0 1
      ParticleFilter/node_modules/ast-transform/node_modules/.bin/esvalidate
  36. 0 20
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/.jshintrc
  37. 0 19
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/LICENSE.BSD
  38. 0 27
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/LICENSE.source-map
  39. 0 112
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/README.md
  40. 0 45
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/bin/escodegen.js
  41. 0 45
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/bin/esgenerate.js
  42. 0 58
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/component.json
  43. 0 0
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/escodegen.browser.min.js
  44. 0 2188
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/escodegen.js
  45. 0 67
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/gulpfile.js
  46. 0 109
      ParticleFilter/node_modules/ast-transform/node_modules/escodegen/package.json
  47. 0 73
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/README.md
  48. 0 117
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/bin/esparse.js
  49. 0 177
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/bin/esvalidate.js
  50. 0 179
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/esprima.js
  51. 0 104
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/package.json
  52. 0 239
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/compat.js
  53. 0 422
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/reflect.js
  54. 0 66
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/run.js
  55. 0 387
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/runner.js
  56. 0 20238
      ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/test.js
  57. 0 16
      ParticleFilter/node_modules/ast-transform/node_modules/estraverse/.jshintrc
  58. 0 19
      ParticleFilter/node_modules/ast-transform/node_modules/estraverse/LICENSE.BSD
  59. 0 70
      ParticleFilter/node_modules/ast-transform/node_modules/estraverse/README.md
  60. 0 689
      ParticleFilter/node_modules/ast-transform/node_modules/estraverse/estraverse.js
  61. 0 92
      ParticleFilter/node_modules/ast-transform/node_modules/estraverse/package.json
  62. 0 16
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/.jshintrc
  63. 0 8
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/.travis.yml
  64. 0 80
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/README.md
  65. 0 31
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/code.js
  66. 0 117
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/keyword.js
  67. 0 32
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/utils.js
  68. 0 90
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/package.json
  69. 0 167
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/test/code.coffee
  70. 0 204
      ParticleFilter/node_modules/ast-transform/node_modules/esutils/test/keyword.coffee
  71. 0 2
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/.npmignore
  72. 0 4
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/.travis.yml
  73. 0 194
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/CHANGELOG.md
  74. 0 28
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/LICENSE
  75. 0 166
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/Makefile.dryice.js
  76. 0 475
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/README.md
  77. 0 56
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/assert-shim.js
  78. 0 152
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/mini-require.js
  79. 0 20
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/prefix-source-map.jsm
  80. 0 18
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/prefix-utils.jsm
  81. 0 8
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-browser.js
  82. 0 6
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-source-map.jsm
  83. 0 21
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-utils.jsm
  84. 0 8
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/test-prefix.js
  85. 0 3
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/test-suffix.js
  86. 0 8
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map.js
  87. 0 97
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/array-set.js
  88. 0 142
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/base64-vlq.js
  89. 0 42
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/base64.js
  90. 0 80
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/binary-search.js
  91. 0 86
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/mapping-list.js
  92. 0 575
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-map-consumer.js
  93. 0 400
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-map-generator.js
  94. 0 414
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-node.js
  95. 0 319
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/util.js
  96. 0 218
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/package.json
  97. 0 62
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/run-tests.js
  98. 0 26
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-api.js
  99. 0 104
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-array-set.js
  100. 0 23
      ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-base64-vlq.js

+ 0 - 1
ParticleFilter/node_modules/.bin/acorn

@@ -1 +0,0 @@
-../acorn/bin/acorn

+ 0 - 1
ParticleFilter/node_modules/.bin/brfs

@@ -1 +0,0 @@
-../brfs/bin/cmd.js

+ 0 - 1
ParticleFilter/node_modules/.bin/escodegen

@@ -1 +0,0 @@
-../escodegen/bin/escodegen.js

+ 0 - 1
ParticleFilter/node_modules/.bin/esgenerate

@@ -1 +0,0 @@
-../escodegen/bin/esgenerate.js

+ 0 - 1
ParticleFilter/node_modules/.bin/esparse

@@ -1 +0,0 @@
-../esprima/bin/esparse.js

+ 0 - 1
ParticleFilter/node_modules/.bin/esvalidate

@@ -1 +0,0 @@
-../esprima/bin/esvalidate.js

+ 0 - 1
ParticleFilter/node_modules/.bin/quote-stream

@@ -1 +0,0 @@
-../quote-stream/bin/cmd.js

+ 0 - 77
ParticleFilter/node_modules/acorn/AUTHORS

@@ -1,77 +0,0 @@
-List of Acorn contributors. Updated before every release.
-
-Adrian Heine
-Adrian Rakovsky
-Alistair Braidwood
-Amila Welihinda
-Andres Suarez
-Angelo
-Aparajita Fishman
-Arian Stolwijk
-Artem Govorov
-Boopesh Mahendran
-Bradley Heinz
-Brandon Mills
-Charles Hughes
-Charmander
-Chris McKnight
-Conrad Irwin
-Daniel Tschinder
-David Bonnet
-Domenico Matteo
-ehmicky
-Eugene Obrezkov
-Felix Maier
-Forbes Lindesay
-Gilad Peleg
-impinball
-Ingvar Stepanyan
-Jackson Ray Hamilton
-Jesse McCarthy
-Jiaxing Wang
-Joel Kemp
-Johannes Herr
-John-David Dalton
-Jordan Klassen
-Jürg Lehni
-Kai Cataldo
-keeyipchan
-Keheliya Gallaba
-Kevin Irish
-Kevin Kwok
-krator
-laosb
-Marek
-Marijn Haverbeke
-Martin Carlberg
-Mat Garcia
-Mathias Bynens
-Mathieu 'p01' Henri
-Matthew Bastien
-Max Schaefer
-Max Zerzouri
-Mihai Bazon
-Mike Rennie
-naoh
-Nicholas C. Zakas
-Nick Fitzgerald
-Olivier Thomann
-Oskar Schöldström
-Paul Harper
-Peter Rust
-PlNG
-Prayag Verma
-ReadmeCritic
-r-e-d
-Richard Gibson
-Rich Harris
-Sebastian McKenzie
-Shahar Soel
-Sheel Bedi
-Simen Bekkhus
-Teddy Katz
-Timothy Gu
-Toru Nagashima
-Victor Homyakov
-Wexpo Lyu
-zsjforcn

+ 0 - 468
ParticleFilter/node_modules/acorn/CHANGELOG.md

@@ -1,468 +0,0 @@
-## 5.6.1 (2018-06-01)
-
-### Bug fixes
-
-Fix regression when passing `null` as fourth argument to `walk.recursive`.
-
-## 5.6.0 (2018-05-31)
-
-### Bug fixes
-
-Fix a bug in the walker that caused a crash when walking an object pattern spread.
-
-### New features
-
-Allow U+2028 and U+2029 in string when ECMAVersion >= 10.
-
-Allow binding-less catch statements when ECMAVersion >= 10.
-
-Add `allowAwaitOutsideFunction` option for parsing top-level `await`.
-
-## 5.5.3 (2018-03-08)
-
-### Bug fixes
-
-A _second_ republish of the code in 5.5.1, this time with yarn, to hopefully get valid timestamps.
-
-## 5.5.2 (2018-03-08)
-
-### Bug fixes
-
-A republish of the code in 5.5.1 in an attempt to solve an issue with the file timestamps in the npm package being 0.
-
-## 5.5.1 (2018-03-06)
-
-### Bug fixes
-
-Fix regression in walker causing property values in object patterns to be walked as expressions.
-
-Fix misleading error message for octal escapes in template strings.
-
-## 5.5.0 (2018-02-27)
-
-### Bug fixes
-
-Support object spread in the AST walker.
-
-### New features
-
-The identifier character categorization is now based on Unicode version 10.
-
-Acorn will now validate the content of regular expressions, including new ES9 features.
-
-## 5.4.1 (2018-02-02)
-
-### Bug fixes
-
-5.4.0 somehow accidentally included an old version of walk.js.
-
-## 5.4.0 (2018-02-01)
-
-### Bug fixes
-
-Disallow duplicate or escaped flags on regular expressions.
-
-Disallow octal escapes in strings in strict mode.
-
-### New features
-
-Add support for async iteration.
-
-Add support for object spread and rest.
-
-## 5.3.0 (2017-12-28)
-
-### Bug fixes
-
-Fix parsing of floating point literals with leading zeroes in loose mode.
-
-Allow duplicate property names in object patterns.
-
-Don't allow static class methods named `prototype`.
-
-Disallow async functions directly under `if` or `else`.
-
-Parse right-hand-side of `for`/`of` as an assignment expression.
-
-Stricter parsing of `for`/`in`.
-
-Don't allow unicode escapes in contextual keywords.
-
-### New features
-
-Parsing class members was factored into smaller methods to allow plugins to hook into it.
-
-## 5.2.1 (2017-10-30)
-
-### Bug fixes
-
-Fix a token context corruption bug.
-
-## 5.2.0 (2017-10-30)
-
-### Bug fixes
-
-Fix token context tracking for `class` and `function` in property-name position.
-
-Make sure `%*` isn't parsed as a valid operator.
-
-The `full` and `fullAncestor` walkers no longer visit nodes multiple times.
-
-Allow shorthand properties `get` and `set` to be followed by default values.
-
-Disallow `super` when not in callee or object position.
-
-### New features
-
-Support [`directive` property](https://github.com/estree/estree/compare/b3de58c9997504d6fba04b72f76e6dd1619ee4eb...1da8e603237144f44710360f8feb7a9977e905e0) on directive expression statements.
-
-## 5.1.2 (2017-09-04)
-
-### Bug fixes
-
-Disable parsing of legacy HTML-style comments in modules.
-
-Fix parsing of async methods whose names are keywords.
-
-## 5.1.1 (2017-07-06)
-
-### Bug fixes
-
-Fix problem with disambiguating regexp and division after a class.
-
-## 5.1.0 (2017-07-05)
-
-### Bug fixes
-
-Fix tokenizing of regexps in an object-desctructuring `for`/`of` loop and after `yield`.
-
-Parse zero-prefixed numbers with non-octal digits as decimal.
-
-Allow object/array patterns in rest parameters.
-
-Don't error when `yield` is used as a property name.
-
-Allow `async` as a shorthand object property.
-
-Make the ES module version of the loose parser actually work.
-
-### New features
-
-Implement the [template literal revision proposal](https://github.com/tc39/proposal-template-literal-revision) for ES9.
-
-New walker functions `full` and `fullAncestor`.
-
-## 5.0.3 (2017-04-01)
-
-### Bug fixes
-
-Fix spurious duplicate variable definition errors for named functions.
-
-## 5.0.2 (2017-03-30)
-
-### Bug fixes
-
-A binary operator after a parenthesized arrow expression is no longer incorrectly treated as an error.
-
-## 5.0.0 (2017-03-28)
-
-### Bug fixes
-
-Raise an error for duplicated lexical bindings.
-
-Fix spurious error when an assignement expression occurred after a spread expression.
-
-Accept regular expressions after `of` (in `for`/`of`), `yield` (in a generator), and braced arrow functions.
-
-Allow labels in front or `var` declarations, even in strict mode.
-
-### Breaking changes
-
-Parse declarations following `export default` as declaration nodes, not expressions. This means that class and function declarations nodes can now have `null` as their `id`.
-
-## 4.0.11 (2017-02-07)
-
-### Bug fixes
-
-Allow all forms of member expressions to be parenthesized as lvalue.
-
-## 4.0.10 (2017-02-07)
-
-### Bug fixes
-
-Don't expect semicolons after default-exported functions or classes,
-even when they are expressions.
-
-Check for use of `'use strict'` directives in non-simple parameter
-functions, even when already in strict mode.
-
-## 4.0.9 (2017-02-06)
-
-### Bug fixes
-
-Fix incorrect error raised for parenthesized simple assignment
-targets, so that `(x) = 1` parses again.
-
-## 4.0.8 (2017-02-03)
-
-### Bug fixes
-
-Solve spurious parenthesized pattern errors by temporarily erring on
-the side of accepting programs that our delayed errors don't handle
-correctly yet.
-
-## 4.0.7 (2017-02-02)
-
-### Bug fixes
-
-Accept invalidly rejected code like `(x).y = 2` again.
-
-Don't raise an error when a function _inside_ strict code has a
-non-simple parameter list.
-
-## 4.0.6 (2017-02-02)
-
-### Bug fixes
-
-Fix exponential behavior (manifesting itself as a complete hang for
-even relatively small source files) introduced by the new 'use strict'
-check.
-
-## 4.0.5 (2017-02-02)
-
-### Bug fixes
-
-Disallow parenthesized pattern expressions.
-
-Allow keywords as export names.
-
-Don't allow the `async` keyword to be parenthesized.
-
-Properly raise an error when a keyword contains a character escape.
-
-Allow `"use strict"` to appear after other string literal expressions.
-
-Disallow labeled declarations.
-
-## 4.0.4 (2016-12-19)
-
-### Bug fixes
-
-Fix issue with loading acorn_loose.js with an AMD loader.
-
-Fix crash when `export` was followed by a keyword that can't be
-exported.
-
-## 4.0.3 (2016-08-16)
-
-### Bug fixes
-
-Allow regular function declarations inside single-statement `if`
-branches in loose mode. Forbid them entirely in strict mode.
-
-Properly parse properties named `async` in ES2017 mode.
-
-Fix bug where reserved words were broken in ES2017 mode.
-
-## 4.0.2 (2016-08-11)
-
-### Bug fixes
-
-Don't ignore period or 'e' characters after octal numbers.
-
-Fix broken parsing for call expressions in default parameter values
-of arrow functions.
-
-## 4.0.1 (2016-08-08)
-
-### Bug fixes
-
-Fix false positives in duplicated export name errors.
-
-## 4.0.0 (2016-08-07)
-
-### Breaking changes
-
-The default `ecmaVersion` option value is now 7.
-
-A number of internal method signatures changed, so plugins might need
-to be updated.
-
-### Bug fixes
-
-The parser now raises errors on duplicated export names.
-
-`arguments` and `eval` can now be used in shorthand properties.
-
-Duplicate parameter names in non-simple argument lists now always
-produce an error.
-
-### New features
-
-The `ecmaVersion` option now also accepts year-style version numbers
-(2015, etc).
-
-Support for `async`/`await` syntax when `ecmaVersion` is >= 8.
-
-Support for trailing commas in call expressions when `ecmaVersion`
-is >= 8.
-
-## 3.3.0 (2016-07-25)
-
-### Bug fixes
-
-Fix bug in tokenizing of regexp operator after a function declaration.
-
-Fix parser crash when parsing an array pattern with a hole.
-
-### New features
-
-Implement check against complex argument lists in functions that
-enable strict mode in ES7.
-
-## 3.2.0 (2016-06-07)
-
-### Bug fixes
-
-Improve handling of lack of unicode regexp support in host
-environment.
-
-Properly reject shorthand properties whose name is a keyword.
-
-Don't crash when the loose parser is called without options object.
-
-### New features
-
-Visitors created with `visit.make` now have their base as _prototype_,
-rather than copying properties into a fresh object.
-
-Make it possible to use `visit.ancestor` with a walk state.
-
-## 3.1.0 (2016-04-18)
-
-### Bug fixes
-
-Fix issue where the loose parser created invalid TemplateElement nodes
-for unclosed template literals.
-
-Properly tokenize the division operator directly after a function
-expression.
-
-Allow trailing comma in destructuring arrays.
-
-### New features
-
-The walker now allows defining handlers for `CatchClause` nodes.
-
-## 3.0.4 (2016-02-25)
-
-### Fixes
-
-Allow update expressions as left-hand-side of the ES7 exponential
-operator.
-
-## 3.0.2 (2016-02-10)
-
-### Fixes
-
-Fix bug that accidentally made `undefined` a reserved word when
-parsing ES7.
-
-## 3.0.0 (2016-02-10)
-
-### Breaking changes
-
-The default value of the `ecmaVersion` option is now 6 (used to be 5).
-
-Support for comprehension syntax (which was dropped from the draft
-spec) has been removed.
-
-### Fixes
-
-`let` and `yield` are now “contextual keywords”, meaning you can
-mostly use them as identifiers in ES5 non-strict code.
-
-A parenthesized class or function expression after `export default` is
-now parsed correctly.
-
-### New features
-
-When `ecmaVersion` is set to 7, Acorn will parse the exponentiation
-operator (`**`).
-
-The identifier character ranges are now based on Unicode 8.0.0.
-
-Plugins can now override the `raiseRecoverable` method to override the
-way non-critical errors are handled.
-
-## 2.7.0 (2016-01-04)
-
-### Fixes
-
-Stop allowing rest parameters in setters.
-
-Make sure the loose parser always attaches a `local` property to
-`ImportNamespaceSpecifier` nodes.
-
-Disallow `y` rexexp flag in ES5.
-
-Disallow `\00` and `\000` escapes in strict mode.
-
-Raise an error when an import name is a reserved word.
-
-## 2.6.4 (2015-11-12)
-
-### Fixes
-
-Fix crash in loose parser when parsing invalid object pattern.
-
-### New features
-
-Support plugins in the loose parser.
-
-## 2.6.2 (2015-11-10)
-
-### Fixes
-
-Don't crash when no options object is passed.
-
-## 2.6.0 (2015-11-09)
-
-### Fixes
-
-Add `await` as a reserved word in module sources.
-
-Disallow `yield` in a parameter default value for a generator.
-
-Forbid using a comma after a rest pattern in an array destructuring.
-
-### New features
-
-Support parsing stdin in command-line tool.
-
-## 2.5.2 (2015-10-27)
-
-### Fixes
-
-Fix bug where the walker walked an exported `let` statement as an
-expression.
-
-## 2.5.0 (2015-10-27)
-
-### Fixes
-
-Fix tokenizer support in the command-line tool.
-
-In the loose parser, don't allow non-string-literals as import
-sources.
-
-Stop allowing `new.target` outside of functions.
-
-Remove legacy `guard` and `guardedHandler` properties from try nodes.
-
-Stop allowing multiple `__proto__` properties on an object literal in
-strict mode.
-
-Don't allow rest parameters to be non-identifier patterns.
-
-Check for duplicate paramter names in arrow functions.

+ 0 - 19
ParticleFilter/node_modules/acorn/LICENSE

@@ -1,19 +0,0 @@
-Copyright (C) 2012-2018 by various contributors (see AUTHORS)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 467
ParticleFilter/node_modules/acorn/README.md

@@ -1,467 +0,0 @@
-# Acorn
-
-[![Build Status](https://travis-ci.org/acornjs/acorn.svg?branch=master)](https://travis-ci.org/acornjs/acorn)
-[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn)
-[![CDNJS](https://img.shields.io/cdnjs/v/acorn.svg)](https://cdnjs.com/libraries/acorn)  
-[Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/)
-
-A tiny, fast JavaScript parser, written completely in JavaScript.
-
-## Community
-
-Acorn is open source software released under an
-[MIT license](https://github.com/acornjs/acorn/blob/master/LICENSE).
-
-You are welcome to
-[report bugs](https://github.com/acornjs/acorn/issues) or create pull
-requests on [github](https://github.com/acornjs/acorn). For questions
-and discussion, please use the
-[Tern discussion forum](https://discuss.ternjs.net).
-
-## Installation
-
-The easiest way to install acorn is with [`npm`][npm].
-
-[npm]: https://www.npmjs.com/
-
-```sh
-npm install acorn
-```
-
-Alternately, you can download the source and build acorn yourself:
-
-```sh
-git clone https://github.com/acornjs/acorn.git
-cd acorn
-npm install
-npm run build
-```
-
-## Components
-
-When run in a CommonJS (node.js) or AMD environment, exported values
-appear in the interfaces exposed by the individual files, as usual.
-When loaded in the browser (Acorn works in any JS-enabled browser more
-recent than IE5) without any kind of module management, a single
-global object `acorn` will be defined, and all the exported properties
-will be added to that.
-
-### Main parser
-
-This is implemented in `dist/acorn.js`, and is what you get when you
-`require("acorn")` in node.js.
-
-**parse**`(input, options)` is used to parse a JavaScript program.
-The `input` parameter is a string, `options` can be undefined or an
-object setting some of the options listed below. The return value will
-be an abstract syntax tree object as specified by the
-[ESTree spec][estree].
-
-When  encountering   a  syntax   error,  the   parser  will   raise  a
-`SyntaxError` object with a meaningful  message. The error object will
-have a `pos` property that indicates the character offset at which the
-error occurred,  and a `loc`  object that contains a  `{line, column}`
-object referring to that same position.
-
-[estree]: https://github.com/estree/estree
-
-- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be
-  either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018) or 10 (2019, partial
-  support). This influences support for strict mode, the set of
-  reserved words, and support for new syntax features. Default is 7.
-
-  **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being
-  implemented by Acorn.
-
-- **sourceType**: Indicate the mode the code should be parsed in. Can be
-  either `"script"` or `"module"`. This influences global strict mode
-  and parsing of `import` and `export` declarations.
-
-- **onInsertedSemicolon**: If given a callback, that callback will be
-  called whenever a missing semicolon is inserted by the parser. The
-  callback will be given the character offset of the point where the
-  semicolon is inserted as argument, and if `locations` is on, also a
-  `{line, column}` object representing this position.
-
-- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing
-  commas.
-
-- **allowReserved**: If `false`, using a reserved word will generate
-  an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher
-  versions. When given the value `"never"`, reserved words and
-  keywords can also not be used as property names (as in Internet
-  Explorer's old parser).
-
-- **allowReturnOutsideFunction**: By default, a return statement at
-  the top level raises an error. Set this to `true` to accept such
-  code.
-
-- **allowImportExportEverywhere**: By default, `import` and `export`
-  declarations can only appear at a program's top level. Setting this
-  option to `true` allows them anywhere where a statement is allowed.
-  
-- **allowAwaitOutsideFunction**: By default, `await` expressions can only appear inside `async` functions. Setting this option to `true` allows to have top-level `await` expressions. They are still not allowed in non-`async` functions, though.
-
-- **allowHashBang**: When this is enabled (off by default), if the
-  code starts with the characters `#!` (as in a shellscript), the
-  first line will be treated as a comment.
-
-- **locations**: When `true`, each node has a `loc` object attached
-  with `start` and `end` subobjects, each of which contains the
-  one-based line and zero-based column numbers in `{line, column}`
-  form. Default is `false`.
-
-- **onToken**: If a function is passed for this option, each found
-  token will be passed in same format as tokens returned from
-  `tokenizer().getToken()`.
-
-  If array is passed, each found token is pushed to it.
-
-  Note that you are not allowed to call the parser from the
-  callback—that will corrupt its internal state.
-
-- **onComment**: If a function is passed for this option, whenever a
-  comment is encountered the function will be called with the
-  following parameters:
-
-  - `block`: `true` if the comment is a block comment, false if it
-    is a line comment.
-  - `text`: The content of the comment.
-  - `start`: Character offset of the start of the comment.
-  - `end`: Character offset of the end of the comment.
-
-  When the `locations` options is on, the `{line, column}` locations
-  of the comment’s start and end are passed as two additional
-  parameters.
-
-  If array is passed for this option, each found comment is pushed
-  to it as object in Esprima format:
-
-  ```javascript
-  {
-    "type": "Line" | "Block",
-    "value": "comment text",
-    "start": Number,
-    "end": Number,
-    // If `locations` option is on:
-    "loc": {
-      "start": {line: Number, column: Number}
-      "end": {line: Number, column: Number}
-    },
-    // If `ranges` option is on:
-    "range": [Number, Number]
-  }
-  ```
-
-  Note that you are not allowed to call the parser from the
-  callback—that will corrupt its internal state.
-
-- **ranges**: Nodes have their start and end characters offsets
-  recorded in `start` and `end` properties (directly on the node,
-  rather than the `loc` object, which holds line/column data. To also
-  add a [semi-standardized][range] `range` property holding a
-  `[start, end]` array with the same numbers, set the `ranges` option
-  to `true`.
-
-- **program**: It is possible to parse multiple files into a single
-  AST by passing the tree produced by parsing the first file as the
-  `program` option in subsequent parses. This will add the toplevel
-  forms of the parsed file to the "Program" (top) node of an existing
-  parse tree.
-
-- **sourceFile**: When the `locations` option is `true`, you can pass
-  this option to add a `source` attribute in every node’s `loc`
-  object. Note that the contents of this option are not examined or
-  processed in any way; you are free to use whatever format you
-  choose.
-
-- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property
-  will be added (regardless of the `location` option) directly to the
-  nodes, rather than the `loc` object.
-
-- **preserveParens**: If this option is `true`, parenthesized expressions
-  are represented by (non-standard) `ParenthesizedExpression` nodes
-  that have a single `expression` property containing the expression
-  inside parentheses.
-
-[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
-
-**parseExpressionAt**`(input, offset, options)` will parse a single
-expression in a string, and return its AST. It will not complain if
-there is more of the string left after the expression.
-
-**getLineInfo**`(input, offset)` can be used to get a `{line,
-column}` object for a given program string and character offset.
-
-**tokenizer**`(input, options)` returns an object with a `getToken`
-method that can be called repeatedly to get the next token, a `{start,
-end, type, value}` object (with added `loc` property when the
-`locations` option is enabled and `range` property when the `ranges`
-option is enabled). When the token's type is `tokTypes.eof`, you
-should stop calling the method, since it will keep returning that same
-token forever.
-
-In ES6 environment, returned result can be used as any other
-protocol-compliant iterable:
-
-```javascript
-for (let token of acorn.tokenizer(str)) {
-  // iterate over the tokens
-}
-
-// transform code to array of tokens:
-var tokens = [...acorn.tokenizer(str)];
-```
-
-**tokTypes** holds an object mapping names to the token type objects
-that end up in the `type` properties of tokens.
-
-#### Note on using with [Escodegen][escodegen]
-
-Escodegen supports generating comments from AST, attached in
-Esprima-specific format. In order to simulate same format in
-Acorn, consider following example:
-
-```javascript
-var comments = [], tokens = [];
-
-var ast = acorn.parse('var x = 42; // answer', {
-	// collect ranges for each node
-	ranges: true,
-	// collect comments in Esprima's format
-	onComment: comments,
-	// collect token ranges
-	onToken: tokens
-});
-
-// attach comments using collected information
-escodegen.attachComments(ast, comments, tokens);
-
-// generate code
-console.log(escodegen.generate(ast, {comment: true}));
-// > 'var x = 42;    // answer'
-```
-
-[escodegen]: https://github.com/estools/escodegen
-
-### dist/acorn_loose.js ###
-
-This file implements an error-tolerant parser. It exposes a single
-function. The loose parser is accessible in node.js via `require("acorn/dist/acorn_loose")`.
-
-**parse_dammit**`(input, options)` takes the same arguments and
-returns the same syntax tree as the `parse` function in `acorn.js`,
-but never raises an error, and will do its best to parse syntactically
-invalid code in as meaningful a way as it can. It'll insert identifier
-nodes with name `"✖"` as placeholders in places where it can't make
-sense of the input. Depends on `acorn.js`, because it uses the same
-tokenizer.
-
-### dist/walk.js ###
-
-Implements an abstract syntax tree walker. Will store its interface in
-`acorn.walk` when loaded without a module system.
-
-**simple**`(node, visitors, base, state)` does a 'simple' walk over
-a tree. `node` should be the AST node to walk, and `visitors` an
-object with properties whose names correspond to node types in the
-[ESTree spec][estree]. The properties should contain functions
-that will be called with the node object and, if applicable the state
-at that point. The last two arguments are optional. `base` is a walker
-algorithm, and `state` is a start state. The default walker will
-simply visit all statements and expressions and not produce a
-meaningful state. (An example of a use of state is to track scope at
-each point in the tree.)
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn/dist/walk")
-
-walk.simple(acorn.parse("let x = 10"), {
-  Literal(node) {
-    console.log(`Found a literal: ${node.value}`)
-  }
-})
-```
-
-**ancestor**`(node, visitors, base, state)` does a 'simple' walk over
-a tree, building up an array of ancestor nodes (including the current node)
-and passing the array to the callbacks as a third parameter.
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn/dist/walk")
-
-walk.ancestor(acorn.parse("foo('hi')"), {
-  Literal(_, ancestors) {
-    console.log("This literal's ancestors are:",
-                ancestors.map(n => n.type))
-  }
-})
-```
-
-**recursive**`(node, state, functions, base)` does a 'recursive'
-walk, where the walker functions are responsible for continuing the
-walk on the child nodes of their target node. `state` is the start
-state, and `functions` should contain an object that maps node types
-to walker functions. Such functions are called with `(node, state, c)`
-arguments, and can cause the walk to continue on a sub-node by calling
-the `c` argument on it with `(node, state)` arguments. The optional
-`base` argument provides the fallback walker functions for node types
-that aren't handled in the `functions` object. If not given, the
-default walkers will be used.
-
-**make**`(functions, base)` builds a new walker object by using the
-walker functions in `functions` and filling in the missing ones by
-taking defaults from `base`.
-
-**full**`(node, callback, base, state)` does a 'full'
-walk over a tree, calling the callback with the arguments (node, state, type)
-for each node
-
-**fullAncestor**`(node, callback, base, state)` does a 'full' walk over
-a tree, building up an array of ancestor nodes (including the current node)
-and passing the array to the callbacks as a third parameter.
-
-```js
-const acorn = require("acorn")
-const walk = require("acorn/dist/walk")
-
-walk.full(acorn.parse("1 + 1"), node => {
-  console.log(`There's a ${node.type} node at ${node.ch}`)
-})
-```
-
-**findNodeAt**`(node, start, end, test, base, state)` tries to
-locate a node in a tree at the given start and/or end offsets, which
-satisfies the predicate `test`. `start` and `end` can be either `null`
-(as wildcard) or a number. `test` may be a string (indicating a node
-type) or a function that takes `(nodeType, node)` arguments and
-returns a boolean indicating whether this node is interesting. `base`
-and `state` are optional, and can be used to specify a custom walker.
-Nodes are tested from inner to outer, so if two nodes match the
-boundaries, the inner one will be preferred.
-
-**findNodeAround**`(node, pos, test, base, state)` is a lot like
-`findNodeAt`, but will match any node that exists 'around' (spanning)
-the given position.
-
-**findNodeAfter**`(node, pos, test, base, state)` is similar to
-`findNodeAround`, but will match all nodes *after* the given position
-(testing outer nodes before inner nodes).
-
-## Command line interface
-
-The `bin/acorn` utility can be used to parse a file from the command
-line. It accepts as arguments its input file and the following
-options:
-
-- `--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|--ecma10`: Sets the ECMAScript version
-  to parse. Default is version 7.
-
-- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise.
-
-- `--locations`: Attaches a "loc" object to each node with "start" and
-  "end" subobjects, each of which contains the one-based line and
-  zero-based column numbers in `{line, column}` form.
-
-- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment.
-
-- `--compact`: No whitespace is used in the AST output.
-
-- `--silent`: Do not output the AST, just return the exit status.
-
-- `--help`: Print the usage information and quit.
-
-The utility spits out the syntax tree as JSON data.
-
-## Build system
-
-Acorn is written in ECMAScript 6, as a set of small modules, in the
-project's `src` directory, and compiled down to bigger ECMAScript 3
-files in `dist` using [Browserify](http://browserify.org) and
-[Babel](http://babeljs.io/). If you are already using Babel, you can
-consider including the modules directly.
-
-The command-line test runner (`npm test`) uses the ES6 modules. The
-browser-based test page (`test/index.html`) uses the compiled modules.
-The `bin/build-acorn.js` script builds the latter from the former.
-
-If you are working on Acorn, you'll probably want to try the code out
-directly, without an intermediate build step. In your scripts, you can
-register the Babel require shim like this:
-
-    require("babel-core/register")
-
-That will allow you to directly `require` the ES6 modules.
-
-## Plugins
-
-Acorn is designed support allow plugins which, within reasonable
-bounds, redefine the way the parser works. Plugins can add new token
-types and new tokenizer contexts (if necessary), and extend methods in
-the parser object. This is not a clean, elegant API—using it requires
-an understanding of Acorn's internals, and plugins are likely to break
-whenever those internals are significantly changed. But still, it is
-_possible_, in this way, to create parsers for JavaScript dialects
-without forking all of Acorn. And in principle it is even possible to
-combine such plugins, so that if you have, for example, a plugin for
-parsing types and a plugin for parsing JSX-style XML literals, you
-could load them both and parse code with both JSX tags and types.
-
-A plugin should register itself by adding a property to
-`acorn.plugins`, which holds a function. Calling `acorn.parse`, a
-`plugins` option can be passed, holding an object mapping plugin names
-to configuration values (or just `true` for plugins that don't take
-options). After the parser object has been created, the initialization
-functions for the chosen plugins are called with `(parser,
-configValue)` arguments. They are expected to use the `parser.extend`
-method to extend parser methods. For example, the `readToken` method
-could be extended like this:
-
-```javascript
-parser.extend("readToken", function(nextMethod) {
-  return function(code) {
-    console.log("Reading a token!")
-    return nextMethod.call(this, code)
-  }
-})
-```
-
-The `nextMethod` argument passed to `extend`'s second argument is the
-previous value of this method, and should usually be called through to
-whenever the extended method does not handle the call itself.
-
-Similarly, the loose parser allows plugins to register themselves via
-`acorn.pluginsLoose`.  The extension mechanism is the same as for the
-normal parser:
-
-```javascript
-looseParser.extend("readToken", function(nextMethod) {
-  return function() {
-    console.log("Reading a token in the loose parser!")
-    return nextMethod.call(this)
-  }
-})
-```
-
-### Existing plugins
-
- - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx)
- - [`acorn-objj`](https://github.com/cappuccino/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin
- 
- Plugins for ECMAScript proposals:
- 
- - [`acorn-stage3`](https://github.com/acornjs/acorn-stage3): Parse most stage 3 proposals, bundling:
-   - [`acorn-async-iteration`](https://github.com/acornjs/acorn-async-iteration): Parse [async iteration proposal](https://github.com/tc39/proposal-async-iteration)
-   - [`acorn-bigint`](https://github.com/acornjs/acorn-bigint): Parse [BigInt proposal](https://github.com/tc39/proposal-bigint)
-   - [`acorn-class-fields`](https://github.com/acornjs/acorn-class-fields): Parse [class fields proposal](https://github.com/tc39/proposal-class-fields)
-   - [`acorn-dynamic-import`](https://github.com/kesne/acorn-dynamic-import): Parse [import() proposal](https://github.com/tc39/proposal-dynamic-import)
-   - [`acorn-import-meta`](https://github.com/acornjs/acorn-import-meta): Parse [import.meta proposal](https://github.com/tc39/proposal-import-meta)
-   - [`acorn-numeric-separator`](https://github.com/acornjs/acorn-numeric-separator): Parse [numeric separator proposal](https://github.com/tc39/proposal-numeric-separator)
-   - [`acorn-optional-catch-binding`](https://github.com/acornjs/acorn-optional-catch-binding): Parse [optional catch binding proposal](https://github.com/tc39/proposal-optional-catch-binding)
-   - [`acorn-private-methods`](https://github.com/acornjs/acorn-private-methods): parse [private methods, getters and setters proposal](https://github.com/tc39/proposal-private-methods)
-   - [`acorn5-object-spread`](https://github.com/adrianheine/acorn5-object-spread): Parse [Object Rest/Spread Properties proposal](https://github.com/tc39/proposal-object-rest-spread)
- - [`acorn-object-rest-spread`](https://github.com/victor-homyakov/acorn-object-rest-spread): Parse [Object Rest/Spread Properties proposal](https://github.com/tc39/proposal-object-rest-spread)
- - [`acorn-es7`](https://github.com/angelozerr/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators)
- - [`acorn-static-class-property-initializer`](https://github.com/victor-homyakov/acorn-static-class-property-initializer): Partial support for static class properties from [ES Class Fields & Static Properties Proposal](https://github.com/tc39/proposal-class-public-fields) to support static property initializers in [React components written as ES6+ classes](https://babeljs.io/blog/2015/06/07/react-on-es6-plus)

+ 0 - 69
ParticleFilter/node_modules/acorn/bin/_acorn.js

@@ -1,69 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-var path = require('path');
-var fs = require('fs');
-var acorn = require('../dist/acorn.js');
-
-var infile;
-var forceFile;
-var silent = false;
-var compact = false;
-var tokenize = false;
-var options = {};
-
-function help(status) {
-  var print = (status == 0) ? console.log : console.error;
-  print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]");
-  print("        [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
-  process.exit(status);
-}
-
-for (var i = 2; i < process.argv.length; ++i) {
-  var arg = process.argv[i];
-  if ((arg == "-" || arg[0] != "-") && !infile) { infile = arg; }
-  else if (arg == "--" && !infile && i + 2 == process.argv.length) { forceFile = infile = process.argv[++i]; }
-  else if (arg == "--locations") { options.locations = true; }
-  else if (arg == "--allow-hash-bang") { options.allowHashBang = true; }
-  else if (arg == "--silent") { silent = true; }
-  else if (arg == "--compact") { compact = true; }
-  else if (arg == "--help") { help(0); }
-  else if (arg == "--tokenize") { tokenize = true; }
-  else if (arg == "--module") { options.sourceType = "module"; }
-  else {
-    var match = arg.match(/^--ecma(\d+)$/);
-    if (match)
-      { options.ecmaVersion = +match[1]; }
-    else
-      { help(1); }
-  }
-}
-
-function run(code) {
-  var result;
-  try {
-    if (!tokenize) {
-      result = acorn.parse(code, options);
-    } else {
-      result = [];
-      var tokenizer$$1 = acorn.tokenizer(code, options), token;
-      do {
-        token = tokenizer$$1.getToken();
-        result.push(token);
-      } while (token.type != acorn.tokTypes.eof)
-    }
-  } catch (e) {
-    console.error(e.message);
-    process.exit(1);
-  }
-  if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); }
-}
-
-if (forceFile || infile && infile != "-") {
-  run(fs.readFileSync(infile, "utf8"));
-} else {
-  var code = "";
-  process.stdin.resume();
-  process.stdin.on("data", function (chunk) { return code += chunk; });
-  process.stdin.on("end", function () { return run(code); });
-}

+ 0 - 4
ParticleFilter/node_modules/acorn/bin/acorn

@@ -1,4 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-require('./_acorn.js');

+ 0 - 21
ParticleFilter/node_modules/acorn/bin/run_test262.js

@@ -1,21 +0,0 @@
-const fs = require("fs")
-const path = require("path")
-const run = require("test262-parser-runner")
-const parse = require("..").parse
-
-const unsupportedFeatures = [
-  "BigInt",
-  "class-fields",
-  "class-fields-private",
-  "class-fields-public",
-  "numeric-separator-literal"
-];
-
-run(
-  (content, {sourceType}) => parse(content, {sourceType, ecmaVersion: 10}),
-  {
-    testsDirectory: path.dirname(require.resolve("test262/package.json")),
-    skip: test => (test.attrs.features && unsupportedFeatures.some(f => test.attrs.features.includes(f))),
-    whitelist: fs.readFileSync("./bin/test262.whitelist", "utf8").split("\n").filter(v => v)
-  }
-)

+ 0 - 409
ParticleFilter/node_modules/acorn/bin/test262.whitelist

@@ -1,409 +0,0 @@
-annexB/language/function-code/block-decl-func-no-skip-try.js (default)
-annexB/language/function-code/block-decl-func-skip-early-err-block.js (default)
-annexB/language/function-code/block-decl-func-skip-early-err.js (default)
-annexB/language/function-code/block-decl-func-skip-early-err-switch.js (default)
-annexB/language/function-code/block-decl-func-skip-early-err-try.js (default)
-annexB/language/function-code/if-decl-else-decl-a-func-no-skip-try.js (default)
-annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-block.js (default)
-annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err.js (default)
-annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-switch.js (default)
-annexB/language/function-code/if-decl-else-decl-a-func-skip-early-err-try.js (default)
-annexB/language/function-code/if-decl-else-decl-b-func-no-skip-try.js (default)
-annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-block.js (default)
-annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err.js (default)
-annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-switch.js (default)
-annexB/language/function-code/if-decl-else-decl-b-func-skip-early-err-try.js (default)
-annexB/language/function-code/if-decl-else-stmt-func-no-skip-try.js (default)
-annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-block.js (default)
-annexB/language/function-code/if-decl-else-stmt-func-skip-early-err.js (default)
-annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-switch.js (default)
-annexB/language/function-code/if-decl-else-stmt-func-skip-early-err-try.js (default)
-annexB/language/function-code/if-decl-no-else-func-no-skip-try.js (default)
-annexB/language/function-code/if-decl-no-else-func-skip-early-err-block.js (default)
-annexB/language/function-code/if-decl-no-else-func-skip-early-err.js (default)
-annexB/language/function-code/if-decl-no-else-func-skip-early-err-switch.js (default)
-annexB/language/function-code/if-decl-no-else-func-skip-early-err-try.js (default)
-annexB/language/function-code/if-stmt-else-decl-func-no-skip-try.js (default)
-annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-block.js (default)
-annexB/language/function-code/if-stmt-else-decl-func-skip-early-err.js (default)
-annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-switch.js (default)
-annexB/language/function-code/if-stmt-else-decl-func-skip-early-err-try.js (default)
-annexB/language/function-code/switch-case-func-no-skip-try.js (default)
-annexB/language/function-code/switch-case-func-skip-early-err-block.js (default)
-annexB/language/function-code/switch-case-func-skip-early-err.js (default)
-annexB/language/function-code/switch-case-func-skip-early-err-switch.js (default)
-annexB/language/function-code/switch-case-func-skip-early-err-try.js (default)
-annexB/language/function-code/switch-dflt-func-no-skip-try.js (default)
-annexB/language/function-code/switch-dflt-func-skip-early-err-block.js (default)
-annexB/language/function-code/switch-dflt-func-skip-early-err.js (default)
-annexB/language/function-code/switch-dflt-func-skip-early-err-switch.js (default)
-annexB/language/function-code/switch-dflt-func-skip-early-err-try.js (default)
-annexB/language/global-code/block-decl-global-no-skip-try.js (default)
-annexB/language/global-code/block-decl-global-skip-early-err-block.js (default)
-annexB/language/global-code/block-decl-global-skip-early-err.js (default)
-annexB/language/global-code/block-decl-global-skip-early-err-switch.js (default)
-annexB/language/global-code/block-decl-global-skip-early-err-try.js (default)
-annexB/language/global-code/if-decl-else-decl-a-global-no-skip-try.js (default)
-annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-block.js (default)
-annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err.js (default)
-annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-switch.js (default)
-annexB/language/global-code/if-decl-else-decl-a-global-skip-early-err-try.js (default)
-annexB/language/global-code/if-decl-else-decl-b-global-no-skip-try.js (default)
-annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-block.js (default)
-annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err.js (default)
-annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-switch.js (default)
-annexB/language/global-code/if-decl-else-decl-b-global-skip-early-err-try.js (default)
-annexB/language/global-code/if-decl-else-stmt-global-no-skip-try.js (default)
-annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-block.js (default)
-annexB/language/global-code/if-decl-else-stmt-global-skip-early-err.js (default)
-annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-switch.js (default)
-annexB/language/global-code/if-decl-else-stmt-global-skip-early-err-try.js (default)
-annexB/language/global-code/if-decl-no-else-global-no-skip-try.js (default)
-annexB/language/global-code/if-decl-no-else-global-skip-early-err-block.js (default)
-annexB/language/global-code/if-decl-no-else-global-skip-early-err.js (default)
-annexB/language/global-code/if-decl-no-else-global-skip-early-err-switch.js (default)
-annexB/language/global-code/if-decl-no-else-global-skip-early-err-try.js (default)
-annexB/language/global-code/if-stmt-else-decl-global-no-skip-try.js (default)
-annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-block.js (default)
-annexB/language/global-code/if-stmt-else-decl-global-skip-early-err.js (default)
-annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-switch.js (default)
-annexB/language/global-code/if-stmt-else-decl-global-skip-early-err-try.js (default)
-annexB/language/global-code/switch-case-global-no-skip-try.js (default)
-annexB/language/global-code/switch-case-global-skip-early-err-block.js (default)
-annexB/language/global-code/switch-case-global-skip-early-err.js (default)
-annexB/language/global-code/switch-case-global-skip-early-err-switch.js (default)
-annexB/language/global-code/switch-case-global-skip-early-err-try.js (default)
-annexB/language/global-code/switch-dflt-global-no-skip-try.js (default)
-annexB/language/global-code/switch-dflt-global-skip-early-err-block.js (default)
-annexB/language/global-code/switch-dflt-global-skip-early-err.js (default)
-annexB/language/global-code/switch-dflt-global-skip-early-err-switch.js (default)
-annexB/language/global-code/switch-dflt-global-skip-early-err-try.js (default)
-annexB/language/statements/try/catch-redeclared-for-in-var.js (default)
-annexB/language/statements/try/catch-redeclared-for-in-var.js (strict mode)
-annexB/language/statements/try/catch-redeclared-for-var.js (default)
-annexB/language/statements/try/catch-redeclared-for-var.js (strict mode)
-annexB/language/statements/try/catch-redeclared-var-statement-captured.js (default)
-annexB/language/statements/try/catch-redeclared-var-statement-captured.js (strict mode)
-annexB/language/statements/try/catch-redeclared-var-statement.js (default)
-annexB/language/statements/try/catch-redeclared-var-statement.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/block-scope/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/block-scope/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/block-scope/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/block-scope/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js (default)
-language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js (strict mode)
-language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js (default)
-language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js (strict mode)
-language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js (default)
-language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js (strict mode)
-language/expressions/async-function/early-errors-expression-body-contains-super-call.js (default)
-language/expressions/async-function/early-errors-expression-body-contains-super-call.js (strict mode)
-language/expressions/async-function/early-errors-expression-body-contains-super-property.js (default)
-language/expressions/async-function/early-errors-expression-body-contains-super-property.js (strict mode)
-language/expressions/async-function/early-errors-expression-formals-contains-super-call.js (default)
-language/expressions/async-function/early-errors-expression-formals-contains-super-call.js (strict mode)
-language/expressions/async-function/early-errors-expression-formals-contains-super-property.js (default)
-language/expressions/async-function/early-errors-expression-formals-contains-super-property.js (strict mode)
-language/expressions/class/method-param-dflt-yield.js (default)
-language/expressions/class/static-method-param-dflt-yield.js (default)
-language/expressions/function/early-body-super-call.js (default)
-language/expressions/function/early-body-super-call.js (strict mode)
-language/expressions/function/early-body-super-prop.js (default)
-language/expressions/function/early-body-super-prop.js (strict mode)
-language/expressions/function/early-params-super-call.js (default)
-language/expressions/function/early-params-super-call.js (strict mode)
-language/expressions/function/early-params-super-prop.js (default)
-language/expressions/function/early-params-super-prop.js (strict mode)
-language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js (default)
-language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js (strict mode)
-language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js (default)
-language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js (default)
-language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js (strict mode)
-language/expressions/object/method-definition/generator-super-call-body.js (default)
-language/expressions/object/method-definition/generator-super-call-body.js (strict mode)
-language/expressions/object/method-definition/generator-super-call-param.js (default)
-language/expressions/object/method-definition/generator-super-call-param.js (strict mode)
-language/expressions/object/prop-def-invalid-async-prefix.js (default)
-language/expressions/object/prop-def-invalid-async-prefix.js (strict mode)
-language/expressions/yield/in-iteration-stmt.js (default)
-language/expressions/yield/in-iteration-stmt.js (strict mode)
-language/expressions/yield/star-in-iteration-stmt.js (default)
-language/expressions/yield/star-in-iteration-stmt.js (strict mode)
-language/global-code/new.target-arrow.js (default)
-language/global-code/new.target-arrow.js (strict mode)
-language/global-code/super-call-arrow.js (default)
-language/global-code/super-call-arrow.js (strict mode)
-language/global-code/super-prop-arrow.js (default)
-language/global-code/super-prop-arrow.js (strict mode)
-language/module-code/early-export-global.js (default)
-language/module-code/early-export-global.js (strict mode)
-language/module-code/early-export-unresolvable.js (default)
-language/module-code/early-export-unresolvable.js (strict mode)
-language/module-code/parse-err-hoist-lex-fun.js (default)
-language/module-code/parse-err-hoist-lex-fun.js (strict mode)
-language/module-code/parse-err-hoist-lex-gen.js (default)
-language/module-code/parse-err-hoist-lex-gen.js (strict mode)
-language/statements/async-function/early-errors-declaration-body-contains-super-call.js (default)
-language/statements/async-function/early-errors-declaration-body-contains-super-call.js (strict mode)
-language/statements/async-function/early-errors-declaration-body-contains-super-property.js (default)
-language/statements/async-function/early-errors-declaration-body-contains-super-property.js (strict mode)
-language/statements/async-function/early-errors-declaration-formals-contains-super-call.js (default)
-language/statements/async-function/early-errors-declaration-formals-contains-super-call.js (strict mode)
-language/statements/async-function/early-errors-declaration-formals-contains-super-property.js (default)
-language/statements/async-function/early-errors-declaration-formals-contains-super-property.js (strict mode)
-language/expressions/async-generator/early-errors-expression-body-contains-super-call.js (default)
-language/expressions/async-generator/early-errors-expression-body-contains-super-call.js (strict mode)
-language/expressions/async-generator/early-errors-expression-body-contains-super-property.js (default)
-language/expressions/async-generator/early-errors-expression-body-contains-super-property.js (strict mode)
-language/expressions/async-generator/early-errors-expression-formals-contains-super-call.js (default)
-language/expressions/async-generator/early-errors-expression-formals-contains-super-call.js (strict mode)
-language/expressions/async-generator/early-errors-expression-formals-contains-super-property.js (default)
-language/expressions/async-generator/early-errors-expression-formals-contains-super-property.js (strict mode)
-language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js (default)
-language/statements/class/definition/early-errors-class-method-body-contains-super-call.js (default)
-language/statements/class/definition/early-errors-class-method-body-contains-super-call.js (strict mode)
-language/statements/class/definition/early-errors-class-method-duplicate-parameters.js (default)
-language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js (default)
-language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js (default)
-language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js (strict mode)
-language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js (default)
-language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js (default)
-language/statements/class/method-param-yield.js (default)
-language/statements/class/static-method-param-yield.js (default)
-language/statements/class/strict-mode/with.js (default)
-language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js (default)
-language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js (default)
-language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js (strict mode)
-language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js (default)
-language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js (strict mode)
-language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js (default)
-language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js (strict mode)
-language/statements/const/syntax/const-declaring-let-split-across-two-lines.js (default)
-language/statements/do-while/labelled-fn-stmt.js (default)
-language/statements/for/head-let-bound-names-in-stmt.js (default)
-language/statements/for/head-let-bound-names-in-stmt.js (strict mode)
-language/statements/for-in/head-const-bound-names-in-stmt.js (default)
-language/statements/for-in/head-const-bound-names-in-stmt.js (strict mode)
-language/statements/for-in/head-const-bound-names-let.js (default)
-language/statements/for-in/head-let-bound-names-in-stmt.js (default)
-language/statements/for-in/head-let-bound-names-in-stmt.js (strict mode)
-language/statements/for-in/head-let-bound-names-let.js (default)
-language/statements/for-in/labelled-fn-stmt-const.js (default)
-language/statements/for-in/labelled-fn-stmt-let.js (default)
-language/statements/for-in/labelled-fn-stmt-lhs.js (default)
-language/statements/for-in/labelled-fn-stmt-var.js (default)
-language/statements/for-in/let-block-with-newline.js (default)
-language/statements/for-in/let-identifier-with-newline.js (default)
-language/statements/for/labelled-fn-stmt-expr.js (default)
-language/statements/for/labelled-fn-stmt-let.js (default)
-language/statements/for/labelled-fn-stmt-var.js (default)
-language/statements/for/let-block-with-newline.js (default)
-language/statements/for/let-identifier-with-newline.js (default)
-language/statements/for-of/head-const-bound-names-in-stmt.js (default)
-language/statements/for-of/head-const-bound-names-in-stmt.js (strict mode)
-language/statements/for-of/head-const-bound-names-let.js (default)
-language/statements/for-of/head-let-bound-names-in-stmt.js (default)
-language/statements/for-of/head-let-bound-names-in-stmt.js (strict mode)
-language/statements/for-of/head-let-bound-names-let.js (default)
-language/statements/for-of/labelled-fn-stmt-const.js (default)
-language/statements/for-of/labelled-fn-stmt-let.js (default)
-language/statements/for-of/labelled-fn-stmt-lhs.js (default)
-language/statements/for-of/labelled-fn-stmt-var.js (default)
-language/statements/for-of/let-block-with-newline.js (default)
-language/statements/for-of/let-identifier-with-newline.js (default)
-language/statements/for-await-of/let-block-with-newline.js (default)
-language/statements/for-await-of/let-identifier-with-newline.js (default)
-language/statements/function/early-body-super-call.js (default)
-language/statements/function/early-body-super-call.js (strict mode)
-language/statements/function/early-body-super-prop.js (default)
-language/statements/function/early-body-super-prop.js (strict mode)
-language/statements/function/early-params-super-call.js (default)
-language/statements/function/early-params-super-call.js (strict mode)
-language/statements/function/early-params-super-prop.js (default)
-language/statements/function/early-params-super-prop.js (strict mode)
-language/statements/if/if-gen-else-gen.js (default)
-language/statements/if/if-gen-else-stmt.js (default)
-language/statements/if/if-gen-no-else.js (default)
-language/statements/if/if-stmt-else-gen.js (default)
-language/statements/if/labelled-fn-stmt-first.js (default)
-language/statements/if/labelled-fn-stmt-lone.js (default)
-language/statements/if/labelled-fn-stmt-second.js (default)
-language/statements/if/let-block-with-newline.js (default)
-language/statements/if/let-identifier-with-newline.js (default)
-language/statements/labeled/decl-async-function.js (default)
-language/statements/labeled/let-block-with-newline.js (default)
-language/statements/labeled/let-identifier-with-newline.js (default)
-language/statements/let/syntax/identifier-let-disallowed-as-boundname.js (default)
-language/statements/let/syntax/let-let-declaration-split-across-two-lines.js (default)
-language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/statements/switch/syntax/redeclaration/async-generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-const-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-let-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/statements/switch/syntax/redeclaration/class-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/const-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/statements/switch/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (default)
-language/statements/switch/syntax/redeclaration/generator-declaration-attempt-to-redeclare-with-var-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/let-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-async-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (default)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-class-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (default)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-function-declaration.js (strict mode)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (default)
-language/statements/switch/syntax/redeclaration/var-declaration-attempt-to-redeclare-with-generator-declaration.js (strict mode)
-language/statements/while/labelled-fn-stmt.js (default)
-language/statements/while/let-block-with-newline.js (default)
-language/statements/while/let-identifier-with-newline.js (default)
-language/statements/with/labelled-fn-stmt.js (default)
-language/statements/with/let-block-with-newline.js (default)
-language/statements/with/let-identifier-with-newline.js (default)
-language/white-space/mongolian-vowel-separator.js (default)
-language/white-space/mongolian-vowel-separator.js (strict mode)

+ 0 - 0
ParticleFilter/node_modules/acorn/dist/.keep


File diff suppressed because it is too large
+ 0 - 29
ParticleFilter/node_modules/acorn/dist/acorn.es.js


File diff suppressed because it is too large
+ 0 - 35
ParticleFilter/node_modules/acorn/dist/acorn.js


+ 0 - 1424
ParticleFilter/node_modules/acorn/dist/acorn_loose.es.js

@@ -1,1424 +0,0 @@
-import { Node, SourceLocation, Token, addLooseExports, defaultOptions, getLineInfo, isNewLine, lineBreak, lineBreakG, tokTypes, tokenizer } from './acorn.es';
-
-function noop() {}
-
-// Registered plugins
-var pluginsLoose = {};
-
-var LooseParser = function LooseParser(input, options) {
-  if ( options === void 0 ) options = {};
-
-  this.toks = tokenizer(input, options);
-  this.options = this.toks.options;
-  this.input = this.toks.input;
-  this.tok = this.last = {type: tokTypes.eof, start: 0, end: 0};
-  this.tok.validateRegExpFlags = noop;
-  this.tok.validateRegExpPattern = noop;
-  if (this.options.locations) {
-    var here = this.toks.curPosition();
-    this.tok.loc = new SourceLocation(this.toks, here, here);
-  }
-  this.ahead = []; // Tokens ahead
-  this.context = []; // Indentation contexted
-  this.curIndent = 0;
-  this.curLineStart = 0;
-  this.nextLineStart = this.lineEnd(this.curLineStart) + 1;
-  this.inAsync = false;
-  this.inFunction = false;
-  // Load plugins
-  this.options.pluginsLoose = options.pluginsLoose || {};
-  this.loadPlugins(this.options.pluginsLoose);
-};
-
-LooseParser.prototype.startNode = function startNode () {
-  return new Node(this.toks, this.tok.start, this.options.locations ? this.tok.loc.start : null)
-};
-
-LooseParser.prototype.storeCurrentPos = function storeCurrentPos () {
-  return this.options.locations ? [this.tok.start, this.tok.loc.start] : this.tok.start
-};
-
-LooseParser.prototype.startNodeAt = function startNodeAt (pos) {
-  if (this.options.locations) {
-    return new Node(this.toks, pos[0], pos[1])
-  } else {
-    return new Node(this.toks, pos)
-  }
-};
-
-LooseParser.prototype.finishNode = function finishNode (node, type) {
-  node.type = type;
-  node.end = this.last.end;
-  if (this.options.locations)
-    { node.loc.end = this.last.loc.end; }
-  if (this.options.ranges)
-    { node.range[1] = this.last.end; }
-  return node
-};
-
-LooseParser.prototype.dummyNode = function dummyNode (type) {
-  var dummy = this.startNode();
-  dummy.type = type;
-  dummy.end = dummy.start;
-  if (this.options.locations)
-    { dummy.loc.end = dummy.loc.start; }
-  if (this.options.ranges)
-    { dummy.range[1] = dummy.start; }
-  this.last = {type: tokTypes.name, start: dummy.start, end: dummy.start, loc: dummy.loc};
-  return dummy
-};
-
-LooseParser.prototype.dummyIdent = function dummyIdent () {
-  var dummy = this.dummyNode("Identifier");
-  dummy.name = "✖";
-  return dummy
-};
-
-LooseParser.prototype.dummyString = function dummyString () {
-  var dummy = this.dummyNode("Literal");
-  dummy.value = dummy.raw = "✖";
-  return dummy
-};
-
-LooseParser.prototype.eat = function eat (type) {
-  if (this.tok.type === type) {
-    this.next();
-    return true
-  } else {
-    return false
-  }
-};
-
-LooseParser.prototype.isContextual = function isContextual (name) {
-  return this.tok.type === tokTypes.name && this.tok.value === name
-};
-
-LooseParser.prototype.eatContextual = function eatContextual (name) {
-  return this.tok.value === name && this.eat(tokTypes.name)
-};
-
-LooseParser.prototype.canInsertSemicolon = function canInsertSemicolon () {
-  return this.tok.type === tokTypes.eof || this.tok.type === tokTypes.braceR ||
-    lineBreak.test(this.input.slice(this.last.end, this.tok.start))
-};
-
-LooseParser.prototype.semicolon = function semicolon () {
-  return this.eat(tokTypes.semi)
-};
-
-LooseParser.prototype.expect = function expect (type) {
-    var this$1 = this;
-
-  if (this.eat(type)) { return true }
-  for (var i = 1; i <= 2; i++) {
-    if (this$1.lookAhead(i).type == type) {
-      for (var j = 0; j < i; j++) { this$1.next(); }
-      return true
-    }
-  }
-};
-
-LooseParser.prototype.pushCx = function pushCx () {
-  this.context.push(this.curIndent);
-};
-
-LooseParser.prototype.popCx = function popCx () {
-  this.curIndent = this.context.pop();
-};
-
-LooseParser.prototype.lineEnd = function lineEnd (pos) {
-  while (pos < this.input.length && !isNewLine(this.input.charCodeAt(pos))) { ++pos; }
-  return pos
-};
-
-LooseParser.prototype.indentationAfter = function indentationAfter (pos) {
-    var this$1 = this;
-
-  for (var count = 0;; ++pos) {
-    var ch = this$1.input.charCodeAt(pos);
-    if (ch === 32) { ++count; }
-    else if (ch === 9) { count += this$1.options.tabSize; }
-    else { return count }
-  }
-};
-
-LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) {
-  if (this.tok.type === closeTok || this.tok.type === tokTypes.eof) { return true }
-  return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
-    (!blockHeuristic || this.nextLineStart >= this.input.length ||
-     this.indentationAfter(this.nextLineStart) < indent)
-};
-
-LooseParser.prototype.tokenStartsLine = function tokenStartsLine () {
-    var this$1 = this;
-
-  for (var p = this.tok.start - 1; p >= this.curLineStart; --p) {
-    var ch = this$1.input.charCodeAt(p);
-    if (ch !== 9 && ch !== 32) { return false }
-  }
-  return true
-};
-
-LooseParser.prototype.extend = function extend (name, f) {
-  this[name] = f(this[name]);
-};
-
-LooseParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) {
-    var this$1 = this;
-
-  for (var name in pluginConfigs) {
-    var plugin = pluginsLoose[name];
-    if (!plugin) { throw new Error("Plugin '" + name + "' not found") }
-    plugin(this$1, pluginConfigs[name]);
-  }
-};
-
-LooseParser.prototype.parse = function parse () {
-  this.next();
-  return this.parseTopLevel()
-};
-
-var lp = LooseParser.prototype;
-
-function isSpace(ch) {
-  return (ch < 14 && ch > 8) || ch === 32 || ch === 160 || isNewLine(ch)
-}
-
-lp.next = function() {
-  var this$1 = this;
-
-  this.last = this.tok;
-  if (this.ahead.length)
-    { this.tok = this.ahead.shift(); }
-  else
-    { this.tok = this.readToken(); }
-
-  if (this.tok.start >= this.nextLineStart) {
-    while (this.tok.start >= this.nextLineStart) {
-      this$1.curLineStart = this$1.nextLineStart;
-      this$1.nextLineStart = this$1.lineEnd(this$1.curLineStart) + 1;
-    }
-    this.curIndent = this.indentationAfter(this.curLineStart);
-  }
-};
-
-lp.readToken = function() {
-  var this$1 = this;
-
-  for (;;) {
-    try {
-      this$1.toks.next();
-      if (this$1.toks.type === tokTypes.dot &&
-          this$1.input.substr(this$1.toks.end, 1) === "." &&
-          this$1.options.ecmaVersion >= 6) {
-        this$1.toks.end++;
-        this$1.toks.type = tokTypes.ellipsis;
-      }
-      return new Token(this$1.toks)
-    } catch (e) {
-      if (!(e instanceof SyntaxError)) { throw e }
-
-      // Try to skip some text, based on the error message, and then continue
-      var msg = e.message, pos = e.raisedAt, replace = true;
-      if (/unterminated/i.test(msg)) {
-        pos = this$1.lineEnd(e.pos + 1);
-        if (/string/.test(msg)) {
-          replace = {start: e.pos, end: pos, type: tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)};
-        } else if (/regular expr/i.test(msg)) {
-          var re = this$1.input.slice(e.pos, pos);
-          try { re = new RegExp(re); } catch (e) { /* ignore compilation error due to new syntax */ }
-          replace = {start: e.pos, end: pos, type: tokTypes.regexp, value: re};
-        } else if (/template/.test(msg)) {
-          replace = {
-            start: e.pos,
-            end: pos,
-            type: tokTypes.template,
-            value: this$1.input.slice(e.pos, pos)
-          };
-        } else {
-          replace = false;
-        }
-      } else if (/invalid (unicode|regexp|number)|expecting unicode|octal literal|is reserved|directly after number|expected number in radix/i.test(msg)) {
-        while (pos < this.input.length && !isSpace(this.input.charCodeAt(pos))) { ++pos; }
-      } else if (/character escape|expected hexadecimal/i.test(msg)) {
-        while (pos < this.input.length) {
-          var ch = this$1.input.charCodeAt(pos++);
-          if (ch === 34 || ch === 39 || isNewLine(ch)) { break }
-        }
-      } else if (/unexpected character/i.test(msg)) {
-        pos++;
-        replace = false;
-      } else if (/regular expression/i.test(msg)) {
-        replace = true;
-      } else {
-        throw e
-      }
-      this$1.resetTo(pos);
-      if (replace === true) { replace = {start: pos, end: pos, type: tokTypes.name, value: "✖"}; }
-      if (replace) {
-        if (this$1.options.locations)
-          { replace.loc = new SourceLocation(
-            this$1.toks,
-            getLineInfo(this$1.input, replace.start),
-            getLineInfo(this$1.input, replace.end)); }
-        return replace
-      }
-    }
-  }
-};
-
-lp.resetTo = function(pos) {
-  var this$1 = this;
-
-  this.toks.pos = pos;
-  var ch = this.input.charAt(pos - 1);
-  this.toks.exprAllowed = !ch || /[[{(,;:?/*=+\-~!|&%^<>]/.test(ch) ||
-    /[enwfd]/.test(ch) &&
-    /\b(case|else|return|throw|new|in|(instance|type)?of|delete|void)$/.test(this.input.slice(pos - 10, pos));
-
-  if (this.options.locations) {
-    this.toks.curLine = 1;
-    this.toks.lineStart = lineBreakG.lastIndex = 0;
-    var match;
-    while ((match = lineBreakG.exec(this.input)) && match.index < pos) {
-      ++this$1.toks.curLine;
-      this$1.toks.lineStart = match.index + match[0].length;
-    }
-  }
-};
-
-lp.lookAhead = function(n) {
-  var this$1 = this;
-
-  while (n > this.ahead.length)
-    { this$1.ahead.push(this$1.readToken()); }
-  return this.ahead[n - 1]
-};
-
-function isDummy(node) { return node.name == "✖" }
-
-var lp$1 = LooseParser.prototype;
-
-lp$1.parseTopLevel = function() {
-  var this$1 = this;
-
-  var node = this.startNodeAt(this.options.locations ? [0, getLineInfo(this.input, 0)] : 0);
-  node.body = [];
-  while (this.tok.type !== tokTypes.eof) { node.body.push(this$1.parseStatement()); }
-  this.toks.adaptDirectivePrologue(node.body);
-  this.last = this.tok;
-  if (this.options.ecmaVersion >= 6) {
-    node.sourceType = this.options.sourceType;
-  }
-  return this.finishNode(node, "Program")
-};
-
-lp$1.parseStatement = function() {
-  var this$1 = this;
-
-  var starttype = this.tok.type, node = this.startNode(), kind;
-
-  if (this.toks.isLet()) {
-    starttype = tokTypes._var;
-    kind = "let";
-  }
-
-  switch (starttype) {
-  case tokTypes._break: case tokTypes._continue:
-    this.next();
-    var isBreak = starttype === tokTypes._break;
-    if (this.semicolon() || this.canInsertSemicolon()) {
-      node.label = null;
-    } else {
-      node.label = this.tok.type === tokTypes.name ? this.parseIdent() : null;
-      this.semicolon();
-    }
-    return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement")
-
-  case tokTypes._debugger:
-    this.next();
-    this.semicolon();
-    return this.finishNode(node, "DebuggerStatement")
-
-  case tokTypes._do:
-    this.next();
-    node.body = this.parseStatement();
-    node.test = this.eat(tokTypes._while) ? this.parseParenExpression() : this.dummyIdent();
-    this.semicolon();
-    return this.finishNode(node, "DoWhileStatement")
-
-  case tokTypes._for:
-    this.next(); // `for` keyword
-    var isAwait = this.options.ecmaVersion >= 9 && this.inAsync && this.eatContextual("await");
-
-    this.pushCx();
-    this.expect(tokTypes.parenL);
-    if (this.tok.type === tokTypes.semi) { return this.parseFor(node, null) }
-    var isLet = this.toks.isLet();
-    if (isLet || this.tok.type === tokTypes._var || this.tok.type === tokTypes._const) {
-      var init$1 = this.parseVar(true, isLet ? "let" : this.tok.value);
-      if (init$1.declarations.length === 1 && (this.tok.type === tokTypes._in || this.isContextual("of"))) {
-        if (this.options.ecmaVersion >= 9 && this.tok.type !== tokTypes._in) {
-          node.await = isAwait;
-        }
-        return this.parseForIn(node, init$1)
-      }
-      return this.parseFor(node, init$1)
-    }
-    var init = this.parseExpression(true);
-    if (this.tok.type === tokTypes._in || this.isContextual("of")) {
-      if (this.options.ecmaVersion >= 9 && this.tok.type !== tokTypes._in) {
-        node.await = isAwait;
-      }
-      return this.parseForIn(node, this.toAssignable(init))
-    }
-    return this.parseFor(node, init)
-
-  case tokTypes._function:
-    this.next();
-    return this.parseFunction(node, true)
-
-  case tokTypes._if:
-    this.next();
-    node.test = this.parseParenExpression();
-    node.consequent = this.parseStatement();
-    node.alternate = this.eat(tokTypes._else) ? this.parseStatement() : null;
-    return this.finishNode(node, "IfStatement")
-
-  case tokTypes._return:
-    this.next();
-    if (this.eat(tokTypes.semi) || this.canInsertSemicolon()) { node.argument = null; }
-    else { node.argument = this.parseExpression(); this.semicolon(); }
-    return this.finishNode(node, "ReturnStatement")
-
-  case tokTypes._switch:
-    var blockIndent = this.curIndent, line = this.curLineStart;
-    this.next();
-    node.discriminant = this.parseParenExpression();
-    node.cases = [];
-    this.pushCx();
-    this.expect(tokTypes.braceL);
-
-    var cur;
-    while (!this.closes(tokTypes.braceR, blockIndent, line, true)) {
-      if (this$1.tok.type === tokTypes._case || this$1.tok.type === tokTypes._default) {
-        var isCase = this$1.tok.type === tokTypes._case;
-        if (cur) { this$1.finishNode(cur, "SwitchCase"); }
-        node.cases.push(cur = this$1.startNode());
-        cur.consequent = [];
-        this$1.next();
-        if (isCase) { cur.test = this$1.parseExpression(); }
-        else { cur.test = null; }
-        this$1.expect(tokTypes.colon);
-      } else {
-        if (!cur) {
-          node.cases.push(cur = this$1.startNode());
-          cur.consequent = [];
-          cur.test = null;
-        }
-        cur.consequent.push(this$1.parseStatement());
-      }
-    }
-    if (cur) { this.finishNode(cur, "SwitchCase"); }
-    this.popCx();
-    this.eat(tokTypes.braceR);
-    return this.finishNode(node, "SwitchStatement")
-
-  case tokTypes._throw:
-    this.next();
-    node.argument = this.parseExpression();
-    this.semicolon();
-    return this.finishNode(node, "ThrowStatement")
-
-  case tokTypes._try:
-    this.next();
-    node.block = this.parseBlock();
-    node.handler = null;
-    if (this.tok.type === tokTypes._catch) {
-      var clause = this.startNode();
-      this.next();
-      if (this.eat(tokTypes.parenL)) {
-        clause.param = this.toAssignable(this.parseExprAtom(), true);
-        this.expect(tokTypes.parenR);
-      } else {
-        clause.param = null;
-      }
-      clause.body = this.parseBlock();
-      node.handler = this.finishNode(clause, "CatchClause");
-    }
-    node.finalizer = this.eat(tokTypes._finally) ? this.parseBlock() : null;
-    if (!node.handler && !node.finalizer) { return node.block }
-    return this.finishNode(node, "TryStatement")
-
-  case tokTypes._var:
-  case tokTypes._const:
-    return this.parseVar(false, kind || this.tok.value)
-
-  case tokTypes._while:
-    this.next();
-    node.test = this.parseParenExpression();
-    node.body = this.parseStatement();
-    return this.finishNode(node, "WhileStatement")
-
-  case tokTypes._with:
-    this.next();
-    node.object = this.parseParenExpression();
-    node.body = this.parseStatement();
-    return this.finishNode(node, "WithStatement")
-
-  case tokTypes.braceL:
-    return this.parseBlock()
-
-  case tokTypes.semi:
-    this.next();
-    return this.finishNode(node, "EmptyStatement")
-
-  case tokTypes._class:
-    return this.parseClass(true)
-
-  case tokTypes._import:
-    return this.parseImport()
-
-  case tokTypes._export:
-    return this.parseExport()
-
-  default:
-    if (this.toks.isAsyncFunction()) {
-      this.next();
-      this.next();
-      return this.parseFunction(node, true, true)
-    }
-    var expr = this.parseExpression();
-    if (isDummy(expr)) {
-      this.next();
-      if (this.tok.type === tokTypes.eof) { return this.finishNode(node, "EmptyStatement") }
-      return this.parseStatement()
-    } else if (starttype === tokTypes.name && expr.type === "Identifier" && this.eat(tokTypes.colon)) {
-      node.body = this.parseStatement();
-      node.label = expr;
-      return this.finishNode(node, "LabeledStatement")
-    } else {
-      node.expression = expr;
-      this.semicolon();
-      return this.finishNode(node, "ExpressionStatement")
-    }
-  }
-};
-
-lp$1.parseBlock = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.pushCx();
-  this.expect(tokTypes.braceL);
-  var blockIndent = this.curIndent, line = this.curLineStart;
-  node.body = [];
-  while (!this.closes(tokTypes.braceR, blockIndent, line, true))
-    { node.body.push(this$1.parseStatement()); }
-  this.popCx();
-  this.eat(tokTypes.braceR);
-  return this.finishNode(node, "BlockStatement")
-};
-
-lp$1.parseFor = function(node, init) {
-  node.init = init;
-  node.test = node.update = null;
-  if (this.eat(tokTypes.semi) && this.tok.type !== tokTypes.semi) { node.test = this.parseExpression(); }
-  if (this.eat(tokTypes.semi) && this.tok.type !== tokTypes.parenR) { node.update = this.parseExpression(); }
-  this.popCx();
-  this.expect(tokTypes.parenR);
-  node.body = this.parseStatement();
-  return this.finishNode(node, "ForStatement")
-};
-
-lp$1.parseForIn = function(node, init) {
-  var type = this.tok.type === tokTypes._in ? "ForInStatement" : "ForOfStatement";
-  this.next();
-  node.left = init;
-  node.right = this.parseExpression();
-  this.popCx();
-  this.expect(tokTypes.parenR);
-  node.body = this.parseStatement();
-  return this.finishNode(node, type)
-};
-
-lp$1.parseVar = function(noIn, kind) {
-  var this$1 = this;
-
-  var node = this.startNode();
-  node.kind = kind;
-  this.next();
-  node.declarations = [];
-  do {
-    var decl = this$1.startNode();
-    decl.id = this$1.options.ecmaVersion >= 6 ? this$1.toAssignable(this$1.parseExprAtom(), true) : this$1.parseIdent();
-    decl.init = this$1.eat(tokTypes.eq) ? this$1.parseMaybeAssign(noIn) : null;
-    node.declarations.push(this$1.finishNode(decl, "VariableDeclarator"));
-  } while (this.eat(tokTypes.comma))
-  if (!node.declarations.length) {
-    var decl$1 = this.startNode();
-    decl$1.id = this.dummyIdent();
-    node.declarations.push(this.finishNode(decl$1, "VariableDeclarator"));
-  }
-  if (!noIn) { this.semicolon(); }
-  return this.finishNode(node, "VariableDeclaration")
-};
-
-lp$1.parseClass = function(isStatement) {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.next();
-  if (this.tok.type === tokTypes.name) { node.id = this.parseIdent(); }
-  else if (isStatement === true) { node.id = this.dummyIdent(); }
-  else { node.id = null; }
-  node.superClass = this.eat(tokTypes._extends) ? this.parseExpression() : null;
-  node.body = this.startNode();
-  node.body.body = [];
-  this.pushCx();
-  var indent = this.curIndent + 1, line = this.curLineStart;
-  this.eat(tokTypes.braceL);
-  if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart; }
-  while (!this.closes(tokTypes.braceR, indent, line)) {
-    if (this$1.semicolon()) { continue }
-    var method = this$1.startNode(), isGenerator = (void 0), isAsync = (void 0);
-    if (this$1.options.ecmaVersion >= 6) {
-      method.static = false;
-      isGenerator = this$1.eat(tokTypes.star);
-    }
-    this$1.parsePropertyName(method);
-    if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(tokTypes.comma); continue }
-    if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" &&
-        (this$1.tok.type != tokTypes.parenL && this$1.tok.type != tokTypes.braceL)) {
-      method.static = true;
-      isGenerator = this$1.eat(tokTypes.star);
-      this$1.parsePropertyName(method);
-    } else {
-      method.static = false;
-    }
-    if (!method.computed &&
-        method.key.type === "Identifier" && method.key.name === "async" && this$1.tok.type !== tokTypes.parenL &&
-        !this$1.canInsertSemicolon()) {
-      isAsync = true;
-      isGenerator = this$1.options.ecmaVersion >= 9 && this$1.eat(tokTypes.star);
-      this$1.parsePropertyName(method);
-    } else {
-      isAsync = false;
-    }
-    if (this$1.options.ecmaVersion >= 5 && method.key.type === "Identifier" &&
-        !method.computed && (method.key.name === "get" || method.key.name === "set") &&
-        this$1.tok.type !== tokTypes.parenL && this$1.tok.type !== tokTypes.braceL) {
-      method.kind = method.key.name;
-      this$1.parsePropertyName(method);
-      method.value = this$1.parseMethod(false);
-    } else {
-      if (!method.computed && !method.static && !isGenerator && !isAsync && (
-        method.key.type === "Identifier" && method.key.name === "constructor" ||
-          method.key.type === "Literal" && method.key.value === "constructor")) {
-        method.kind = "constructor";
-      } else {
-        method.kind = "method";
-      }
-      method.value = this$1.parseMethod(isGenerator, isAsync);
-    }
-    node.body.body.push(this$1.finishNode(method, "MethodDefinition"));
-  }
-  this.popCx();
-  if (!this.eat(tokTypes.braceR)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  this.semicolon();
-  this.finishNode(node.body, "ClassBody");
-  return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression")
-};
-
-lp$1.parseFunction = function(node, isStatement, isAsync) {
-  var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 6) {
-    node.generator = this.eat(tokTypes.star);
-  }
-  if (this.options.ecmaVersion >= 8) {
-    node.async = !!isAsync;
-  }
-  if (this.tok.type === tokTypes.name) { node.id = this.parseIdent(); }
-  else if (isStatement === true) { node.id = this.dummyIdent(); }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.parseFunctionParams();
-  node.body = this.parseBlock();
-  this.toks.adaptDirectivePrologue(node.body.body);
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
-};
-
-lp$1.parseExport = function() {
-  var node = this.startNode();
-  this.next();
-  if (this.eat(tokTypes.star)) {
-    node.source = this.eatContextual("from") ? this.parseExprAtom() : this.dummyString();
-    return this.finishNode(node, "ExportAllDeclaration")
-  }
-  if (this.eat(tokTypes._default)) {
-    // export default (function foo() {}) // This is FunctionExpression.
-    var isAsync;
-    if (this.tok.type === tokTypes._function || (isAsync = this.toks.isAsyncFunction())) {
-      var fNode = this.startNode();
-      this.next();
-      if (isAsync) { this.next(); }
-      node.declaration = this.parseFunction(fNode, "nullableID", isAsync);
-    } else if (this.tok.type === tokTypes._class) {
-      node.declaration = this.parseClass("nullableID");
-    } else {
-      node.declaration = this.parseMaybeAssign();
-      this.semicolon();
-    }
-    return this.finishNode(node, "ExportDefaultDeclaration")
-  }
-  if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) {
-    node.declaration = this.parseStatement();
-    node.specifiers = [];
-    node.source = null;
-  } else {
-    node.declaration = null;
-    node.specifiers = this.parseExportSpecifierList();
-    node.source = this.eatContextual("from") ? this.parseExprAtom() : null;
-    this.semicolon();
-  }
-  return this.finishNode(node, "ExportNamedDeclaration")
-};
-
-lp$1.parseImport = function() {
-  var node = this.startNode();
-  this.next();
-  if (this.tok.type === tokTypes.string) {
-    node.specifiers = [];
-    node.source = this.parseExprAtom();
-  } else {
-    var elt;
-    if (this.tok.type === tokTypes.name && this.tok.value !== "from") {
-      elt = this.startNode();
-      elt.local = this.parseIdent();
-      this.finishNode(elt, "ImportDefaultSpecifier");
-      this.eat(tokTypes.comma);
-    }
-    node.specifiers = this.parseImportSpecifierList();
-    node.source = this.eatContextual("from") && this.tok.type == tokTypes.string ? this.parseExprAtom() : this.dummyString();
-    if (elt) { node.specifiers.unshift(elt); }
-  }
-  this.semicolon();
-  return this.finishNode(node, "ImportDeclaration")
-};
-
-lp$1.parseImportSpecifierList = function() {
-  var this$1 = this;
-
-  var elts = [];
-  if (this.tok.type === tokTypes.star) {
-    var elt = this.startNode();
-    this.next();
-    elt.local = this.eatContextual("as") ? this.parseIdent() : this.dummyIdent();
-    elts.push(this.finishNode(elt, "ImportNamespaceSpecifier"));
-  } else {
-    var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart;
-    this.pushCx();
-    this.eat(tokTypes.braceL);
-    if (this.curLineStart > continuedLine) { continuedLine = this.curLineStart; }
-    while (!this.closes(tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) {
-      var elt$1 = this$1.startNode();
-      if (this$1.eat(tokTypes.star)) {
-        elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : this$1.dummyIdent();
-        this$1.finishNode(elt$1, "ImportNamespaceSpecifier");
-      } else {
-        if (this$1.isContextual("from")) { break }
-        elt$1.imported = this$1.parseIdent();
-        if (isDummy(elt$1.imported)) { break }
-        elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : elt$1.imported;
-        this$1.finishNode(elt$1, "ImportSpecifier");
-      }
-      elts.push(elt$1);
-      this$1.eat(tokTypes.comma);
-    }
-    this.eat(tokTypes.braceR);
-    this.popCx();
-  }
-  return elts
-};
-
-lp$1.parseExportSpecifierList = function() {
-  var this$1 = this;
-
-  var elts = [];
-  var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart;
-  this.pushCx();
-  this.eat(tokTypes.braceL);
-  if (this.curLineStart > continuedLine) { continuedLine = this.curLineStart; }
-  while (!this.closes(tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) {
-    if (this$1.isContextual("from")) { break }
-    var elt = this$1.startNode();
-    elt.local = this$1.parseIdent();
-    if (isDummy(elt.local)) { break }
-    elt.exported = this$1.eatContextual("as") ? this$1.parseIdent() : elt.local;
-    this$1.finishNode(elt, "ExportSpecifier");
-    elts.push(elt);
-    this$1.eat(tokTypes.comma);
-  }
-  this.eat(tokTypes.braceR);
-  this.popCx();
-  return elts
-};
-
-var lp$2 = LooseParser.prototype;
-
-lp$2.checkLVal = function(expr) {
-  if (!expr) { return expr }
-  switch (expr.type) {
-  case "Identifier":
-  case "MemberExpression":
-    return expr
-
-  case "ParenthesizedExpression":
-    expr.expression = this.checkLVal(expr.expression);
-    return expr
-
-  default:
-    return this.dummyIdent()
-  }
-};
-
-lp$2.parseExpression = function(noIn) {
-  var this$1 = this;
-
-  var start = this.storeCurrentPos();
-  var expr = this.parseMaybeAssign(noIn);
-  if (this.tok.type === tokTypes.comma) {
-    var node = this.startNodeAt(start);
-    node.expressions = [expr];
-    while (this.eat(tokTypes.comma)) { node.expressions.push(this$1.parseMaybeAssign(noIn)); }
-    return this.finishNode(node, "SequenceExpression")
-  }
-  return expr
-};
-
-lp$2.parseParenExpression = function() {
-  this.pushCx();
-  this.expect(tokTypes.parenL);
-  var val = this.parseExpression();
-  this.popCx();
-  this.expect(tokTypes.parenR);
-  return val
-};
-
-lp$2.parseMaybeAssign = function(noIn) {
-  if (this.toks.isContextual("yield")) {
-    var node = this.startNode();
-    this.next();
-    if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != tokTypes.star && !this.tok.type.startsExpr)) {
-      node.delegate = false;
-      node.argument = null;
-    } else {
-      node.delegate = this.eat(tokTypes.star);
-      node.argument = this.parseMaybeAssign();
-    }
-    return this.finishNode(node, "YieldExpression")
-  }
-
-  var start = this.storeCurrentPos();
-  var left = this.parseMaybeConditional(noIn);
-  if (this.tok.type.isAssign) {
-    var node$1 = this.startNodeAt(start);
-    node$1.operator = this.tok.value;
-    node$1.left = this.tok.type === tokTypes.eq ? this.toAssignable(left) : this.checkLVal(left);
-    this.next();
-    node$1.right = this.parseMaybeAssign(noIn);
-    return this.finishNode(node$1, "AssignmentExpression")
-  }
-  return left
-};
-
-lp$2.parseMaybeConditional = function(noIn) {
-  var start = this.storeCurrentPos();
-  var expr = this.parseExprOps(noIn);
-  if (this.eat(tokTypes.question)) {
-    var node = this.startNodeAt(start);
-    node.test = expr;
-    node.consequent = this.parseMaybeAssign();
-    node.alternate = this.expect(tokTypes.colon) ? this.parseMaybeAssign(noIn) : this.dummyIdent();
-    return this.finishNode(node, "ConditionalExpression")
-  }
-  return expr
-};
-
-lp$2.parseExprOps = function(noIn) {
-  var start = this.storeCurrentPos();
-  var indent = this.curIndent, line = this.curLineStart;
-  return this.parseExprOp(this.parseMaybeUnary(false), start, -1, noIn, indent, line)
-};
-
-lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
-  if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { return left }
-  var prec = this.tok.type.binop;
-  if (prec != null && (!noIn || this.tok.type !== tokTypes._in)) {
-    if (prec > minPrec) {
-      var node = this.startNodeAt(start);
-      node.left = left;
-      node.operator = this.tok.value;
-      this.next();
-      if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) {
-        node.right = this.dummyIdent();
-      } else {
-        var rightStart = this.storeCurrentPos();
-        node.right = this.parseExprOp(this.parseMaybeUnary(false), rightStart, prec, noIn, indent, line);
-      }
-      this.finishNode(node, /&&|\|\|/.test(node.operator) ? "LogicalExpression" : "BinaryExpression");
-      return this.parseExprOp(node, start, minPrec, noIn, indent, line)
-    }
-  }
-  return left
-};
-
-lp$2.parseMaybeUnary = function(sawUnary) {
-  var this$1 = this;
-
-  var start = this.storeCurrentPos(), expr;
-  if (this.options.ecmaVersion >= 8 && this.toks.isContextual("await") &&
-    (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))
-  ) {
-    expr = this.parseAwait();
-    sawUnary = true;
-  } else if (this.tok.type.prefix) {
-    var node = this.startNode(), update = this.tok.type === tokTypes.incDec;
-    if (!update) { sawUnary = true; }
-    node.operator = this.tok.value;
-    node.prefix = true;
-    this.next();
-    node.argument = this.parseMaybeUnary(true);
-    if (update) { node.argument = this.checkLVal(node.argument); }
-    expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
-  } else if (this.tok.type === tokTypes.ellipsis) {
-    var node$1 = this.startNode();
-    this.next();
-    node$1.argument = this.parseMaybeUnary(sawUnary);
-    expr = this.finishNode(node$1, "SpreadElement");
-  } else {
-    expr = this.parseExprSubscripts();
-    while (this.tok.type.postfix && !this.canInsertSemicolon()) {
-      var node$2 = this$1.startNodeAt(start);
-      node$2.operator = this$1.tok.value;
-      node$2.prefix = false;
-      node$2.argument = this$1.checkLVal(expr);
-      this$1.next();
-      expr = this$1.finishNode(node$2, "UpdateExpression");
-    }
-  }
-
-  if (!sawUnary && this.eat(tokTypes.starstar)) {
-    var node$3 = this.startNodeAt(start);
-    node$3.operator = "**";
-    node$3.left = expr;
-    node$3.right = this.parseMaybeUnary(false);
-    return this.finishNode(node$3, "BinaryExpression")
-  }
-
-  return expr
-};
-
-lp$2.parseExprSubscripts = function() {
-  var start = this.storeCurrentPos();
-  return this.parseSubscripts(this.parseExprAtom(), start, false, this.curIndent, this.curLineStart)
-};
-
-lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
-  var this$1 = this;
-
-  for (;;) {
-    if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
-      if (this$1.tok.type == tokTypes.dot && this$1.curIndent == startIndent)
-        { --startIndent; }
-      else
-        { return base }
-    }
-
-    var maybeAsyncArrow = base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon();
-
-    if (this$1.eat(tokTypes.dot)) {
-      var node = this$1.startNodeAt(start);
-      node.object = base;
-      if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
-        { node.property = this$1.dummyIdent(); }
-      else
-        { node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent(); }
-      node.computed = false;
-      base = this$1.finishNode(node, "MemberExpression");
-    } else if (this$1.tok.type == tokTypes.bracketL) {
-      this$1.pushCx();
-      this$1.next();
-      var node$1 = this$1.startNodeAt(start);
-      node$1.object = base;
-      node$1.property = this$1.parseExpression();
-      node$1.computed = true;
-      this$1.popCx();
-      this$1.expect(tokTypes.bracketR);
-      base = this$1.finishNode(node$1, "MemberExpression");
-    } else if (!noCalls && this$1.tok.type == tokTypes.parenL) {
-      var exprList = this$1.parseExprList(tokTypes.parenR);
-      if (maybeAsyncArrow && this$1.eat(tokTypes.arrow))
-        { return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) }
-      var node$2 = this$1.startNodeAt(start);
-      node$2.callee = base;
-      node$2.arguments = exprList;
-      base = this$1.finishNode(node$2, "CallExpression");
-    } else if (this$1.tok.type == tokTypes.backQuote) {
-      var node$3 = this$1.startNodeAt(start);
-      node$3.tag = base;
-      node$3.quasi = this$1.parseTemplate();
-      base = this$1.finishNode(node$3, "TaggedTemplateExpression");
-    } else {
-      return base
-    }
-  }
-};
-
-lp$2.parseExprAtom = function() {
-  var node;
-  switch (this.tok.type) {
-  case tokTypes._this:
-  case tokTypes._super:
-    var type = this.tok.type === tokTypes._this ? "ThisExpression" : "Super";
-    node = this.startNode();
-    this.next();
-    return this.finishNode(node, type)
-
-  case tokTypes.name:
-    var start = this.storeCurrentPos();
-    var id = this.parseIdent();
-    var isAsync = false;
-    if (id.name === "async" && !this.canInsertSemicolon()) {
-      if (this.eat(tokTypes._function))
-        { return this.parseFunction(this.startNodeAt(start), false, true) }
-      if (this.tok.type === tokTypes.name) {
-        id = this.parseIdent();
-        isAsync = true;
-      }
-    }
-    return this.eat(tokTypes.arrow) ? this.parseArrowExpression(this.startNodeAt(start), [id], isAsync) : id
-
-  case tokTypes.regexp:
-    node = this.startNode();
-    var val = this.tok.value;
-    node.regex = {pattern: val.pattern, flags: val.flags};
-    node.value = val.value;
-    node.raw = this.input.slice(this.tok.start, this.tok.end);
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case tokTypes.num: case tokTypes.string:
-    node = this.startNode();
-    node.value = this.tok.value;
-    node.raw = this.input.slice(this.tok.start, this.tok.end);
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case tokTypes._null: case tokTypes._true: case tokTypes._false:
-    node = this.startNode();
-    node.value = this.tok.type === tokTypes._null ? null : this.tok.type === tokTypes._true;
-    node.raw = this.tok.type.keyword;
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case tokTypes.parenL:
-    var parenStart = this.storeCurrentPos();
-    this.next();
-    var inner = this.parseExpression();
-    this.expect(tokTypes.parenR);
-    if (this.eat(tokTypes.arrow)) {
-      // (a,)=>a // SequenceExpression makes dummy in the last hole. Drop the dummy.
-      var params = inner.expressions || [inner];
-      if (params.length && isDummy(params[params.length - 1]))
-        { params.pop(); }
-      return this.parseArrowExpression(this.startNodeAt(parenStart), params)
-    }
-    if (this.options.preserveParens) {
-      var par = this.startNodeAt(parenStart);
-      par.expression = inner;
-      inner = this.finishNode(par, "ParenthesizedExpression");
-    }
-    return inner
-
-  case tokTypes.bracketL:
-    node = this.startNode();
-    node.elements = this.parseExprList(tokTypes.bracketR, true);
-    return this.finishNode(node, "ArrayExpression")
-
-  case tokTypes.braceL:
-    return this.parseObj()
-
-  case tokTypes._class:
-    return this.parseClass(false)
-
-  case tokTypes._function:
-    node = this.startNode();
-    this.next();
-    return this.parseFunction(node, false)
-
-  case tokTypes._new:
-    return this.parseNew()
-
-  case tokTypes.backQuote:
-    return this.parseTemplate()
-
-  default:
-    return this.dummyIdent()
-  }
-};
-
-lp$2.parseNew = function() {
-  var node = this.startNode(), startIndent = this.curIndent, line = this.curLineStart;
-  var meta = this.parseIdent(true);
-  if (this.options.ecmaVersion >= 6 && this.eat(tokTypes.dot)) {
-    node.meta = meta;
-    node.property = this.parseIdent(true);
-    return this.finishNode(node, "MetaProperty")
-  }
-  var start = this.storeCurrentPos();
-  node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line);
-  if (this.tok.type == tokTypes.parenL) {
-    node.arguments = this.parseExprList(tokTypes.parenR);
-  } else {
-    node.arguments = [];
-  }
-  return this.finishNode(node, "NewExpression")
-};
-
-lp$2.parseTemplateElement = function() {
-  var elem = this.startNode();
-
-  // The loose parser accepts invalid unicode escapes even in untagged templates.
-  if (this.tok.type === tokTypes.invalidTemplate) {
-    elem.value = {
-      raw: this.tok.value,
-      cooked: null
-    };
-  } else {
-    elem.value = {
-      raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, "\n"),
-      cooked: this.tok.value
-    };
-  }
-  this.next();
-  elem.tail = this.tok.type === tokTypes.backQuote;
-  return this.finishNode(elem, "TemplateElement")
-};
-
-lp$2.parseTemplate = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.next();
-  node.expressions = [];
-  var curElt = this.parseTemplateElement();
-  node.quasis = [curElt];
-  while (!curElt.tail) {
-    this$1.next();
-    node.expressions.push(this$1.parseExpression());
-    if (this$1.expect(tokTypes.braceR)) {
-      curElt = this$1.parseTemplateElement();
-    } else {
-      curElt = this$1.startNode();
-      curElt.value = {cooked: "", raw: ""};
-      curElt.tail = true;
-      this$1.finishNode(curElt, "TemplateElement");
-    }
-    node.quasis.push(curElt);
-  }
-  this.expect(tokTypes.backQuote);
-  return this.finishNode(node, "TemplateLiteral")
-};
-
-lp$2.parseObj = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  node.properties = [];
-  this.pushCx();
-  var indent = this.curIndent + 1, line = this.curLineStart;
-  this.eat(tokTypes.braceL);
-  if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart; }
-  while (!this.closes(tokTypes.braceR, indent, line)) {
-    var prop = this$1.startNode(), isGenerator = (void 0), isAsync = (void 0), start = (void 0);
-    if (this$1.options.ecmaVersion >= 9 && this$1.eat(tokTypes.ellipsis)) {
-      prop.argument = this$1.parseMaybeAssign();
-      node.properties.push(this$1.finishNode(prop, "SpreadElement"));
-      this$1.eat(tokTypes.comma);
-      continue
-    }
-    if (this$1.options.ecmaVersion >= 6) {
-      start = this$1.storeCurrentPos();
-      prop.method = false;
-      prop.shorthand = false;
-      isGenerator = this$1.eat(tokTypes.star);
-    }
-    this$1.parsePropertyName(prop);
-    if (this$1.toks.isAsyncProp(prop)) {
-      isAsync = true;
-      isGenerator = this$1.options.ecmaVersion >= 9 && this$1.eat(tokTypes.star);
-      this$1.parsePropertyName(prop);
-    } else {
-      isAsync = false;
-    }
-    if (isDummy(prop.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(tokTypes.comma); continue }
-    if (this$1.eat(tokTypes.colon)) {
-      prop.kind = "init";
-      prop.value = this$1.parseMaybeAssign();
-    } else if (this$1.options.ecmaVersion >= 6 && (this$1.tok.type === tokTypes.parenL || this$1.tok.type === tokTypes.braceL)) {
-      prop.kind = "init";
-      prop.method = true;
-      prop.value = this$1.parseMethod(isGenerator, isAsync);
-    } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" &&
-               !prop.computed && (prop.key.name === "get" || prop.key.name === "set") &&
-               (this$1.tok.type != tokTypes.comma && this$1.tok.type != tokTypes.braceR && this$1.tok.type != tokTypes.eq)) {
-      prop.kind = prop.key.name;
-      this$1.parsePropertyName(prop);
-      prop.value = this$1.parseMethod(false);
-    } else {
-      prop.kind = "init";
-      if (this$1.options.ecmaVersion >= 6) {
-        if (this$1.eat(tokTypes.eq)) {
-          var assign = this$1.startNodeAt(start);
-          assign.operator = "=";
-          assign.left = prop.key;
-          assign.right = this$1.parseMaybeAssign();
-          prop.value = this$1.finishNode(assign, "AssignmentExpression");
-        } else {
-          prop.value = prop.key;
-        }
-      } else {
-        prop.value = this$1.dummyIdent();
-      }
-      prop.shorthand = true;
-    }
-    node.properties.push(this$1.finishNode(prop, "Property"));
-    this$1.eat(tokTypes.comma);
-  }
-  this.popCx();
-  if (!this.eat(tokTypes.braceR)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  return this.finishNode(node, "ObjectExpression")
-};
-
-lp$2.parsePropertyName = function(prop) {
-  if (this.options.ecmaVersion >= 6) {
-    if (this.eat(tokTypes.bracketL)) {
-      prop.computed = true;
-      prop.key = this.parseExpression();
-      this.expect(tokTypes.bracketR);
-      return
-    } else {
-      prop.computed = false;
-    }
-  }
-  var key = (this.tok.type === tokTypes.num || this.tok.type === tokTypes.string) ? this.parseExprAtom() : this.parseIdent();
-  prop.key = key || this.dummyIdent();
-};
-
-lp$2.parsePropertyAccessor = function() {
-  if (this.tok.type === tokTypes.name || this.tok.type.keyword) { return this.parseIdent() }
-};
-
-lp$2.parseIdent = function() {
-  var name = this.tok.type === tokTypes.name ? this.tok.value : this.tok.type.keyword;
-  if (!name) { return this.dummyIdent() }
-  var node = this.startNode();
-  this.next();
-  node.name = name;
-  return this.finishNode(node, "Identifier")
-};
-
-lp$2.initFunction = function(node) {
-  node.id = null;
-  node.params = [];
-  if (this.options.ecmaVersion >= 6) {
-    node.generator = false;
-    node.expression = false;
-  }
-  if (this.options.ecmaVersion >= 8)
-    { node.async = false; }
-};
-
-// Convert existing expression atom to assignable pattern
-// if possible.
-
-lp$2.toAssignable = function(node, binding) {
-  var this$1 = this;
-
-  if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) {
-    // Okay
-  } else if (node.type == "ParenthesizedExpression") {
-    this.toAssignable(node.expression, binding);
-  } else if (this.options.ecmaVersion < 6) {
-    return this.dummyIdent()
-  } else if (node.type == "ObjectExpression") {
-    node.type = "ObjectPattern";
-    for (var i = 0, list = node.properties; i < list.length; i += 1)
-      {
-      var prop = list[i];
-
-      this$1.toAssignable(prop, binding);
-    }
-  } else if (node.type == "ArrayExpression") {
-    node.type = "ArrayPattern";
-    this.toAssignableList(node.elements, binding);
-  } else if (node.type == "Property") {
-    this.toAssignable(node.value, binding);
-  } else if (node.type == "SpreadElement") {
-    node.type = "RestElement";
-    this.toAssignable(node.argument, binding);
-  } else if (node.type == "AssignmentExpression") {
-    node.type = "AssignmentPattern";
-    delete node.operator;
-  } else {
-    return this.dummyIdent()
-  }
-  return node
-};
-
-lp$2.toAssignableList = function(exprList, binding) {
-  var this$1 = this;
-
-  for (var i = 0, list = exprList; i < list.length; i += 1)
-    {
-    var expr = list[i];
-
-    this$1.toAssignable(expr, binding);
-  }
-  return exprList
-};
-
-lp$2.parseFunctionParams = function(params) {
-  params = this.parseExprList(tokTypes.parenR);
-  return this.toAssignableList(params, true)
-};
-
-lp$2.parseMethod = function(isGenerator, isAsync) {
-  var node = this.startNode(), oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 6)
-    { node.generator = !!isGenerator; }
-  if (this.options.ecmaVersion >= 8)
-    { node.async = !!isAsync; }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.parseFunctionParams();
-  node.body = this.parseBlock();
-  this.toks.adaptDirectivePrologue(node.body.body);
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, "FunctionExpression")
-};
-
-lp$2.parseArrowExpression = function(node, params, isAsync) {
-  var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 8)
-    { node.async = !!isAsync; }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.toAssignableList(params, true);
-  node.expression = this.tok.type !== tokTypes.braceL;
-  if (node.expression) {
-    node.body = this.parseMaybeAssign();
-  } else {
-    node.body = this.parseBlock();
-    this.toks.adaptDirectivePrologue(node.body.body);
-  }
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, "ArrowFunctionExpression")
-};
-
-lp$2.parseExprList = function(close, allowEmpty) {
-  var this$1 = this;
-
-  this.pushCx();
-  var indent = this.curIndent, line = this.curLineStart, elts = [];
-  this.next(); // Opening bracket
-  while (!this.closes(close, indent + 1, line)) {
-    if (this$1.eat(tokTypes.comma)) {
-      elts.push(allowEmpty ? null : this$1.dummyIdent());
-      continue
-    }
-    var elt = this$1.parseMaybeAssign();
-    if (isDummy(elt)) {
-      if (this$1.closes(close, indent, line)) { break }
-      this$1.next();
-    } else {
-      elts.push(elt);
-    }
-    this$1.eat(tokTypes.comma);
-  }
-  this.popCx();
-  if (!this.eat(close)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  return elts
-};
-
-lp$2.parseAwait = function() {
-  var node = this.startNode();
-  this.next();
-  node.argument = this.parseMaybeUnary();
-  return this.finishNode(node, "AwaitExpression")
-};
-
-// Acorn: Loose parser
-//
-// This module provides an alternative parser (`parse_dammit`) that
-// exposes that same interface as `parse`, but will try to parse
-// anything as JavaScript, repairing syntax error the best it can.
-// There are circumstances in which it will raise an error and give
-// up, but they are very rare. The resulting AST will be a mostly
-// valid JavaScript AST (as per the [Mozilla parser API][api], except
-// that:
-//
-// - Return outside functions is allowed
-//
-// - Label consistency (no conflicts, break only to existing labels)
-//   is not enforced.
-//
-// - Bogus Identifier nodes with a name of `"✖"` are inserted whenever
-//   the parser got too confused to return anything meaningful.
-//
-// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
-//
-// The expected use for this is to *first* try `acorn.parse`, and only
-// if that fails switch to `parse_dammit`. The loose parser might
-// parse badly indented code incorrectly, so **don't** use it as
-// your default parser.
-//
-// Quite a lot of acorn.js is duplicated here. The alternative was to
-// add a *lot* of extra cruft to that file, making it less readable
-// and slower. Copying and editing the code allowed me to make
-// invasive changes and simplifications without creating a complicated
-// tangle.
-
-defaultOptions.tabSize = 4;
-
-// eslint-disable-next-line camelcase
-function parse_dammit(input, options) {
-  return new LooseParser(input, options).parse()
-}
-
-addLooseExports(parse_dammit, LooseParser, pluginsLoose);
-
-export { parse_dammit, LooseParser, pluginsLoose };

+ 0 - 1434
ParticleFilter/node_modules/acorn/dist/acorn_loose.js

@@ -1,1434 +0,0 @@
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('./acorn')) :
-	typeof define === 'function' && define.amd ? define(['exports', './acorn'], factory) :
-	(factory((global.acorn = global.acorn || {}, global.acorn.loose = {}),global.acorn));
-}(this, (function (exports,__acorn) { 'use strict';
-
-function noop() {}
-
-// Registered plugins
-var pluginsLoose = {};
-
-var LooseParser = function LooseParser(input, options) {
-  if ( options === void 0 ) options = {};
-
-  this.toks = __acorn.tokenizer(input, options);
-  this.options = this.toks.options;
-  this.input = this.toks.input;
-  this.tok = this.last = {type: __acorn.tokTypes.eof, start: 0, end: 0};
-  this.tok.validateRegExpFlags = noop;
-  this.tok.validateRegExpPattern = noop;
-  if (this.options.locations) {
-    var here = this.toks.curPosition();
-    this.tok.loc = new __acorn.SourceLocation(this.toks, here, here);
-  }
-  this.ahead = []; // Tokens ahead
-  this.context = []; // Indentation contexted
-  this.curIndent = 0;
-  this.curLineStart = 0;
-  this.nextLineStart = this.lineEnd(this.curLineStart) + 1;
-  this.inAsync = false;
-  this.inFunction = false;
-  // Load plugins
-  this.options.pluginsLoose = options.pluginsLoose || {};
-  this.loadPlugins(this.options.pluginsLoose);
-};
-
-LooseParser.prototype.startNode = function startNode () {
-  return new __acorn.Node(this.toks, this.tok.start, this.options.locations ? this.tok.loc.start : null)
-};
-
-LooseParser.prototype.storeCurrentPos = function storeCurrentPos () {
-  return this.options.locations ? [this.tok.start, this.tok.loc.start] : this.tok.start
-};
-
-LooseParser.prototype.startNodeAt = function startNodeAt (pos) {
-  if (this.options.locations) {
-    return new __acorn.Node(this.toks, pos[0], pos[1])
-  } else {
-    return new __acorn.Node(this.toks, pos)
-  }
-};
-
-LooseParser.prototype.finishNode = function finishNode (node, type) {
-  node.type = type;
-  node.end = this.last.end;
-  if (this.options.locations)
-    { node.loc.end = this.last.loc.end; }
-  if (this.options.ranges)
-    { node.range[1] = this.last.end; }
-  return node
-};
-
-LooseParser.prototype.dummyNode = function dummyNode (type) {
-  var dummy = this.startNode();
-  dummy.type = type;
-  dummy.end = dummy.start;
-  if (this.options.locations)
-    { dummy.loc.end = dummy.loc.start; }
-  if (this.options.ranges)
-    { dummy.range[1] = dummy.start; }
-  this.last = {type: __acorn.tokTypes.name, start: dummy.start, end: dummy.start, loc: dummy.loc};
-  return dummy
-};
-
-LooseParser.prototype.dummyIdent = function dummyIdent () {
-  var dummy = this.dummyNode("Identifier");
-  dummy.name = "✖";
-  return dummy
-};
-
-LooseParser.prototype.dummyString = function dummyString () {
-  var dummy = this.dummyNode("Literal");
-  dummy.value = dummy.raw = "✖";
-  return dummy
-};
-
-LooseParser.prototype.eat = function eat (type) {
-  if (this.tok.type === type) {
-    this.next();
-    return true
-  } else {
-    return false
-  }
-};
-
-LooseParser.prototype.isContextual = function isContextual (name) {
-  return this.tok.type === __acorn.tokTypes.name && this.tok.value === name
-};
-
-LooseParser.prototype.eatContextual = function eatContextual (name) {
-  return this.tok.value === name && this.eat(__acorn.tokTypes.name)
-};
-
-LooseParser.prototype.canInsertSemicolon = function canInsertSemicolon () {
-  return this.tok.type === __acorn.tokTypes.eof || this.tok.type === __acorn.tokTypes.braceR ||
-    __acorn.lineBreak.test(this.input.slice(this.last.end, this.tok.start))
-};
-
-LooseParser.prototype.semicolon = function semicolon () {
-  return this.eat(__acorn.tokTypes.semi)
-};
-
-LooseParser.prototype.expect = function expect (type) {
-    var this$1 = this;
-
-  if (this.eat(type)) { return true }
-  for (var i = 1; i <= 2; i++) {
-    if (this$1.lookAhead(i).type == type) {
-      for (var j = 0; j < i; j++) { this$1.next(); }
-      return true
-    }
-  }
-};
-
-LooseParser.prototype.pushCx = function pushCx () {
-  this.context.push(this.curIndent);
-};
-
-LooseParser.prototype.popCx = function popCx () {
-  this.curIndent = this.context.pop();
-};
-
-LooseParser.prototype.lineEnd = function lineEnd (pos) {
-  while (pos < this.input.length && !__acorn.isNewLine(this.input.charCodeAt(pos))) { ++pos; }
-  return pos
-};
-
-LooseParser.prototype.indentationAfter = function indentationAfter (pos) {
-    var this$1 = this;
-
-  for (var count = 0;; ++pos) {
-    var ch = this$1.input.charCodeAt(pos);
-    if (ch === 32) { ++count; }
-    else if (ch === 9) { count += this$1.options.tabSize; }
-    else { return count }
-  }
-};
-
-LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) {
-  if (this.tok.type === closeTok || this.tok.type === __acorn.tokTypes.eof) { return true }
-  return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
-    (!blockHeuristic || this.nextLineStart >= this.input.length ||
-     this.indentationAfter(this.nextLineStart) < indent)
-};
-
-LooseParser.prototype.tokenStartsLine = function tokenStartsLine () {
-    var this$1 = this;
-
-  for (var p = this.tok.start - 1; p >= this.curLineStart; --p) {
-    var ch = this$1.input.charCodeAt(p);
-    if (ch !== 9 && ch !== 32) { return false }
-  }
-  return true
-};
-
-LooseParser.prototype.extend = function extend (name, f) {
-  this[name] = f(this[name]);
-};
-
-LooseParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) {
-    var this$1 = this;
-
-  for (var name in pluginConfigs) {
-    var plugin = pluginsLoose[name];
-    if (!plugin) { throw new Error("Plugin '" + name + "' not found") }
-    plugin(this$1, pluginConfigs[name]);
-  }
-};
-
-LooseParser.prototype.parse = function parse () {
-  this.next();
-  return this.parseTopLevel()
-};
-
-var lp = LooseParser.prototype;
-
-function isSpace(ch) {
-  return (ch < 14 && ch > 8) || ch === 32 || ch === 160 || __acorn.isNewLine(ch)
-}
-
-lp.next = function() {
-  var this$1 = this;
-
-  this.last = this.tok;
-  if (this.ahead.length)
-    { this.tok = this.ahead.shift(); }
-  else
-    { this.tok = this.readToken(); }
-
-  if (this.tok.start >= this.nextLineStart) {
-    while (this.tok.start >= this.nextLineStart) {
-      this$1.curLineStart = this$1.nextLineStart;
-      this$1.nextLineStart = this$1.lineEnd(this$1.curLineStart) + 1;
-    }
-    this.curIndent = this.indentationAfter(this.curLineStart);
-  }
-};
-
-lp.readToken = function() {
-  var this$1 = this;
-
-  for (;;) {
-    try {
-      this$1.toks.next();
-      if (this$1.toks.type === __acorn.tokTypes.dot &&
-          this$1.input.substr(this$1.toks.end, 1) === "." &&
-          this$1.options.ecmaVersion >= 6) {
-        this$1.toks.end++;
-        this$1.toks.type = __acorn.tokTypes.ellipsis;
-      }
-      return new __acorn.Token(this$1.toks)
-    } catch (e) {
-      if (!(e instanceof SyntaxError)) { throw e }
-
-      // Try to skip some text, based on the error message, and then continue
-      var msg = e.message, pos = e.raisedAt, replace = true;
-      if (/unterminated/i.test(msg)) {
-        pos = this$1.lineEnd(e.pos + 1);
-        if (/string/.test(msg)) {
-          replace = {start: e.pos, end: pos, type: __acorn.tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)};
-        } else if (/regular expr/i.test(msg)) {
-          var re = this$1.input.slice(e.pos, pos);
-          try { re = new RegExp(re); } catch (e) { /* ignore compilation error due to new syntax */ }
-          replace = {start: e.pos, end: pos, type: __acorn.tokTypes.regexp, value: re};
-        } else if (/template/.test(msg)) {
-          replace = {
-            start: e.pos,
-            end: pos,
-            type: __acorn.tokTypes.template,
-            value: this$1.input.slice(e.pos, pos)
-          };
-        } else {
-          replace = false;
-        }
-      } else if (/invalid (unicode|regexp|number)|expecting unicode|octal literal|is reserved|directly after number|expected number in radix/i.test(msg)) {
-        while (pos < this.input.length && !isSpace(this.input.charCodeAt(pos))) { ++pos; }
-      } else if (/character escape|expected hexadecimal/i.test(msg)) {
-        while (pos < this.input.length) {
-          var ch = this$1.input.charCodeAt(pos++);
-          if (ch === 34 || ch === 39 || __acorn.isNewLine(ch)) { break }
-        }
-      } else if (/unexpected character/i.test(msg)) {
-        pos++;
-        replace = false;
-      } else if (/regular expression/i.test(msg)) {
-        replace = true;
-      } else {
-        throw e
-      }
-      this$1.resetTo(pos);
-      if (replace === true) { replace = {start: pos, end: pos, type: __acorn.tokTypes.name, value: "✖"}; }
-      if (replace) {
-        if (this$1.options.locations)
-          { replace.loc = new __acorn.SourceLocation(
-            this$1.toks,
-            __acorn.getLineInfo(this$1.input, replace.start),
-            __acorn.getLineInfo(this$1.input, replace.end)); }
-        return replace
-      }
-    }
-  }
-};
-
-lp.resetTo = function(pos) {
-  var this$1 = this;
-
-  this.toks.pos = pos;
-  var ch = this.input.charAt(pos - 1);
-  this.toks.exprAllowed = !ch || /[[{(,;:?/*=+\-~!|&%^<>]/.test(ch) ||
-    /[enwfd]/.test(ch) &&
-    /\b(case|else|return|throw|new|in|(instance|type)?of|delete|void)$/.test(this.input.slice(pos - 10, pos));
-
-  if (this.options.locations) {
-    this.toks.curLine = 1;
-    this.toks.lineStart = __acorn.lineBreakG.lastIndex = 0;
-    var match;
-    while ((match = __acorn.lineBreakG.exec(this.input)) && match.index < pos) {
-      ++this$1.toks.curLine;
-      this$1.toks.lineStart = match.index + match[0].length;
-    }
-  }
-};
-
-lp.lookAhead = function(n) {
-  var this$1 = this;
-
-  while (n > this.ahead.length)
-    { this$1.ahead.push(this$1.readToken()); }
-  return this.ahead[n - 1]
-};
-
-function isDummy(node) { return node.name == "✖" }
-
-var lp$1 = LooseParser.prototype;
-
-lp$1.parseTopLevel = function() {
-  var this$1 = this;
-
-  var node = this.startNodeAt(this.options.locations ? [0, __acorn.getLineInfo(this.input, 0)] : 0);
-  node.body = [];
-  while (this.tok.type !== __acorn.tokTypes.eof) { node.body.push(this$1.parseStatement()); }
-  this.toks.adaptDirectivePrologue(node.body);
-  this.last = this.tok;
-  if (this.options.ecmaVersion >= 6) {
-    node.sourceType = this.options.sourceType;
-  }
-  return this.finishNode(node, "Program")
-};
-
-lp$1.parseStatement = function() {
-  var this$1 = this;
-
-  var starttype = this.tok.type, node = this.startNode(), kind;
-
-  if (this.toks.isLet()) {
-    starttype = __acorn.tokTypes._var;
-    kind = "let";
-  }
-
-  switch (starttype) {
-  case __acorn.tokTypes._break: case __acorn.tokTypes._continue:
-    this.next();
-    var isBreak = starttype === __acorn.tokTypes._break;
-    if (this.semicolon() || this.canInsertSemicolon()) {
-      node.label = null;
-    } else {
-      node.label = this.tok.type === __acorn.tokTypes.name ? this.parseIdent() : null;
-      this.semicolon();
-    }
-    return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement")
-
-  case __acorn.tokTypes._debugger:
-    this.next();
-    this.semicolon();
-    return this.finishNode(node, "DebuggerStatement")
-
-  case __acorn.tokTypes._do:
-    this.next();
-    node.body = this.parseStatement();
-    node.test = this.eat(__acorn.tokTypes._while) ? this.parseParenExpression() : this.dummyIdent();
-    this.semicolon();
-    return this.finishNode(node, "DoWhileStatement")
-
-  case __acorn.tokTypes._for:
-    this.next(); // `for` keyword
-    var isAwait = this.options.ecmaVersion >= 9 && this.inAsync && this.eatContextual("await");
-
-    this.pushCx();
-    this.expect(__acorn.tokTypes.parenL);
-    if (this.tok.type === __acorn.tokTypes.semi) { return this.parseFor(node, null) }
-    var isLet = this.toks.isLet();
-    if (isLet || this.tok.type === __acorn.tokTypes._var || this.tok.type === __acorn.tokTypes._const) {
-      var init$1 = this.parseVar(true, isLet ? "let" : this.tok.value);
-      if (init$1.declarations.length === 1 && (this.tok.type === __acorn.tokTypes._in || this.isContextual("of"))) {
-        if (this.options.ecmaVersion >= 9 && this.tok.type !== __acorn.tokTypes._in) {
-          node.await = isAwait;
-        }
-        return this.parseForIn(node, init$1)
-      }
-      return this.parseFor(node, init$1)
-    }
-    var init = this.parseExpression(true);
-    if (this.tok.type === __acorn.tokTypes._in || this.isContextual("of")) {
-      if (this.options.ecmaVersion >= 9 && this.tok.type !== __acorn.tokTypes._in) {
-        node.await = isAwait;
-      }
-      return this.parseForIn(node, this.toAssignable(init))
-    }
-    return this.parseFor(node, init)
-
-  case __acorn.tokTypes._function:
-    this.next();
-    return this.parseFunction(node, true)
-
-  case __acorn.tokTypes._if:
-    this.next();
-    node.test = this.parseParenExpression();
-    node.consequent = this.parseStatement();
-    node.alternate = this.eat(__acorn.tokTypes._else) ? this.parseStatement() : null;
-    return this.finishNode(node, "IfStatement")
-
-  case __acorn.tokTypes._return:
-    this.next();
-    if (this.eat(__acorn.tokTypes.semi) || this.canInsertSemicolon()) { node.argument = null; }
-    else { node.argument = this.parseExpression(); this.semicolon(); }
-    return this.finishNode(node, "ReturnStatement")
-
-  case __acorn.tokTypes._switch:
-    var blockIndent = this.curIndent, line = this.curLineStart;
-    this.next();
-    node.discriminant = this.parseParenExpression();
-    node.cases = [];
-    this.pushCx();
-    this.expect(__acorn.tokTypes.braceL);
-
-    var cur;
-    while (!this.closes(__acorn.tokTypes.braceR, blockIndent, line, true)) {
-      if (this$1.tok.type === __acorn.tokTypes._case || this$1.tok.type === __acorn.tokTypes._default) {
-        var isCase = this$1.tok.type === __acorn.tokTypes._case;
-        if (cur) { this$1.finishNode(cur, "SwitchCase"); }
-        node.cases.push(cur = this$1.startNode());
-        cur.consequent = [];
-        this$1.next();
-        if (isCase) { cur.test = this$1.parseExpression(); }
-        else { cur.test = null; }
-        this$1.expect(__acorn.tokTypes.colon);
-      } else {
-        if (!cur) {
-          node.cases.push(cur = this$1.startNode());
-          cur.consequent = [];
-          cur.test = null;
-        }
-        cur.consequent.push(this$1.parseStatement());
-      }
-    }
-    if (cur) { this.finishNode(cur, "SwitchCase"); }
-    this.popCx();
-    this.eat(__acorn.tokTypes.braceR);
-    return this.finishNode(node, "SwitchStatement")
-
-  case __acorn.tokTypes._throw:
-    this.next();
-    node.argument = this.parseExpression();
-    this.semicolon();
-    return this.finishNode(node, "ThrowStatement")
-
-  case __acorn.tokTypes._try:
-    this.next();
-    node.block = this.parseBlock();
-    node.handler = null;
-    if (this.tok.type === __acorn.tokTypes._catch) {
-      var clause = this.startNode();
-      this.next();
-      if (this.eat(__acorn.tokTypes.parenL)) {
-        clause.param = this.toAssignable(this.parseExprAtom(), true);
-        this.expect(__acorn.tokTypes.parenR);
-      } else {
-        clause.param = null;
-      }
-      clause.body = this.parseBlock();
-      node.handler = this.finishNode(clause, "CatchClause");
-    }
-    node.finalizer = this.eat(__acorn.tokTypes._finally) ? this.parseBlock() : null;
-    if (!node.handler && !node.finalizer) { return node.block }
-    return this.finishNode(node, "TryStatement")
-
-  case __acorn.tokTypes._var:
-  case __acorn.tokTypes._const:
-    return this.parseVar(false, kind || this.tok.value)
-
-  case __acorn.tokTypes._while:
-    this.next();
-    node.test = this.parseParenExpression();
-    node.body = this.parseStatement();
-    return this.finishNode(node, "WhileStatement")
-
-  case __acorn.tokTypes._with:
-    this.next();
-    node.object = this.parseParenExpression();
-    node.body = this.parseStatement();
-    return this.finishNode(node, "WithStatement")
-
-  case __acorn.tokTypes.braceL:
-    return this.parseBlock()
-
-  case __acorn.tokTypes.semi:
-    this.next();
-    return this.finishNode(node, "EmptyStatement")
-
-  case __acorn.tokTypes._class:
-    return this.parseClass(true)
-
-  case __acorn.tokTypes._import:
-    return this.parseImport()
-
-  case __acorn.tokTypes._export:
-    return this.parseExport()
-
-  default:
-    if (this.toks.isAsyncFunction()) {
-      this.next();
-      this.next();
-      return this.parseFunction(node, true, true)
-    }
-    var expr = this.parseExpression();
-    if (isDummy(expr)) {
-      this.next();
-      if (this.tok.type === __acorn.tokTypes.eof) { return this.finishNode(node, "EmptyStatement") }
-      return this.parseStatement()
-    } else if (starttype === __acorn.tokTypes.name && expr.type === "Identifier" && this.eat(__acorn.tokTypes.colon)) {
-      node.body = this.parseStatement();
-      node.label = expr;
-      return this.finishNode(node, "LabeledStatement")
-    } else {
-      node.expression = expr;
-      this.semicolon();
-      return this.finishNode(node, "ExpressionStatement")
-    }
-  }
-};
-
-lp$1.parseBlock = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.pushCx();
-  this.expect(__acorn.tokTypes.braceL);
-  var blockIndent = this.curIndent, line = this.curLineStart;
-  node.body = [];
-  while (!this.closes(__acorn.tokTypes.braceR, blockIndent, line, true))
-    { node.body.push(this$1.parseStatement()); }
-  this.popCx();
-  this.eat(__acorn.tokTypes.braceR);
-  return this.finishNode(node, "BlockStatement")
-};
-
-lp$1.parseFor = function(node, init) {
-  node.init = init;
-  node.test = node.update = null;
-  if (this.eat(__acorn.tokTypes.semi) && this.tok.type !== __acorn.tokTypes.semi) { node.test = this.parseExpression(); }
-  if (this.eat(__acorn.tokTypes.semi) && this.tok.type !== __acorn.tokTypes.parenR) { node.update = this.parseExpression(); }
-  this.popCx();
-  this.expect(__acorn.tokTypes.parenR);
-  node.body = this.parseStatement();
-  return this.finishNode(node, "ForStatement")
-};
-
-lp$1.parseForIn = function(node, init) {
-  var type = this.tok.type === __acorn.tokTypes._in ? "ForInStatement" : "ForOfStatement";
-  this.next();
-  node.left = init;
-  node.right = this.parseExpression();
-  this.popCx();
-  this.expect(__acorn.tokTypes.parenR);
-  node.body = this.parseStatement();
-  return this.finishNode(node, type)
-};
-
-lp$1.parseVar = function(noIn, kind) {
-  var this$1 = this;
-
-  var node = this.startNode();
-  node.kind = kind;
-  this.next();
-  node.declarations = [];
-  do {
-    var decl = this$1.startNode();
-    decl.id = this$1.options.ecmaVersion >= 6 ? this$1.toAssignable(this$1.parseExprAtom(), true) : this$1.parseIdent();
-    decl.init = this$1.eat(__acorn.tokTypes.eq) ? this$1.parseMaybeAssign(noIn) : null;
-    node.declarations.push(this$1.finishNode(decl, "VariableDeclarator"));
-  } while (this.eat(__acorn.tokTypes.comma))
-  if (!node.declarations.length) {
-    var decl$1 = this.startNode();
-    decl$1.id = this.dummyIdent();
-    node.declarations.push(this.finishNode(decl$1, "VariableDeclarator"));
-  }
-  if (!noIn) { this.semicolon(); }
-  return this.finishNode(node, "VariableDeclaration")
-};
-
-lp$1.parseClass = function(isStatement) {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.next();
-  if (this.tok.type === __acorn.tokTypes.name) { node.id = this.parseIdent(); }
-  else if (isStatement === true) { node.id = this.dummyIdent(); }
-  else { node.id = null; }
-  node.superClass = this.eat(__acorn.tokTypes._extends) ? this.parseExpression() : null;
-  node.body = this.startNode();
-  node.body.body = [];
-  this.pushCx();
-  var indent = this.curIndent + 1, line = this.curLineStart;
-  this.eat(__acorn.tokTypes.braceL);
-  if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart; }
-  while (!this.closes(__acorn.tokTypes.braceR, indent, line)) {
-    if (this$1.semicolon()) { continue }
-    var method = this$1.startNode(), isGenerator = (void 0), isAsync = (void 0);
-    if (this$1.options.ecmaVersion >= 6) {
-      method.static = false;
-      isGenerator = this$1.eat(__acorn.tokTypes.star);
-    }
-    this$1.parsePropertyName(method);
-    if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(__acorn.tokTypes.comma); continue }
-    if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" &&
-        (this$1.tok.type != __acorn.tokTypes.parenL && this$1.tok.type != __acorn.tokTypes.braceL)) {
-      method.static = true;
-      isGenerator = this$1.eat(__acorn.tokTypes.star);
-      this$1.parsePropertyName(method);
-    } else {
-      method.static = false;
-    }
-    if (!method.computed &&
-        method.key.type === "Identifier" && method.key.name === "async" && this$1.tok.type !== __acorn.tokTypes.parenL &&
-        !this$1.canInsertSemicolon()) {
-      isAsync = true;
-      isGenerator = this$1.options.ecmaVersion >= 9 && this$1.eat(__acorn.tokTypes.star);
-      this$1.parsePropertyName(method);
-    } else {
-      isAsync = false;
-    }
-    if (this$1.options.ecmaVersion >= 5 && method.key.type === "Identifier" &&
-        !method.computed && (method.key.name === "get" || method.key.name === "set") &&
-        this$1.tok.type !== __acorn.tokTypes.parenL && this$1.tok.type !== __acorn.tokTypes.braceL) {
-      method.kind = method.key.name;
-      this$1.parsePropertyName(method);
-      method.value = this$1.parseMethod(false);
-    } else {
-      if (!method.computed && !method.static && !isGenerator && !isAsync && (
-        method.key.type === "Identifier" && method.key.name === "constructor" ||
-          method.key.type === "Literal" && method.key.value === "constructor")) {
-        method.kind = "constructor";
-      } else {
-        method.kind = "method";
-      }
-      method.value = this$1.parseMethod(isGenerator, isAsync);
-    }
-    node.body.body.push(this$1.finishNode(method, "MethodDefinition"));
-  }
-  this.popCx();
-  if (!this.eat(__acorn.tokTypes.braceR)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  this.semicolon();
-  this.finishNode(node.body, "ClassBody");
-  return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression")
-};
-
-lp$1.parseFunction = function(node, isStatement, isAsync) {
-  var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 6) {
-    node.generator = this.eat(__acorn.tokTypes.star);
-  }
-  if (this.options.ecmaVersion >= 8) {
-    node.async = !!isAsync;
-  }
-  if (this.tok.type === __acorn.tokTypes.name) { node.id = this.parseIdent(); }
-  else if (isStatement === true) { node.id = this.dummyIdent(); }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.parseFunctionParams();
-  node.body = this.parseBlock();
-  this.toks.adaptDirectivePrologue(node.body.body);
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
-};
-
-lp$1.parseExport = function() {
-  var node = this.startNode();
-  this.next();
-  if (this.eat(__acorn.tokTypes.star)) {
-    node.source = this.eatContextual("from") ? this.parseExprAtom() : this.dummyString();
-    return this.finishNode(node, "ExportAllDeclaration")
-  }
-  if (this.eat(__acorn.tokTypes._default)) {
-    // export default (function foo() {}) // This is FunctionExpression.
-    var isAsync;
-    if (this.tok.type === __acorn.tokTypes._function || (isAsync = this.toks.isAsyncFunction())) {
-      var fNode = this.startNode();
-      this.next();
-      if (isAsync) { this.next(); }
-      node.declaration = this.parseFunction(fNode, "nullableID", isAsync);
-    } else if (this.tok.type === __acorn.tokTypes._class) {
-      node.declaration = this.parseClass("nullableID");
-    } else {
-      node.declaration = this.parseMaybeAssign();
-      this.semicolon();
-    }
-    return this.finishNode(node, "ExportDefaultDeclaration")
-  }
-  if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) {
-    node.declaration = this.parseStatement();
-    node.specifiers = [];
-    node.source = null;
-  } else {
-    node.declaration = null;
-    node.specifiers = this.parseExportSpecifierList();
-    node.source = this.eatContextual("from") ? this.parseExprAtom() : null;
-    this.semicolon();
-  }
-  return this.finishNode(node, "ExportNamedDeclaration")
-};
-
-lp$1.parseImport = function() {
-  var node = this.startNode();
-  this.next();
-  if (this.tok.type === __acorn.tokTypes.string) {
-    node.specifiers = [];
-    node.source = this.parseExprAtom();
-  } else {
-    var elt;
-    if (this.tok.type === __acorn.tokTypes.name && this.tok.value !== "from") {
-      elt = this.startNode();
-      elt.local = this.parseIdent();
-      this.finishNode(elt, "ImportDefaultSpecifier");
-      this.eat(__acorn.tokTypes.comma);
-    }
-    node.specifiers = this.parseImportSpecifierList();
-    node.source = this.eatContextual("from") && this.tok.type == __acorn.tokTypes.string ? this.parseExprAtom() : this.dummyString();
-    if (elt) { node.specifiers.unshift(elt); }
-  }
-  this.semicolon();
-  return this.finishNode(node, "ImportDeclaration")
-};
-
-lp$1.parseImportSpecifierList = function() {
-  var this$1 = this;
-
-  var elts = [];
-  if (this.tok.type === __acorn.tokTypes.star) {
-    var elt = this.startNode();
-    this.next();
-    elt.local = this.eatContextual("as") ? this.parseIdent() : this.dummyIdent();
-    elts.push(this.finishNode(elt, "ImportNamespaceSpecifier"));
-  } else {
-    var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart;
-    this.pushCx();
-    this.eat(__acorn.tokTypes.braceL);
-    if (this.curLineStart > continuedLine) { continuedLine = this.curLineStart; }
-    while (!this.closes(__acorn.tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) {
-      var elt$1 = this$1.startNode();
-      if (this$1.eat(__acorn.tokTypes.star)) {
-        elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : this$1.dummyIdent();
-        this$1.finishNode(elt$1, "ImportNamespaceSpecifier");
-      } else {
-        if (this$1.isContextual("from")) { break }
-        elt$1.imported = this$1.parseIdent();
-        if (isDummy(elt$1.imported)) { break }
-        elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : elt$1.imported;
-        this$1.finishNode(elt$1, "ImportSpecifier");
-      }
-      elts.push(elt$1);
-      this$1.eat(__acorn.tokTypes.comma);
-    }
-    this.eat(__acorn.tokTypes.braceR);
-    this.popCx();
-  }
-  return elts
-};
-
-lp$1.parseExportSpecifierList = function() {
-  var this$1 = this;
-
-  var elts = [];
-  var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart;
-  this.pushCx();
-  this.eat(__acorn.tokTypes.braceL);
-  if (this.curLineStart > continuedLine) { continuedLine = this.curLineStart; }
-  while (!this.closes(__acorn.tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) {
-    if (this$1.isContextual("from")) { break }
-    var elt = this$1.startNode();
-    elt.local = this$1.parseIdent();
-    if (isDummy(elt.local)) { break }
-    elt.exported = this$1.eatContextual("as") ? this$1.parseIdent() : elt.local;
-    this$1.finishNode(elt, "ExportSpecifier");
-    elts.push(elt);
-    this$1.eat(__acorn.tokTypes.comma);
-  }
-  this.eat(__acorn.tokTypes.braceR);
-  this.popCx();
-  return elts
-};
-
-var lp$2 = LooseParser.prototype;
-
-lp$2.checkLVal = function(expr) {
-  if (!expr) { return expr }
-  switch (expr.type) {
-  case "Identifier":
-  case "MemberExpression":
-    return expr
-
-  case "ParenthesizedExpression":
-    expr.expression = this.checkLVal(expr.expression);
-    return expr
-
-  default:
-    return this.dummyIdent()
-  }
-};
-
-lp$2.parseExpression = function(noIn) {
-  var this$1 = this;
-
-  var start = this.storeCurrentPos();
-  var expr = this.parseMaybeAssign(noIn);
-  if (this.tok.type === __acorn.tokTypes.comma) {
-    var node = this.startNodeAt(start);
-    node.expressions = [expr];
-    while (this.eat(__acorn.tokTypes.comma)) { node.expressions.push(this$1.parseMaybeAssign(noIn)); }
-    return this.finishNode(node, "SequenceExpression")
-  }
-  return expr
-};
-
-lp$2.parseParenExpression = function() {
-  this.pushCx();
-  this.expect(__acorn.tokTypes.parenL);
-  var val = this.parseExpression();
-  this.popCx();
-  this.expect(__acorn.tokTypes.parenR);
-  return val
-};
-
-lp$2.parseMaybeAssign = function(noIn) {
-  if (this.toks.isContextual("yield")) {
-    var node = this.startNode();
-    this.next();
-    if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != __acorn.tokTypes.star && !this.tok.type.startsExpr)) {
-      node.delegate = false;
-      node.argument = null;
-    } else {
-      node.delegate = this.eat(__acorn.tokTypes.star);
-      node.argument = this.parseMaybeAssign();
-    }
-    return this.finishNode(node, "YieldExpression")
-  }
-
-  var start = this.storeCurrentPos();
-  var left = this.parseMaybeConditional(noIn);
-  if (this.tok.type.isAssign) {
-    var node$1 = this.startNodeAt(start);
-    node$1.operator = this.tok.value;
-    node$1.left = this.tok.type === __acorn.tokTypes.eq ? this.toAssignable(left) : this.checkLVal(left);
-    this.next();
-    node$1.right = this.parseMaybeAssign(noIn);
-    return this.finishNode(node$1, "AssignmentExpression")
-  }
-  return left
-};
-
-lp$2.parseMaybeConditional = function(noIn) {
-  var start = this.storeCurrentPos();
-  var expr = this.parseExprOps(noIn);
-  if (this.eat(__acorn.tokTypes.question)) {
-    var node = this.startNodeAt(start);
-    node.test = expr;
-    node.consequent = this.parseMaybeAssign();
-    node.alternate = this.expect(__acorn.tokTypes.colon) ? this.parseMaybeAssign(noIn) : this.dummyIdent();
-    return this.finishNode(node, "ConditionalExpression")
-  }
-  return expr
-};
-
-lp$2.parseExprOps = function(noIn) {
-  var start = this.storeCurrentPos();
-  var indent = this.curIndent, line = this.curLineStart;
-  return this.parseExprOp(this.parseMaybeUnary(false), start, -1, noIn, indent, line)
-};
-
-lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
-  if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { return left }
-  var prec = this.tok.type.binop;
-  if (prec != null && (!noIn || this.tok.type !== __acorn.tokTypes._in)) {
-    if (prec > minPrec) {
-      var node = this.startNodeAt(start);
-      node.left = left;
-      node.operator = this.tok.value;
-      this.next();
-      if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) {
-        node.right = this.dummyIdent();
-      } else {
-        var rightStart = this.storeCurrentPos();
-        node.right = this.parseExprOp(this.parseMaybeUnary(false), rightStart, prec, noIn, indent, line);
-      }
-      this.finishNode(node, /&&|\|\|/.test(node.operator) ? "LogicalExpression" : "BinaryExpression");
-      return this.parseExprOp(node, start, minPrec, noIn, indent, line)
-    }
-  }
-  return left
-};
-
-lp$2.parseMaybeUnary = function(sawUnary) {
-  var this$1 = this;
-
-  var start = this.storeCurrentPos(), expr;
-  if (this.options.ecmaVersion >= 8 && this.toks.isContextual("await") &&
-    (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))
-  ) {
-    expr = this.parseAwait();
-    sawUnary = true;
-  } else if (this.tok.type.prefix) {
-    var node = this.startNode(), update = this.tok.type === __acorn.tokTypes.incDec;
-    if (!update) { sawUnary = true; }
-    node.operator = this.tok.value;
-    node.prefix = true;
-    this.next();
-    node.argument = this.parseMaybeUnary(true);
-    if (update) { node.argument = this.checkLVal(node.argument); }
-    expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
-  } else if (this.tok.type === __acorn.tokTypes.ellipsis) {
-    var node$1 = this.startNode();
-    this.next();
-    node$1.argument = this.parseMaybeUnary(sawUnary);
-    expr = this.finishNode(node$1, "SpreadElement");
-  } else {
-    expr = this.parseExprSubscripts();
-    while (this.tok.type.postfix && !this.canInsertSemicolon()) {
-      var node$2 = this$1.startNodeAt(start);
-      node$2.operator = this$1.tok.value;
-      node$2.prefix = false;
-      node$2.argument = this$1.checkLVal(expr);
-      this$1.next();
-      expr = this$1.finishNode(node$2, "UpdateExpression");
-    }
-  }
-
-  if (!sawUnary && this.eat(__acorn.tokTypes.starstar)) {
-    var node$3 = this.startNodeAt(start);
-    node$3.operator = "**";
-    node$3.left = expr;
-    node$3.right = this.parseMaybeUnary(false);
-    return this.finishNode(node$3, "BinaryExpression")
-  }
-
-  return expr
-};
-
-lp$2.parseExprSubscripts = function() {
-  var start = this.storeCurrentPos();
-  return this.parseSubscripts(this.parseExprAtom(), start, false, this.curIndent, this.curLineStart)
-};
-
-lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
-  var this$1 = this;
-
-  for (;;) {
-    if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
-      if (this$1.tok.type == __acorn.tokTypes.dot && this$1.curIndent == startIndent)
-        { --startIndent; }
-      else
-        { return base }
-    }
-
-    var maybeAsyncArrow = base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon();
-
-    if (this$1.eat(__acorn.tokTypes.dot)) {
-      var node = this$1.startNodeAt(start);
-      node.object = base;
-      if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
-        { node.property = this$1.dummyIdent(); }
-      else
-        { node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent(); }
-      node.computed = false;
-      base = this$1.finishNode(node, "MemberExpression");
-    } else if (this$1.tok.type == __acorn.tokTypes.bracketL) {
-      this$1.pushCx();
-      this$1.next();
-      var node$1 = this$1.startNodeAt(start);
-      node$1.object = base;
-      node$1.property = this$1.parseExpression();
-      node$1.computed = true;
-      this$1.popCx();
-      this$1.expect(__acorn.tokTypes.bracketR);
-      base = this$1.finishNode(node$1, "MemberExpression");
-    } else if (!noCalls && this$1.tok.type == __acorn.tokTypes.parenL) {
-      var exprList = this$1.parseExprList(__acorn.tokTypes.parenR);
-      if (maybeAsyncArrow && this$1.eat(__acorn.tokTypes.arrow))
-        { return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) }
-      var node$2 = this$1.startNodeAt(start);
-      node$2.callee = base;
-      node$2.arguments = exprList;
-      base = this$1.finishNode(node$2, "CallExpression");
-    } else if (this$1.tok.type == __acorn.tokTypes.backQuote) {
-      var node$3 = this$1.startNodeAt(start);
-      node$3.tag = base;
-      node$3.quasi = this$1.parseTemplate();
-      base = this$1.finishNode(node$3, "TaggedTemplateExpression");
-    } else {
-      return base
-    }
-  }
-};
-
-lp$2.parseExprAtom = function() {
-  var node;
-  switch (this.tok.type) {
-  case __acorn.tokTypes._this:
-  case __acorn.tokTypes._super:
-    var type = this.tok.type === __acorn.tokTypes._this ? "ThisExpression" : "Super";
-    node = this.startNode();
-    this.next();
-    return this.finishNode(node, type)
-
-  case __acorn.tokTypes.name:
-    var start = this.storeCurrentPos();
-    var id = this.parseIdent();
-    var isAsync = false;
-    if (id.name === "async" && !this.canInsertSemicolon()) {
-      if (this.eat(__acorn.tokTypes._function))
-        { return this.parseFunction(this.startNodeAt(start), false, true) }
-      if (this.tok.type === __acorn.tokTypes.name) {
-        id = this.parseIdent();
-        isAsync = true;
-      }
-    }
-    return this.eat(__acorn.tokTypes.arrow) ? this.parseArrowExpression(this.startNodeAt(start), [id], isAsync) : id
-
-  case __acorn.tokTypes.regexp:
-    node = this.startNode();
-    var val = this.tok.value;
-    node.regex = {pattern: val.pattern, flags: val.flags};
-    node.value = val.value;
-    node.raw = this.input.slice(this.tok.start, this.tok.end);
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case __acorn.tokTypes.num: case __acorn.tokTypes.string:
-    node = this.startNode();
-    node.value = this.tok.value;
-    node.raw = this.input.slice(this.tok.start, this.tok.end);
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case __acorn.tokTypes._null: case __acorn.tokTypes._true: case __acorn.tokTypes._false:
-    node = this.startNode();
-    node.value = this.tok.type === __acorn.tokTypes._null ? null : this.tok.type === __acorn.tokTypes._true;
-    node.raw = this.tok.type.keyword;
-    this.next();
-    return this.finishNode(node, "Literal")
-
-  case __acorn.tokTypes.parenL:
-    var parenStart = this.storeCurrentPos();
-    this.next();
-    var inner = this.parseExpression();
-    this.expect(__acorn.tokTypes.parenR);
-    if (this.eat(__acorn.tokTypes.arrow)) {
-      // (a,)=>a // SequenceExpression makes dummy in the last hole. Drop the dummy.
-      var params = inner.expressions || [inner];
-      if (params.length && isDummy(params[params.length - 1]))
-        { params.pop(); }
-      return this.parseArrowExpression(this.startNodeAt(parenStart), params)
-    }
-    if (this.options.preserveParens) {
-      var par = this.startNodeAt(parenStart);
-      par.expression = inner;
-      inner = this.finishNode(par, "ParenthesizedExpression");
-    }
-    return inner
-
-  case __acorn.tokTypes.bracketL:
-    node = this.startNode();
-    node.elements = this.parseExprList(__acorn.tokTypes.bracketR, true);
-    return this.finishNode(node, "ArrayExpression")
-
-  case __acorn.tokTypes.braceL:
-    return this.parseObj()
-
-  case __acorn.tokTypes._class:
-    return this.parseClass(false)
-
-  case __acorn.tokTypes._function:
-    node = this.startNode();
-    this.next();
-    return this.parseFunction(node, false)
-
-  case __acorn.tokTypes._new:
-    return this.parseNew()
-
-  case __acorn.tokTypes.backQuote:
-    return this.parseTemplate()
-
-  default:
-    return this.dummyIdent()
-  }
-};
-
-lp$2.parseNew = function() {
-  var node = this.startNode(), startIndent = this.curIndent, line = this.curLineStart;
-  var meta = this.parseIdent(true);
-  if (this.options.ecmaVersion >= 6 && this.eat(__acorn.tokTypes.dot)) {
-    node.meta = meta;
-    node.property = this.parseIdent(true);
-    return this.finishNode(node, "MetaProperty")
-  }
-  var start = this.storeCurrentPos();
-  node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line);
-  if (this.tok.type == __acorn.tokTypes.parenL) {
-    node.arguments = this.parseExprList(__acorn.tokTypes.parenR);
-  } else {
-    node.arguments = [];
-  }
-  return this.finishNode(node, "NewExpression")
-};
-
-lp$2.parseTemplateElement = function() {
-  var elem = this.startNode();
-
-  // The loose parser accepts invalid unicode escapes even in untagged templates.
-  if (this.tok.type === __acorn.tokTypes.invalidTemplate) {
-    elem.value = {
-      raw: this.tok.value,
-      cooked: null
-    };
-  } else {
-    elem.value = {
-      raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, "\n"),
-      cooked: this.tok.value
-    };
-  }
-  this.next();
-  elem.tail = this.tok.type === __acorn.tokTypes.backQuote;
-  return this.finishNode(elem, "TemplateElement")
-};
-
-lp$2.parseTemplate = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  this.next();
-  node.expressions = [];
-  var curElt = this.parseTemplateElement();
-  node.quasis = [curElt];
-  while (!curElt.tail) {
-    this$1.next();
-    node.expressions.push(this$1.parseExpression());
-    if (this$1.expect(__acorn.tokTypes.braceR)) {
-      curElt = this$1.parseTemplateElement();
-    } else {
-      curElt = this$1.startNode();
-      curElt.value = {cooked: "", raw: ""};
-      curElt.tail = true;
-      this$1.finishNode(curElt, "TemplateElement");
-    }
-    node.quasis.push(curElt);
-  }
-  this.expect(__acorn.tokTypes.backQuote);
-  return this.finishNode(node, "TemplateLiteral")
-};
-
-lp$2.parseObj = function() {
-  var this$1 = this;
-
-  var node = this.startNode();
-  node.properties = [];
-  this.pushCx();
-  var indent = this.curIndent + 1, line = this.curLineStart;
-  this.eat(__acorn.tokTypes.braceL);
-  if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart; }
-  while (!this.closes(__acorn.tokTypes.braceR, indent, line)) {
-    var prop = this$1.startNode(), isGenerator = (void 0), isAsync = (void 0), start = (void 0);
-    if (this$1.options.ecmaVersion >= 9 && this$1.eat(__acorn.tokTypes.ellipsis)) {
-      prop.argument = this$1.parseMaybeAssign();
-      node.properties.push(this$1.finishNode(prop, "SpreadElement"));
-      this$1.eat(__acorn.tokTypes.comma);
-      continue
-    }
-    if (this$1.options.ecmaVersion >= 6) {
-      start = this$1.storeCurrentPos();
-      prop.method = false;
-      prop.shorthand = false;
-      isGenerator = this$1.eat(__acorn.tokTypes.star);
-    }
-    this$1.parsePropertyName(prop);
-    if (this$1.toks.isAsyncProp(prop)) {
-      isAsync = true;
-      isGenerator = this$1.options.ecmaVersion >= 9 && this$1.eat(__acorn.tokTypes.star);
-      this$1.parsePropertyName(prop);
-    } else {
-      isAsync = false;
-    }
-    if (isDummy(prop.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(__acorn.tokTypes.comma); continue }
-    if (this$1.eat(__acorn.tokTypes.colon)) {
-      prop.kind = "init";
-      prop.value = this$1.parseMaybeAssign();
-    } else if (this$1.options.ecmaVersion >= 6 && (this$1.tok.type === __acorn.tokTypes.parenL || this$1.tok.type === __acorn.tokTypes.braceL)) {
-      prop.kind = "init";
-      prop.method = true;
-      prop.value = this$1.parseMethod(isGenerator, isAsync);
-    } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" &&
-               !prop.computed && (prop.key.name === "get" || prop.key.name === "set") &&
-               (this$1.tok.type != __acorn.tokTypes.comma && this$1.tok.type != __acorn.tokTypes.braceR && this$1.tok.type != __acorn.tokTypes.eq)) {
-      prop.kind = prop.key.name;
-      this$1.parsePropertyName(prop);
-      prop.value = this$1.parseMethod(false);
-    } else {
-      prop.kind = "init";
-      if (this$1.options.ecmaVersion >= 6) {
-        if (this$1.eat(__acorn.tokTypes.eq)) {
-          var assign = this$1.startNodeAt(start);
-          assign.operator = "=";
-          assign.left = prop.key;
-          assign.right = this$1.parseMaybeAssign();
-          prop.value = this$1.finishNode(assign, "AssignmentExpression");
-        } else {
-          prop.value = prop.key;
-        }
-      } else {
-        prop.value = this$1.dummyIdent();
-      }
-      prop.shorthand = true;
-    }
-    node.properties.push(this$1.finishNode(prop, "Property"));
-    this$1.eat(__acorn.tokTypes.comma);
-  }
-  this.popCx();
-  if (!this.eat(__acorn.tokTypes.braceR)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  return this.finishNode(node, "ObjectExpression")
-};
-
-lp$2.parsePropertyName = function(prop) {
-  if (this.options.ecmaVersion >= 6) {
-    if (this.eat(__acorn.tokTypes.bracketL)) {
-      prop.computed = true;
-      prop.key = this.parseExpression();
-      this.expect(__acorn.tokTypes.bracketR);
-      return
-    } else {
-      prop.computed = false;
-    }
-  }
-  var key = (this.tok.type === __acorn.tokTypes.num || this.tok.type === __acorn.tokTypes.string) ? this.parseExprAtom() : this.parseIdent();
-  prop.key = key || this.dummyIdent();
-};
-
-lp$2.parsePropertyAccessor = function() {
-  if (this.tok.type === __acorn.tokTypes.name || this.tok.type.keyword) { return this.parseIdent() }
-};
-
-lp$2.parseIdent = function() {
-  var name = this.tok.type === __acorn.tokTypes.name ? this.tok.value : this.tok.type.keyword;
-  if (!name) { return this.dummyIdent() }
-  var node = this.startNode();
-  this.next();
-  node.name = name;
-  return this.finishNode(node, "Identifier")
-};
-
-lp$2.initFunction = function(node) {
-  node.id = null;
-  node.params = [];
-  if (this.options.ecmaVersion >= 6) {
-    node.generator = false;
-    node.expression = false;
-  }
-  if (this.options.ecmaVersion >= 8)
-    { node.async = false; }
-};
-
-// Convert existing expression atom to assignable pattern
-// if possible.
-
-lp$2.toAssignable = function(node, binding) {
-  var this$1 = this;
-
-  if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) {
-    // Okay
-  } else if (node.type == "ParenthesizedExpression") {
-    this.toAssignable(node.expression, binding);
-  } else if (this.options.ecmaVersion < 6) {
-    return this.dummyIdent()
-  } else if (node.type == "ObjectExpression") {
-    node.type = "ObjectPattern";
-    for (var i = 0, list = node.properties; i < list.length; i += 1)
-      {
-      var prop = list[i];
-
-      this$1.toAssignable(prop, binding);
-    }
-  } else if (node.type == "ArrayExpression") {
-    node.type = "ArrayPattern";
-    this.toAssignableList(node.elements, binding);
-  } else if (node.type == "Property") {
-    this.toAssignable(node.value, binding);
-  } else if (node.type == "SpreadElement") {
-    node.type = "RestElement";
-    this.toAssignable(node.argument, binding);
-  } else if (node.type == "AssignmentExpression") {
-    node.type = "AssignmentPattern";
-    delete node.operator;
-  } else {
-    return this.dummyIdent()
-  }
-  return node
-};
-
-lp$2.toAssignableList = function(exprList, binding) {
-  var this$1 = this;
-
-  for (var i = 0, list = exprList; i < list.length; i += 1)
-    {
-    var expr = list[i];
-
-    this$1.toAssignable(expr, binding);
-  }
-  return exprList
-};
-
-lp$2.parseFunctionParams = function(params) {
-  params = this.parseExprList(__acorn.tokTypes.parenR);
-  return this.toAssignableList(params, true)
-};
-
-lp$2.parseMethod = function(isGenerator, isAsync) {
-  var node = this.startNode(), oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 6)
-    { node.generator = !!isGenerator; }
-  if (this.options.ecmaVersion >= 8)
-    { node.async = !!isAsync; }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.parseFunctionParams();
-  node.body = this.parseBlock();
-  this.toks.adaptDirectivePrologue(node.body.body);
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, "FunctionExpression")
-};
-
-lp$2.parseArrowExpression = function(node, params, isAsync) {
-  var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
-  this.initFunction(node);
-  if (this.options.ecmaVersion >= 8)
-    { node.async = !!isAsync; }
-  this.inAsync = node.async;
-  this.inFunction = true;
-  node.params = this.toAssignableList(params, true);
-  node.expression = this.tok.type !== __acorn.tokTypes.braceL;
-  if (node.expression) {
-    node.body = this.parseMaybeAssign();
-  } else {
-    node.body = this.parseBlock();
-    this.toks.adaptDirectivePrologue(node.body.body);
-  }
-  this.inAsync = oldInAsync;
-  this.inFunction = oldInFunction;
-  return this.finishNode(node, "ArrowFunctionExpression")
-};
-
-lp$2.parseExprList = function(close, allowEmpty) {
-  var this$1 = this;
-
-  this.pushCx();
-  var indent = this.curIndent, line = this.curLineStart, elts = [];
-  this.next(); // Opening bracket
-  while (!this.closes(close, indent + 1, line)) {
-    if (this$1.eat(__acorn.tokTypes.comma)) {
-      elts.push(allowEmpty ? null : this$1.dummyIdent());
-      continue
-    }
-    var elt = this$1.parseMaybeAssign();
-    if (isDummy(elt)) {
-      if (this$1.closes(close, indent, line)) { break }
-      this$1.next();
-    } else {
-      elts.push(elt);
-    }
-    this$1.eat(__acorn.tokTypes.comma);
-  }
-  this.popCx();
-  if (!this.eat(close)) {
-    // If there is no closing brace, make the node span to the start
-    // of the next token (this is useful for Tern)
-    this.last.end = this.tok.start;
-    if (this.options.locations) { this.last.loc.end = this.tok.loc.start; }
-  }
-  return elts
-};
-
-lp$2.parseAwait = function() {
-  var node = this.startNode();
-  this.next();
-  node.argument = this.parseMaybeUnary();
-  return this.finishNode(node, "AwaitExpression")
-};
-
-// Acorn: Loose parser
-//
-// This module provides an alternative parser (`parse_dammit`) that
-// exposes that same interface as `parse`, but will try to parse
-// anything as JavaScript, repairing syntax error the best it can.
-// There are circumstances in which it will raise an error and give
-// up, but they are very rare. The resulting AST will be a mostly
-// valid JavaScript AST (as per the [Mozilla parser API][api], except
-// that:
-//
-// - Return outside functions is allowed
-//
-// - Label consistency (no conflicts, break only to existing labels)
-//   is not enforced.
-//
-// - Bogus Identifier nodes with a name of `"✖"` are inserted whenever
-//   the parser got too confused to return anything meaningful.
-//
-// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
-//
-// The expected use for this is to *first* try `acorn.parse`, and only
-// if that fails switch to `parse_dammit`. The loose parser might
-// parse badly indented code incorrectly, so **don't** use it as
-// your default parser.
-//
-// Quite a lot of acorn.js is duplicated here. The alternative was to
-// add a *lot* of extra cruft to that file, making it less readable
-// and slower. Copying and editing the code allowed me to make
-// invasive changes and simplifications without creating a complicated
-// tangle.
-
-__acorn.defaultOptions.tabSize = 4;
-
-// eslint-disable-next-line camelcase
-function parse_dammit(input, options) {
-  return new LooseParser(input, options).parse()
-}
-
-__acorn.addLooseExports(parse_dammit, LooseParser, pluginsLoose);
-
-exports.parse_dammit = parse_dammit;
-exports.LooseParser = LooseParser;
-exports.pluginsLoose = pluginsLoose;
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-})));

+ 0 - 432
ParticleFilter/node_modules/acorn/dist/walk.es.js

@@ -1,432 +0,0 @@
-// AST walker module for Mozilla Parser API compatible trees
-
-// A simple walk is one where you simply specify callbacks to be
-// called on specific nodes. The last two arguments are optional. A
-// simple use would be
-//
-//     walk.simple(myTree, {
-//         Expression: function(node) { ... }
-//     });
-//
-// to do something with all expressions. All Parser API node types
-// can be used to identify node types, as well as Expression,
-// Statement, and ScopeBody, which denote categories of nodes.
-//
-// The base argument can be used to pass a custom (recursive)
-// walker, and state can be used to give this walked an initial
-// state.
-
-function simple(node, visitors, baseVisitor, state, override) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  (function c(node, st, override) {
-    var type = override || node.type, found = visitors[type];
-    baseVisitor[type](node, st, c);
-    if (found) { found(node, st); }
-  })(node, state, override);
-}
-
-// An ancestor walk keeps an array of ancestor nodes (including the
-// current node) and passes them to the callback as third parameter
-// (and also as state parameter when no other state is present).
-function ancestor(node, visitors, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var ancestors = [];(function c(node, st, override) {
-    var type = override || node.type, found = visitors[type];
-    var isNew = node != ancestors[ancestors.length - 1];
-    if (isNew) { ancestors.push(node); }
-    baseVisitor[type](node, st, c);
-    if (found) { found(node, st || ancestors, ancestors); }
-    if (isNew) { ancestors.pop(); }
-  })(node, state);
-}
-
-// A recursive walk is one where your functions override the default
-// walkers. They can modify and replace the state parameter that's
-// threaded through the walk, and can opt how and whether to walk
-// their child nodes (by calling their third argument on these
-// nodes).
-function recursive(node, state, funcs, baseVisitor, override) {
-  var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor;(function c(node, st, override) {
-    visitor[override || node.type](node, st, c);
-  })(node, state, override);
-}
-
-function makeTest(test) {
-  if (typeof test == "string")
-    { return function (type) { return type == test; } }
-  else if (!test)
-    { return function () { return true; } }
-  else
-    { return test }
-}
-
-var Found = function Found(node, state) { this.node = node; this.state = state; };
-
-// A full walk triggers the callback on each node
-function full(node, callback, baseVisitor, state, override) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  (function c(node, st, override) {
-    var type = override || node.type;
-    baseVisitor[type](node, st, c);
-    if (!override) { callback(node, st, type); }
-  })(node, state, override);
-}
-
-// An fullAncestor walk is like an ancestor walk, but triggers
-// the callback on each node
-function fullAncestor(node, callback, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var ancestors = [];(function c(node, st, override) {
-    var type = override || node.type;
-    var isNew = node != ancestors[ancestors.length - 1];
-    if (isNew) { ancestors.push(node); }
-    baseVisitor[type](node, st, c);
-    if (!override) { callback(node, st || ancestors, ancestors, type); }
-    if (isNew) { ancestors.pop(); }
-  })(node, state);
-}
-
-// Find a node with a given start, end, and type (all are optional,
-// null can be used as wildcard). Returns a {node, state} object, or
-// undefined when it doesn't find a matching node.
-function findNodeAt(node, start, end, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      var type = override || node.type;
-      if ((start == null || node.start <= start) &&
-          (end == null || node.end >= end))
-        { baseVisitor[type](node, st, c); }
-      if ((start == null || node.start == start) &&
-          (end == null || node.end == end) &&
-          test(type, node))
-        { throw new Found(node, st) }
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the innermost node of a given type that contains the given
-// position. Interface similar to findNodeAt.
-function findNodeAround(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      var type = override || node.type;
-      if (node.start > pos || node.end < pos) { return }
-      baseVisitor[type](node, st, c);
-      if (test(type, node)) { throw new Found(node, st) }
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the outermost matching node after a given position.
-function findNodeAfter(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      if (node.end < pos) { return }
-      var type = override || node.type;
-      if (node.start >= pos && test(type, node)) { throw new Found(node, st) }
-      baseVisitor[type](node, st, c);
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the outermost matching node before a given position.
-function findNodeBefore(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  var max;(function c(node, st, override) {
-    if (node.start > pos) { return }
-    var type = override || node.type;
-    if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
-      { max = new Found(node, st); }
-    baseVisitor[type](node, st, c);
-  })(node, state);
-  return max
-}
-
-// Fallback to an Object.create polyfill for older environments.
-var create = Object.create || function(proto) {
-  function Ctor() {}
-  Ctor.prototype = proto;
-  return new Ctor
-};
-
-// Used to create a custom walker. Will fill in all missing node
-// type properties with the defaults.
-function make(funcs, baseVisitor) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var visitor = create(baseVisitor);
-  for (var type in funcs) { visitor[type] = funcs[type]; }
-  return visitor
-}
-
-function skipThrough(node, st, c) { c(node, st); }
-function ignore(_node, _st, _c) {}
-
-// Node walkers.
-
-var base = {};
-
-base.Program = base.BlockStatement = function (node, st, c) {
-  for (var i = 0, list = node.body; i < list.length; i += 1)
-    {
-    var stmt = list[i];
-
-    c(stmt, st, "Statement");
-  }
-};
-base.Statement = skipThrough;
-base.EmptyStatement = ignore;
-base.ExpressionStatement = base.ParenthesizedExpression =
-  function (node, st, c) { return c(node.expression, st, "Expression"); };
-base.IfStatement = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.consequent, st, "Statement");
-  if (node.alternate) { c(node.alternate, st, "Statement"); }
-};
-base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); };
-base.BreakStatement = base.ContinueStatement = ignore;
-base.WithStatement = function (node, st, c) {
-  c(node.object, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.SwitchStatement = function (node, st, c) {
-  c(node.discriminant, st, "Expression");
-  for (var i = 0, list = node.cases; i < list.length; i += 1) {
-    var cs = list[i];
-
-    if (cs.test) { c(cs.test, st, "Expression"); }
-    for (var i$1 = 0, list$1 = cs.consequent; i$1 < list$1.length; i$1 += 1)
-      {
-      var cons = list$1[i$1];
-
-      c(cons, st, "Statement");
-    }
-  }
-};
-base.SwitchCase = function (node, st, c) {
-  if (node.test) { c(node.test, st, "Expression"); }
-  for (var i = 0, list = node.consequent; i < list.length; i += 1)
-    {
-    var cons = list[i];
-
-    c(cons, st, "Statement");
-  }
-};
-base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {
-  if (node.argument) { c(node.argument, st, "Expression"); }
-};
-base.ThrowStatement = base.SpreadElement =
-  function (node, st, c) { return c(node.argument, st, "Expression"); };
-base.TryStatement = function (node, st, c) {
-  c(node.block, st, "Statement");
-  if (node.handler) { c(node.handler, st); }
-  if (node.finalizer) { c(node.finalizer, st, "Statement"); }
-};
-base.CatchClause = function (node, st, c) {
-  c(node.param, st, "Pattern");
-  c(node.body, st, "ScopeBody");
-};
-base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.ForStatement = function (node, st, c) {
-  if (node.init) { c(node.init, st, "ForInit"); }
-  if (node.test) { c(node.test, st, "Expression"); }
-  if (node.update) { c(node.update, st, "Expression"); }
-  c(node.body, st, "Statement");
-};
-base.ForInStatement = base.ForOfStatement = function (node, st, c) {
-  c(node.left, st, "ForInit");
-  c(node.right, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.ForInit = function (node, st, c) {
-  if (node.type == "VariableDeclaration") { c(node, st); }
-  else { c(node, st, "Expression"); }
-};
-base.DebuggerStatement = ignore;
-
-base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); };
-base.VariableDeclaration = function (node, st, c) {
-  for (var i = 0, list = node.declarations; i < list.length; i += 1)
-    {
-    var decl = list[i];
-
-    c(decl, st);
-  }
-};
-base.VariableDeclarator = function (node, st, c) {
-  c(node.id, st, "Pattern");
-  if (node.init) { c(node.init, st, "Expression"); }
-};
-
-base.Function = function (node, st, c) {
-  if (node.id) { c(node.id, st, "Pattern"); }
-  for (var i = 0, list = node.params; i < list.length; i += 1)
-    {
-    var param = list[i];
-
-    c(param, st, "Pattern");
-  }
-  c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody");
-};
-// FIXME drop these node types in next major version
-// (They are awkward, and in ES6 every block can be a scope.)
-base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); };
-base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); };
-
-base.Pattern = function (node, st, c) {
-  if (node.type == "Identifier")
-    { c(node, st, "VariablePattern"); }
-  else if (node.type == "MemberExpression")
-    { c(node, st, "MemberPattern"); }
-  else
-    { c(node, st); }
-};
-base.VariablePattern = ignore;
-base.MemberPattern = skipThrough;
-base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); };
-base.ArrayPattern = function (node, st, c) {
-  for (var i = 0, list = node.elements; i < list.length; i += 1) {
-    var elt = list[i];
-
-    if (elt) { c(elt, st, "Pattern"); }
-  }
-};
-base.ObjectPattern = function (node, st, c) {
-  for (var i = 0, list = node.properties; i < list.length; i += 1) {
-    var prop = list[i];
-
-    if (prop.type === "Property") {
-      if (prop.computed) { c(prop.key, st, "Expression"); }
-      c(prop.value, st, "Pattern");
-    } else if (prop.type === "RestElement") {
-      c(prop.argument, st, "Pattern");
-    }
-  }
-};
-
-base.Expression = skipThrough;
-base.ThisExpression = base.Super = base.MetaProperty = ignore;
-base.ArrayExpression = function (node, st, c) {
-  for (var i = 0, list = node.elements; i < list.length; i += 1) {
-    var elt = list[i];
-
-    if (elt) { c(elt, st, "Expression"); }
-  }
-};
-base.ObjectExpression = function (node, st, c) {
-  for (var i = 0, list = node.properties; i < list.length; i += 1)
-    {
-    var prop = list[i];
-
-    c(prop, st);
-  }
-};
-base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;
-base.SequenceExpression = base.TemplateLiteral = function (node, st, c) {
-  for (var i = 0, list = node.expressions; i < list.length; i += 1)
-    {
-    var expr = list[i];
-
-    c(expr, st, "Expression");
-  }
-};
-base.UnaryExpression = base.UpdateExpression = function (node, st, c) {
-  c(node.argument, st, "Expression");
-};
-base.BinaryExpression = base.LogicalExpression = function (node, st, c) {
-  c(node.left, st, "Expression");
-  c(node.right, st, "Expression");
-};
-base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {
-  c(node.left, st, "Pattern");
-  c(node.right, st, "Expression");
-};
-base.ConditionalExpression = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.consequent, st, "Expression");
-  c(node.alternate, st, "Expression");
-};
-base.NewExpression = base.CallExpression = function (node, st, c) {
-  c(node.callee, st, "Expression");
-  if (node.arguments)
-    { for (var i = 0, list = node.arguments; i < list.length; i += 1)
-      {
-        var arg = list[i];
-
-        c(arg, st, "Expression");
-      } }
-};
-base.MemberExpression = function (node, st, c) {
-  c(node.object, st, "Expression");
-  if (node.computed) { c(node.property, st, "Expression"); }
-};
-base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
-  if (node.declaration)
-    { c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
-  if (node.source) { c(node.source, st, "Expression"); }
-};
-base.ExportAllDeclaration = function (node, st, c) {
-  c(node.source, st, "Expression");
-};
-base.ImportDeclaration = function (node, st, c) {
-  for (var i = 0, list = node.specifiers; i < list.length; i += 1)
-    {
-    var spec = list[i];
-
-    c(spec, st);
-  }
-  c(node.source, st, "Expression");
-};
-base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore;
-
-base.TaggedTemplateExpression = function (node, st, c) {
-  c(node.tag, st, "Expression");
-  c(node.quasi, st, "Expression");
-};
-base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); };
-base.Class = function (node, st, c) {
-  if (node.id) { c(node.id, st, "Pattern"); }
-  if (node.superClass) { c(node.superClass, st, "Expression"); }
-  c(node.body, st);
-};
-base.ClassBody = function (node, st, c) {
-  for (var i = 0, list = node.body; i < list.length; i += 1)
-    {
-    var elt = list[i];
-
-    c(elt, st);
-  }
-};
-base.MethodDefinition = base.Property = function (node, st, c) {
-  if (node.computed) { c(node.key, st, "Expression"); }
-  c(node.value, st, "Expression");
-};
-
-export { simple, ancestor, recursive, full, fullAncestor, findNodeAt, findNodeAround, findNodeAfter, findNodeBefore, make, base };

+ 0 - 452
ParticleFilter/node_modules/acorn/dist/walk.js

@@ -1,452 +0,0 @@
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-	typeof define === 'function' && define.amd ? define(['exports'], factory) :
-	(factory((global.acorn = global.acorn || {}, global.acorn.walk = {})));
-}(this, (function (exports) { 'use strict';
-
-// AST walker module for Mozilla Parser API compatible trees
-
-// A simple walk is one where you simply specify callbacks to be
-// called on specific nodes. The last two arguments are optional. A
-// simple use would be
-//
-//     walk.simple(myTree, {
-//         Expression: function(node) { ... }
-//     });
-//
-// to do something with all expressions. All Parser API node types
-// can be used to identify node types, as well as Expression,
-// Statement, and ScopeBody, which denote categories of nodes.
-//
-// The base argument can be used to pass a custom (recursive)
-// walker, and state can be used to give this walked an initial
-// state.
-
-function simple(node, visitors, baseVisitor, state, override) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  (function c(node, st, override) {
-    var type = override || node.type, found = visitors[type];
-    baseVisitor[type](node, st, c);
-    if (found) { found(node, st); }
-  })(node, state, override);
-}
-
-// An ancestor walk keeps an array of ancestor nodes (including the
-// current node) and passes them to the callback as third parameter
-// (and also as state parameter when no other state is present).
-function ancestor(node, visitors, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var ancestors = [];(function c(node, st, override) {
-    var type = override || node.type, found = visitors[type];
-    var isNew = node != ancestors[ancestors.length - 1];
-    if (isNew) { ancestors.push(node); }
-    baseVisitor[type](node, st, c);
-    if (found) { found(node, st || ancestors, ancestors); }
-    if (isNew) { ancestors.pop(); }
-  })(node, state);
-}
-
-// A recursive walk is one where your functions override the default
-// walkers. They can modify and replace the state parameter that's
-// threaded through the walk, and can opt how and whether to walk
-// their child nodes (by calling their third argument on these
-// nodes).
-function recursive(node, state, funcs, baseVisitor, override) {
-  var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor;(function c(node, st, override) {
-    visitor[override || node.type](node, st, c);
-  })(node, state, override);
-}
-
-function makeTest(test) {
-  if (typeof test == "string")
-    { return function (type) { return type == test; } }
-  else if (!test)
-    { return function () { return true; } }
-  else
-    { return test }
-}
-
-var Found = function Found(node, state) { this.node = node; this.state = state; };
-
-// A full walk triggers the callback on each node
-function full(node, callback, baseVisitor, state, override) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  (function c(node, st, override) {
-    var type = override || node.type;
-    baseVisitor[type](node, st, c);
-    if (!override) { callback(node, st, type); }
-  })(node, state, override);
-}
-
-// An fullAncestor walk is like an ancestor walk, but triggers
-// the callback on each node
-function fullAncestor(node, callback, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var ancestors = [];(function c(node, st, override) {
-    var type = override || node.type;
-    var isNew = node != ancestors[ancestors.length - 1];
-    if (isNew) { ancestors.push(node); }
-    baseVisitor[type](node, st, c);
-    if (!override) { callback(node, st || ancestors, ancestors, type); }
-    if (isNew) { ancestors.pop(); }
-  })(node, state);
-}
-
-// Find a node with a given start, end, and type (all are optional,
-// null can be used as wildcard). Returns a {node, state} object, or
-// undefined when it doesn't find a matching node.
-function findNodeAt(node, start, end, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      var type = override || node.type;
-      if ((start == null || node.start <= start) &&
-          (end == null || node.end >= end))
-        { baseVisitor[type](node, st, c); }
-      if ((start == null || node.start == start) &&
-          (end == null || node.end == end) &&
-          test(type, node))
-        { throw new Found(node, st) }
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the innermost node of a given type that contains the given
-// position. Interface similar to findNodeAt.
-function findNodeAround(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      var type = override || node.type;
-      if (node.start > pos || node.end < pos) { return }
-      baseVisitor[type](node, st, c);
-      if (test(type, node)) { throw new Found(node, st) }
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the outermost matching node after a given position.
-function findNodeAfter(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  try {
-    (function c(node, st, override) {
-      if (node.end < pos) { return }
-      var type = override || node.type;
-      if (node.start >= pos && test(type, node)) { throw new Found(node, st) }
-      baseVisitor[type](node, st, c);
-    })(node, state);
-  } catch (e) {
-    if (e instanceof Found) { return e }
-    throw e
-  }
-}
-
-// Find the outermost matching node before a given position.
-function findNodeBefore(node, pos, test, baseVisitor, state) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  test = makeTest(test);
-  var max;(function c(node, st, override) {
-    if (node.start > pos) { return }
-    var type = override || node.type;
-    if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))
-      { max = new Found(node, st); }
-    baseVisitor[type](node, st, c);
-  })(node, state);
-  return max
-}
-
-// Fallback to an Object.create polyfill for older environments.
-var create = Object.create || function(proto) {
-  function Ctor() {}
-  Ctor.prototype = proto;
-  return new Ctor
-};
-
-// Used to create a custom walker. Will fill in all missing node
-// type properties with the defaults.
-function make(funcs, baseVisitor) {
-  if ( baseVisitor === void 0 ) baseVisitor = base;
-
-  var visitor = create(baseVisitor);
-  for (var type in funcs) { visitor[type] = funcs[type]; }
-  return visitor
-}
-
-function skipThrough(node, st, c) { c(node, st); }
-function ignore(_node, _st, _c) {}
-
-// Node walkers.
-
-var base = {};
-
-base.Program = base.BlockStatement = function (node, st, c) {
-  for (var i = 0, list = node.body; i < list.length; i += 1)
-    {
-    var stmt = list[i];
-
-    c(stmt, st, "Statement");
-  }
-};
-base.Statement = skipThrough;
-base.EmptyStatement = ignore;
-base.ExpressionStatement = base.ParenthesizedExpression =
-  function (node, st, c) { return c(node.expression, st, "Expression"); };
-base.IfStatement = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.consequent, st, "Statement");
-  if (node.alternate) { c(node.alternate, st, "Statement"); }
-};
-base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); };
-base.BreakStatement = base.ContinueStatement = ignore;
-base.WithStatement = function (node, st, c) {
-  c(node.object, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.SwitchStatement = function (node, st, c) {
-  c(node.discriminant, st, "Expression");
-  for (var i = 0, list = node.cases; i < list.length; i += 1) {
-    var cs = list[i];
-
-    if (cs.test) { c(cs.test, st, "Expression"); }
-    for (var i$1 = 0, list$1 = cs.consequent; i$1 < list$1.length; i$1 += 1)
-      {
-      var cons = list$1[i$1];
-
-      c(cons, st, "Statement");
-    }
-  }
-};
-base.SwitchCase = function (node, st, c) {
-  if (node.test) { c(node.test, st, "Expression"); }
-  for (var i = 0, list = node.consequent; i < list.length; i += 1)
-    {
-    var cons = list[i];
-
-    c(cons, st, "Statement");
-  }
-};
-base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {
-  if (node.argument) { c(node.argument, st, "Expression"); }
-};
-base.ThrowStatement = base.SpreadElement =
-  function (node, st, c) { return c(node.argument, st, "Expression"); };
-base.TryStatement = function (node, st, c) {
-  c(node.block, st, "Statement");
-  if (node.handler) { c(node.handler, st); }
-  if (node.finalizer) { c(node.finalizer, st, "Statement"); }
-};
-base.CatchClause = function (node, st, c) {
-  c(node.param, st, "Pattern");
-  c(node.body, st, "ScopeBody");
-};
-base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.ForStatement = function (node, st, c) {
-  if (node.init) { c(node.init, st, "ForInit"); }
-  if (node.test) { c(node.test, st, "Expression"); }
-  if (node.update) { c(node.update, st, "Expression"); }
-  c(node.body, st, "Statement");
-};
-base.ForInStatement = base.ForOfStatement = function (node, st, c) {
-  c(node.left, st, "ForInit");
-  c(node.right, st, "Expression");
-  c(node.body, st, "Statement");
-};
-base.ForInit = function (node, st, c) {
-  if (node.type == "VariableDeclaration") { c(node, st); }
-  else { c(node, st, "Expression"); }
-};
-base.DebuggerStatement = ignore;
-
-base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); };
-base.VariableDeclaration = function (node, st, c) {
-  for (var i = 0, list = node.declarations; i < list.length; i += 1)
-    {
-    var decl = list[i];
-
-    c(decl, st);
-  }
-};
-base.VariableDeclarator = function (node, st, c) {
-  c(node.id, st, "Pattern");
-  if (node.init) { c(node.init, st, "Expression"); }
-};
-
-base.Function = function (node, st, c) {
-  if (node.id) { c(node.id, st, "Pattern"); }
-  for (var i = 0, list = node.params; i < list.length; i += 1)
-    {
-    var param = list[i];
-
-    c(param, st, "Pattern");
-  }
-  c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody");
-};
-// FIXME drop these node types in next major version
-// (They are awkward, and in ES6 every block can be a scope.)
-base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); };
-base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); };
-
-base.Pattern = function (node, st, c) {
-  if (node.type == "Identifier")
-    { c(node, st, "VariablePattern"); }
-  else if (node.type == "MemberExpression")
-    { c(node, st, "MemberPattern"); }
-  else
-    { c(node, st); }
-};
-base.VariablePattern = ignore;
-base.MemberPattern = skipThrough;
-base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); };
-base.ArrayPattern = function (node, st, c) {
-  for (var i = 0, list = node.elements; i < list.length; i += 1) {
-    var elt = list[i];
-
-    if (elt) { c(elt, st, "Pattern"); }
-  }
-};
-base.ObjectPattern = function (node, st, c) {
-  for (var i = 0, list = node.properties; i < list.length; i += 1) {
-    var prop = list[i];
-
-    if (prop.type === "Property") {
-      if (prop.computed) { c(prop.key, st, "Expression"); }
-      c(prop.value, st, "Pattern");
-    } else if (prop.type === "RestElement") {
-      c(prop.argument, st, "Pattern");
-    }
-  }
-};
-
-base.Expression = skipThrough;
-base.ThisExpression = base.Super = base.MetaProperty = ignore;
-base.ArrayExpression = function (node, st, c) {
-  for (var i = 0, list = node.elements; i < list.length; i += 1) {
-    var elt = list[i];
-
-    if (elt) { c(elt, st, "Expression"); }
-  }
-};
-base.ObjectExpression = function (node, st, c) {
-  for (var i = 0, list = node.properties; i < list.length; i += 1)
-    {
-    var prop = list[i];
-
-    c(prop, st);
-  }
-};
-base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;
-base.SequenceExpression = base.TemplateLiteral = function (node, st, c) {
-  for (var i = 0, list = node.expressions; i < list.length; i += 1)
-    {
-    var expr = list[i];
-
-    c(expr, st, "Expression");
-  }
-};
-base.UnaryExpression = base.UpdateExpression = function (node, st, c) {
-  c(node.argument, st, "Expression");
-};
-base.BinaryExpression = base.LogicalExpression = function (node, st, c) {
-  c(node.left, st, "Expression");
-  c(node.right, st, "Expression");
-};
-base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {
-  c(node.left, st, "Pattern");
-  c(node.right, st, "Expression");
-};
-base.ConditionalExpression = function (node, st, c) {
-  c(node.test, st, "Expression");
-  c(node.consequent, st, "Expression");
-  c(node.alternate, st, "Expression");
-};
-base.NewExpression = base.CallExpression = function (node, st, c) {
-  c(node.callee, st, "Expression");
-  if (node.arguments)
-    { for (var i = 0, list = node.arguments; i < list.length; i += 1)
-      {
-        var arg = list[i];
-
-        c(arg, st, "Expression");
-      } }
-};
-base.MemberExpression = function (node, st, c) {
-  c(node.object, st, "Expression");
-  if (node.computed) { c(node.property, st, "Expression"); }
-};
-base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
-  if (node.declaration)
-    { c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression"); }
-  if (node.source) { c(node.source, st, "Expression"); }
-};
-base.ExportAllDeclaration = function (node, st, c) {
-  c(node.source, st, "Expression");
-};
-base.ImportDeclaration = function (node, st, c) {
-  for (var i = 0, list = node.specifiers; i < list.length; i += 1)
-    {
-    var spec = list[i];
-
-    c(spec, st);
-  }
-  c(node.source, st, "Expression");
-};
-base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore;
-
-base.TaggedTemplateExpression = function (node, st, c) {
-  c(node.tag, st, "Expression");
-  c(node.quasi, st, "Expression");
-};
-base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); };
-base.Class = function (node, st, c) {
-  if (node.id) { c(node.id, st, "Pattern"); }
-  if (node.superClass) { c(node.superClass, st, "Expression"); }
-  c(node.body, st);
-};
-base.ClassBody = function (node, st, c) {
-  for (var i = 0, list = node.body; i < list.length; i += 1)
-    {
-    var elt = list[i];
-
-    c(elt, st);
-  }
-};
-base.MethodDefinition = base.Property = function (node, st, c) {
-  if (node.computed) { c(node.key, st, "Expression"); }
-  c(node.value, st, "Expression");
-};
-
-exports.simple = simple;
-exports.ancestor = ancestor;
-exports.recursive = recursive;
-exports.full = full;
-exports.fullAncestor = fullAncestor;
-exports.findNodeAt = findNodeAt;
-exports.findNodeAround = findNodeAround;
-exports.findNodeAfter = findNodeAfter;
-exports.findNodeBefore = findNodeBefore;
-exports.make = make;
-exports.base = base;
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-})));

+ 0 - 341
ParticleFilter/node_modules/acorn/package.json

@@ -1,341 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "acorn",
-        "raw": "acorn@^5.0.0",
-        "rawSpec": "^5.0.0",
-        "scope": null,
-        "spec": ">=5.0.0 <6.0.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/falafel"
-    ]
-  ],
-  "_from": "acorn@>=5.0.0 <6.0.0",
-  "_id": "acorn@5.6.1",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/acorn",
-  "_nodeVersion": "10.0.0",
-  "_npmOperationalInternal": {
-    "host": "s3://npm-registry-packages",
-    "tmp": "tmp/acorn_5.6.1_1527839357747_0.6800429104111891"
-  },
-  "_npmUser": {
-    "email": "marijnh@gmail.com",
-    "name": "marijn"
-  },
-  "_npmVersion": "6.0.0",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "acorn",
-    "raw": "acorn@^5.0.0",
-    "rawSpec": "^5.0.0",
-    "scope": null,
-    "spec": ">=5.0.0 <6.0.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/falafel"
-  ],
-  "_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz",
-  "_shasum": "c9e50c3e3717cf897f1b071ceadbb543bbc0a8d4",
-  "_shrinkwrap": null,
-  "_spec": "acorn@^5.0.0",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/falafel",
-  "bin": {
-    "acorn": "./bin/acorn"
-  },
-  "bugs": {
-    "url": "https://github.com/acornjs/acorn/issues"
-  },
-  "contributors": [
-    {
-      "name": "List of Acorn contributors. Updated before every release."
-    },
-    {
-      "name": "Adrian Heine"
-    },
-    {
-      "name": "Adrian Rakovsky"
-    },
-    {
-      "name": "Alistair Braidwood"
-    },
-    {
-      "name": "Amila Welihinda"
-    },
-    {
-      "name": "Andres Suarez"
-    },
-    {
-      "name": "Angelo"
-    },
-    {
-      "name": "Aparajita Fishman"
-    },
-    {
-      "name": "Arian Stolwijk"
-    },
-    {
-      "name": "Artem Govorov"
-    },
-    {
-      "name": "Boopesh Mahendran"
-    },
-    {
-      "name": "Bradley Heinz"
-    },
-    {
-      "name": "Brandon Mills"
-    },
-    {
-      "name": "Charles Hughes"
-    },
-    {
-      "name": "Charmander"
-    },
-    {
-      "name": "Chris McKnight"
-    },
-    {
-      "name": "Conrad Irwin"
-    },
-    {
-      "name": "Daniel Tschinder"
-    },
-    {
-      "name": "David Bonnet"
-    },
-    {
-      "name": "Domenico Matteo"
-    },
-    {
-      "name": "ehmicky"
-    },
-    {
-      "name": "Eugene Obrezkov"
-    },
-    {
-      "name": "Felix Maier"
-    },
-    {
-      "name": "Forbes Lindesay"
-    },
-    {
-      "name": "Gilad Peleg"
-    },
-    {
-      "name": "impinball"
-    },
-    {
-      "name": "Ingvar Stepanyan"
-    },
-    {
-      "name": "Jackson Ray Hamilton"
-    },
-    {
-      "name": "Jesse McCarthy"
-    },
-    {
-      "name": "Jiaxing Wang"
-    },
-    {
-      "name": "Joel Kemp"
-    },
-    {
-      "name": "Johannes Herr"
-    },
-    {
-      "name": "John-David Dalton"
-    },
-    {
-      "name": "Jordan Klassen"
-    },
-    {
-      "name": "Jürg Lehni"
-    },
-    {
-      "name": "Kai Cataldo"
-    },
-    {
-      "name": "keeyipchan"
-    },
-    {
-      "name": "Keheliya Gallaba"
-    },
-    {
-      "name": "Kevin Irish"
-    },
-    {
-      "name": "Kevin Kwok"
-    },
-    {
-      "name": "krator"
-    },
-    {
-      "name": "laosb"
-    },
-    {
-      "name": "Marek"
-    },
-    {
-      "name": "Marijn Haverbeke"
-    },
-    {
-      "name": "Martin Carlberg"
-    },
-    {
-      "name": "Mat Garcia"
-    },
-    {
-      "name": "Mathias Bynens"
-    },
-    {
-      "name": "Mathieu 'p01' Henri"
-    },
-    {
-      "name": "Matthew Bastien"
-    },
-    {
-      "name": "Max Schaefer"
-    },
-    {
-      "name": "Max Zerzouri"
-    },
-    {
-      "name": "Mihai Bazon"
-    },
-    {
-      "name": "Mike Rennie"
-    },
-    {
-      "name": "naoh"
-    },
-    {
-      "name": "Nicholas C. Zakas"
-    },
-    {
-      "name": "Nick Fitzgerald"
-    },
-    {
-      "name": "Olivier Thomann"
-    },
-    {
-      "name": "Oskar Schöldström"
-    },
-    {
-      "name": "Paul Harper"
-    },
-    {
-      "name": "Peter Rust"
-    },
-    {
-      "name": "PlNG"
-    },
-    {
-      "name": "Prayag Verma"
-    },
-    {
-      "name": "ReadmeCritic"
-    },
-    {
-      "name": "r-e-d"
-    },
-    {
-      "name": "Richard Gibson"
-    },
-    {
-      "name": "Rich Harris"
-    },
-    {
-      "name": "Sebastian McKenzie"
-    },
-    {
-      "name": "Shahar Soel"
-    },
-    {
-      "name": "Sheel Bedi"
-    },
-    {
-      "name": "Simen Bekkhus"
-    },
-    {
-      "name": "Teddy Katz"
-    },
-    {
-      "name": "Timothy Gu"
-    },
-    {
-      "name": "Toru Nagashima"
-    },
-    {
-      "name": "Victor Homyakov"
-    },
-    {
-      "name": "Wexpo Lyu"
-    },
-    {
-      "name": "zsjforcn"
-    }
-  ],
-  "dependencies": {},
-  "description": "ECMAScript parser",
-  "devDependencies": {
-    "eslint": "^4.10.0",
-    "eslint-config-standard": "^10.2.1",
-    "eslint-plugin-import": "^2.2.0",
-    "eslint-plugin-node": "^5.2.1",
-    "eslint-plugin-promise": "^3.5.0",
-    "eslint-plugin-standard": "^3.0.1",
-    "rollup": "^0.45.0",
-    "rollup-plugin-buble": "^0.16.0",
-    "test262": "git+https://github.com/tc39/test262.git#3bfad28cc302fd4455badcfcbca7c5bb7ce41a72",
-    "test262-parser-runner": "^0.4.0",
-    "unicode-10.0.0": "^0.7.5"
-  },
-  "directories": {},
-  "dist": {
-    "fileCount": 16,
-    "integrity": "sha512-XH4o5BK5jmw9PzSGK7mNf+/xV+mPxQxGZoeC36OVsJZYV77JAG9NnI7T90hoUpI/C1TOfXWTvugRdZ9ZR3iE2Q==",
-    "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEPp/CRA9TVsSAnZWagAAjM4P/0dyHAOtDDMQ8ww07KM2\nDTAOKuDqVVZhgQFHyenCkyqTzJGqeI7YPtMShqCfPHRfYae5JSw/CdTsZ133\nw61i9ZCUsCc/9dDlQ34ziDFTy/c8revVDfYSD69y+KilN4GqGrnUlnlFt1c6\n8Zzi3x6RplopgDppPeXUfI3WErXhMAa8M+RKKNbEie7JFDevc+KcrDkLa/cM\nJN9EmNKLaOJd8r1Ela6CvlYgocv6YS7o9Y3thrUGFaXbDUFkz6kzfbQAP0/X\nHjGGPRN+hzcfTtq25RCpV7840hRqVl/RMzIv+f4+D1f7CR471K/714WtnJKf\ntVFNnr18a/NtRaCGbcBym7iV+C9XyfrcE8k3+kSOd7BT1IUU6YcH84H83TNE\n9tfbkANGJTbxHZcbtx91LmuM+t+MM/EycQiLpTF5ouecsafq0G50ZwYgwO6T\nCSHFB6AZUJD6ECCkK9pBE8MFSpCtEwKe9NMdlyUm6jLNDp3Flqbn+oh4InzG\neYjuRBh+cj039MgoIpg1RndKPBEuXdk13Scooyitwx6Kz8pG/6SnGAq1ahsP\n4xsgc3DWK1OQ1gcKe7efuTiww/2mHzt5MISYhNApKMX/ygwryEhVHte3Rku0\nCiX+/pq+srIK0XtrTsm4ET9Tizvx+EnEXgzsvjeGmw9x3YyKpE0P3d/phep8\nbdVO\r\n=XLM/\r\n-----END PGP SIGNATURE-----\r\n",
-    "shasum": "c9e50c3e3717cf897f1b071ceadbb543bbc0a8d4",
-    "tarball": "https://registry.npmjs.org/acorn/-/acorn-5.6.1.tgz",
-    "unpackedSize": 562838
-  },
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "gitHead": "690cfc78b38ff7f4914dccf3f50b0b95a2bcb550",
-  "homepage": "https://github.com/acornjs/acorn",
-  "license": "MIT",
-  "main": "dist/acorn.js",
-  "maintainers": [
-    {
-      "email": "marijnh@gmail.com",
-      "name": "marijn"
-    }
-  ],
-  "module": "dist/acorn.es.js",
-  "name": "acorn",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/acornjs/acorn.git"
-  },
-  "scripts": {
-    "build": "npm run build:main && npm run build:walk && npm run build:loose && npm run build:bin",
-    "build:bin": "rollup -c rollup/config.bin.js",
-    "build:loose": "rollup -c rollup/config.loose.js && rollup -c rollup/config.loose_es.js",
-    "build:main": "rollup -c rollup/config.main.js",
-    "build:walk": "rollup -c rollup/config.walk.js",
-    "lint": "eslint src/",
-    "prepare": "npm test",
-    "pretest": "npm run build:main && npm run build:loose",
-    "test": "node test/run.js && node test/lint.js",
-    "test:test262": "node bin/run_test262.js"
-  },
-  "version": "5.6.1"
-}

+ 0 - 58
ParticleFilter/node_modules/amdefine/LICENSE

@@ -1,58 +0,0 @@
-amdefine is released under two licenses: new BSD, and MIT. You may pick the
-license that best suits your development needs. The text of both licenses are
-provided below.
-
-
-The "New" BSD License:
-----------------------
-
-Copyright (c) 2011-2016, The Dojo Foundation
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-  * Neither the name of the Dojo Foundation nor the names of its contributors
-    may be used to endorse or promote products derived from this software
-    without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-MIT License
------------
-
-Copyright (c) 2011-2016, The Dojo Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 171
ParticleFilter/node_modules/amdefine/README.md

@@ -1,171 +0,0 @@
-# amdefine
-
-A module that can be used to implement AMD's define() in Node. This allows you
-to code to the AMD API and have the module work in node programs without
-requiring those other programs to use AMD.
-
-## Usage
-
-**1)** Update your package.json to indicate amdefine as a dependency:
-
-```javascript
-    "dependencies": {
-        "amdefine": ">=0.1.0"
-    }
-```
-
-Then run `npm install` to get amdefine into your project.
-
-**2)** At the top of each module that uses define(), place this code:
-
-```javascript
-if (typeof define !== 'function') { var define = require('amdefine')(module) }
-```
-
-**Only use these snippets** when loading amdefine. If you preserve the basic structure,
-with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).
-
-You can add spaces, line breaks and even require amdefine with a local path, but
-keep the rest of the structure to get the stripping behavior.
-
-As you may know, because `if` statements in JavaScript don't have their own scope, the var
-declaration in the above snippet is made whether the `if` expression is truthy or not. If
-RequireJS is loaded then the declaration is superfluous because `define` is already already
-declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`
-declarations of the same variable in the same scope gracefully.
-
-If you want to deliver amdefine.js with your code rather than specifying it as a dependency
-with npm, then just download the latest release and refer to it using a relative path:
-
-[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)
-
-### amdefine/intercept
-
-Consider this very experimental.
-
-Instead of pasting the piece of text for the amdefine setup of a `define`
-variable in each module you create or consume, you can use `amdefine/intercept`
-instead. It will automatically insert the above snippet in each .js file loaded
-by Node.
-
-**Warning**: you should only use this if you are creating an application that
-is consuming AMD style defined()'d modules that are distributed via npm and want
-to run that code in Node.
-
-For library code where you are not sure if it will be used by others in Node or
-in the browser, then explicitly depending on amdefine and placing the code
-snippet above is suggested path, instead of using `amdefine/intercept`. The
-intercept module affects all .js files loaded in the Node app, and it is
-inconsiderate to modify global state like that unless you are also controlling
-the top level app.
-
-#### Why distribute AMD-style modules via npm?
-
-npm has a lot of weaknesses for front-end use (installed layout is not great,
-should have better support for the `baseUrl + moduleID + '.js' style of loading,
-single file JS installs), but some people want a JS package manager and are
-willing to live with those constraints. If that is you, but still want to author
-in AMD style modules to get dynamic require([]), better direct source usage and
-powerful loader plugin support in the browser, then this tool can help.
-
-#### amdefine/intercept usage
-
-Just require it in your top level app module (for example index.js, server.js):
-
-```javascript
-require('amdefine/intercept');
-```
-
-The module does not return a value, so no need to assign the result to a local
-variable.
-
-Then just require() code as you normally would with Node's require(). Any .js
-loaded after the intercept require will have the amdefine check injected in
-the .js source as it is loaded. It does not modify the source on disk, just
-prepends some content to the text of the module as it is loaded by Node.
-
-#### How amdefine/intercept works
-
-It overrides the `Module._extensions['.js']` in Node to automatically prepend
-the amdefine snippet above. So, it will affect any .js file loaded by your
-app.
-
-## define() usage
-
-It is best if you use the anonymous forms of define() in your module:
-
-```javascript
-define(function (require) {
-    var dependency = require('dependency');
-});
-```
-
-or
-
-```javascript
-define(['dependency'], function (dependency) {
-
-});
-```
-
-## RequireJS optimizer integration. <a name="optimizer"></name>
-
-Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)
-will have support for stripping the `if (typeof define !== 'function')` check
-mentioned above, so you can include this snippet for code that runs in the
-browser, but avoid taking the cost of the if() statement once the code is
-optimized for deployment.
-
-## Node 0.4 Support
-
-If you want to support Node 0.4, then add `require` as the second parameter to amdefine:
-
-```javascript
-//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.
-if (typeof define !== 'function') { var define = require('amdefine')(module, require) }
-```
-
-## Limitations
-
-### Synchronous vs Asynchronous
-
-amdefine creates a define() function that is callable by your code. It will
-execute and trace dependencies and call the factory function *synchronously*,
-to keep the behavior in line with Node's synchronous dependency tracing.
-
-The exception: calling AMD's callback-style require() from inside a factory
-function. The require callback is called on process.nextTick():
-
-```javascript
-define(function (require) {
-    require(['a'], function(a) {
-        //'a' is loaded synchronously, but
-        //this callback is called on process.nextTick().
-    });
-});
-```
-
-### Loader Plugins
-
-Loader plugins are supported as long as they call their load() callbacks
-synchronously. So ones that do network requests will not work. However plugins
-like [text](http://requirejs.org/docs/api.html#text) can load text files locally.
-
-The plugin API's `load.fromText()` is **not supported** in amdefine, so this means
-transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)
-will not work. This may be fixable, but it is a bit complex, and I do not have
-enough node-fu to figure it out yet. See the source for amdefine.js if you want
-to get an idea of the issues involved.
-
-## Tests
-
-To run the tests, cd to **tests** and run:
-
-```
-node all.js
-node all-intercept.js
-```
-
-## License
-
-New BSD and MIT. Check the LICENSE file for all the details.

+ 0 - 301
ParticleFilter/node_modules/amdefine/amdefine.js

@@ -1,301 +0,0 @@
-/** vim: et:ts=4:sw=4:sts=4
- * @license amdefine 1.0.1 Copyright (c) 2011-2016, The Dojo Foundation All Rights Reserved.
- * Available via the MIT or new BSD license.
- * see: http://github.com/jrburke/amdefine for details
- */
-
-/*jslint node: true */
-/*global module, process */
-'use strict';
-
-/**
- * Creates a define for node.
- * @param {Object} module the "module" object that is defined by Node for the
- * current module.
- * @param {Function} [requireFn]. Node's require function for the current module.
- * It only needs to be passed in Node versions before 0.5, when module.require
- * did not exist.
- * @returns {Function} a define function that is usable for the current node
- * module.
- */
-function amdefine(module, requireFn) {
-    'use strict';
-    var defineCache = {},
-        loaderCache = {},
-        alreadyCalled = false,
-        path = require('path'),
-        makeRequire, stringRequire;
-
-    /**
-     * Trims the . and .. from an array of path segments.
-     * It will keep a leading path segment if a .. will become
-     * the first path segment, to help with module name lookups,
-     * which act like paths, but can be remapped. But the end result,
-     * all paths that use this function should look normalized.
-     * NOTE: this method MODIFIES the input array.
-     * @param {Array} ary the array of path segments.
-     */
-    function trimDots(ary) {
-        var i, part;
-        for (i = 0; ary[i]; i+= 1) {
-            part = ary[i];
-            if (part === '.') {
-                ary.splice(i, 1);
-                i -= 1;
-            } else if (part === '..') {
-                if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
-                    //End of the line. Keep at least one non-dot
-                    //path segment at the front so it can be mapped
-                    //correctly to disk. Otherwise, there is likely
-                    //no path mapping for a path starting with '..'.
-                    //This can still fail, but catches the most reasonable
-                    //uses of ..
-                    break;
-                } else if (i > 0) {
-                    ary.splice(i - 1, 2);
-                    i -= 2;
-                }
-            }
-        }
-    }
-
-    function normalize(name, baseName) {
-        var baseParts;
-
-        //Adjust any relative paths.
-        if (name && name.charAt(0) === '.') {
-            //If have a base name, try to normalize against it,
-            //otherwise, assume it is a top-level require that will
-            //be relative to baseUrl in the end.
-            if (baseName) {
-                baseParts = baseName.split('/');
-                baseParts = baseParts.slice(0, baseParts.length - 1);
-                baseParts = baseParts.concat(name.split('/'));
-                trimDots(baseParts);
-                name = baseParts.join('/');
-            }
-        }
-
-        return name;
-    }
-
-    /**
-     * Create the normalize() function passed to a loader plugin's
-     * normalize method.
-     */
-    function makeNormalize(relName) {
-        return function (name) {
-            return normalize(name, relName);
-        };
-    }
-
-    function makeLoad(id) {
-        function load(value) {
-            loaderCache[id] = value;
-        }
-
-        load.fromText = function (id, text) {
-            //This one is difficult because the text can/probably uses
-            //define, and any relative paths and requires should be relative
-            //to that id was it would be found on disk. But this would require
-            //bootstrapping a module/require fairly deeply from node core.
-            //Not sure how best to go about that yet.
-            throw new Error('amdefine does not implement load.fromText');
-        };
-
-        return load;
-    }
-
-    makeRequire = function (systemRequire, exports, module, relId) {
-        function amdRequire(deps, callback) {
-            if (typeof deps === 'string') {
-                //Synchronous, single module require('')
-                return stringRequire(systemRequire, exports, module, deps, relId);
-            } else {
-                //Array of dependencies with a callback.
-
-                //Convert the dependencies to modules.
-                deps = deps.map(function (depName) {
-                    return stringRequire(systemRequire, exports, module, depName, relId);
-                });
-
-                //Wait for next tick to call back the require call.
-                if (callback) {
-                    process.nextTick(function () {
-                        callback.apply(null, deps);
-                    });
-                }
-            }
-        }
-
-        amdRequire.toUrl = function (filePath) {
-            if (filePath.indexOf('.') === 0) {
-                return normalize(filePath, path.dirname(module.filename));
-            } else {
-                return filePath;
-            }
-        };
-
-        return amdRequire;
-    };
-
-    //Favor explicit value, passed in if the module wants to support Node 0.4.
-    requireFn = requireFn || function req() {
-        return module.require.apply(module, arguments);
-    };
-
-    function runFactory(id, deps, factory) {
-        var r, e, m, result;
-
-        if (id) {
-            e = loaderCache[id] = {};
-            m = {
-                id: id,
-                uri: __filename,
-                exports: e
-            };
-            r = makeRequire(requireFn, e, m, id);
-        } else {
-            //Only support one define call per file
-            if (alreadyCalled) {
-                throw new Error('amdefine with no module ID cannot be called more than once per file.');
-            }
-            alreadyCalled = true;
-
-            //Use the real variables from node
-            //Use module.exports for exports, since
-            //the exports in here is amdefine exports.
-            e = module.exports;
-            m = module;
-            r = makeRequire(requireFn, e, m, module.id);
-        }
-
-        //If there are dependencies, they are strings, so need
-        //to convert them to dependency values.
-        if (deps) {
-            deps = deps.map(function (depName) {
-                return r(depName);
-            });
-        }
-
-        //Call the factory with the right dependencies.
-        if (typeof factory === 'function') {
-            result = factory.apply(m.exports, deps);
-        } else {
-            result = factory;
-        }
-
-        if (result !== undefined) {
-            m.exports = result;
-            if (id) {
-                loaderCache[id] = m.exports;
-            }
-        }
-    }
-
-    stringRequire = function (systemRequire, exports, module, id, relId) {
-        //Split the ID by a ! so that
-        var index = id.indexOf('!'),
-            originalId = id,
-            prefix, plugin;
-
-        if (index === -1) {
-            id = normalize(id, relId);
-
-            //Straight module lookup. If it is one of the special dependencies,
-            //deal with it, otherwise, delegate to node.
-            if (id === 'require') {
-                return makeRequire(systemRequire, exports, module, relId);
-            } else if (id === 'exports') {
-                return exports;
-            } else if (id === 'module') {
-                return module;
-            } else if (loaderCache.hasOwnProperty(id)) {
-                return loaderCache[id];
-            } else if (defineCache[id]) {
-                runFactory.apply(null, defineCache[id]);
-                return loaderCache[id];
-            } else {
-                if(systemRequire) {
-                    return systemRequire(originalId);
-                } else {
-                    throw new Error('No module with ID: ' + id);
-                }
-            }
-        } else {
-            //There is a plugin in play.
-            prefix = id.substring(0, index);
-            id = id.substring(index + 1, id.length);
-
-            plugin = stringRequire(systemRequire, exports, module, prefix, relId);
-
-            if (plugin.normalize) {
-                id = plugin.normalize(id, makeNormalize(relId));
-            } else {
-                //Normalize the ID normally.
-                id = normalize(id, relId);
-            }
-
-            if (loaderCache[id]) {
-                return loaderCache[id];
-            } else {
-                plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
-
-                return loaderCache[id];
-            }
-        }
-    };
-
-    //Create a define function specific to the module asking for amdefine.
-    function define(id, deps, factory) {
-        if (Array.isArray(id)) {
-            factory = deps;
-            deps = id;
-            id = undefined;
-        } else if (typeof id !== 'string') {
-            factory = id;
-            id = deps = undefined;
-        }
-
-        if (deps && !Array.isArray(deps)) {
-            factory = deps;
-            deps = undefined;
-        }
-
-        if (!deps) {
-            deps = ['require', 'exports', 'module'];
-        }
-
-        //Set up properties for this module. If an ID, then use
-        //internal cache. If no ID, then use the external variables
-        //for this node module.
-        if (id) {
-            //Put the module in deep freeze until there is a
-            //require call for it.
-            defineCache[id] = [id, deps, factory];
-        } else {
-            runFactory(id, deps, factory);
-        }
-    }
-
-    //define.require, which has access to all the values in the
-    //cache. Useful for AMD modules that all have IDs in the file,
-    //but need to finally export a value to node based on one of those
-    //IDs.
-    define.require = function (id) {
-        if (loaderCache[id]) {
-            return loaderCache[id];
-        }
-
-        if (defineCache[id]) {
-            runFactory.apply(null, defineCache[id]);
-            return loaderCache[id];
-        }
-    };
-
-    define.amd = {};
-
-    return define;
-}
-
-module.exports = amdefine;

+ 0 - 36
ParticleFilter/node_modules/amdefine/intercept.js

@@ -1,36 +0,0 @@
-/*jshint node: true */
-var inserted,
-    Module = require('module'),
-    fs = require('fs'),
-    existingExtFn = Module._extensions['.js'],
-    amdefineRegExp = /amdefine\.js/;
-
-inserted  = "if (typeof define !== 'function') {var define = require('amdefine')(module)}";
-
-//From the node/lib/module.js source:
-function stripBOM(content) {
-    // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
-    // because the buffer-to-string conversion in `fs.readFileSync()`
-    // translates it to FEFF, the UTF-16 BOM.
-    if (content.charCodeAt(0) === 0xFEFF) {
-        content = content.slice(1);
-    }
-    return content;
-}
-
-//Also adapted from the node/lib/module.js source:
-function intercept(module, filename) {
-    var content = stripBOM(fs.readFileSync(filename, 'utf8'));
-
-    if (!amdefineRegExp.test(module.id)) {
-        content = inserted + content;
-    }
-
-    module._compile(content, filename);
-}
-
-intercept._id = 'amdefine/intercept';
-
-if (!existingExtFn._id || existingExtFn._id !== intercept._id) {
-    Module._extensions['.js'] = intercept;
-}

+ 0 - 85
ParticleFilter/node_modules/amdefine/package.json

@@ -1,85 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "amdefine",
-        "raw": "amdefine@>=0.0.4",
-        "rawSpec": ">=0.0.4",
-        "scope": null,
-        "spec": ">=0.0.4",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/source-map"
-    ]
-  ],
-  "_from": "amdefine@>=0.0.4",
-  "_id": "amdefine@1.0.1",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/amdefine",
-  "_nodeVersion": "6.7.0",
-  "_npmOperationalInternal": {
-    "host": "packages-18-east.internal.npmjs.com",
-    "tmp": "tmp/amdefine-1.0.1.tgz_1478062849665_0.19916908955201507"
-  },
-  "_npmUser": {
-    "email": "jrburke@gmail.com",
-    "name": "jrburke"
-  },
-  "_npmVersion": "3.10.3",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "amdefine",
-    "raw": "amdefine@>=0.0.4",
-    "rawSpec": ">=0.0.4",
-    "scope": null,
-    "spec": ">=0.0.4",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform/source-map"
-  ],
-  "_resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-  "_shasum": "4a5282ac164729e93619bcfd3ad151f817ce91f5",
-  "_shrinkwrap": null,
-  "_spec": "amdefine@>=0.0.4",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/source-map",
-  "author": {
-    "email": "jrburke@gmail.com",
-    "name": "James Burke",
-    "url": "http://github.com/jrburke"
-  },
-  "bugs": {
-    "url": "https://github.com/jrburke/amdefine/issues"
-  },
-  "dependencies": {},
-  "description": "Provide AMD's define() API for declaring modules in the AMD format",
-  "devDependencies": {},
-  "directories": {},
-  "dist": {
-    "shasum": "4a5282ac164729e93619bcfd3ad151f817ce91f5",
-    "tarball": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
-  },
-  "engines": {
-    "node": ">=0.4.2"
-  },
-  "gitHead": "e59edc9da24404ec7937098e3992f8fb0e260be7",
-  "homepage": "http://github.com/jrburke/amdefine",
-  "license": "BSD-3-Clause OR MIT",
-  "main": "./amdefine.js",
-  "maintainers": [
-    {
-      "email": "jrburke@gmail.com",
-      "name": "jrburke"
-    }
-  ],
-  "name": "amdefine",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/jrburke/amdefine.git"
-  },
-  "scripts": {},
-  "version": "1.0.1"
-}

+ 0 - 21
ParticleFilter/node_modules/ast-transform/LICENSE.md

@@ -1,21 +0,0 @@
-## The MIT License (MIT) ##
-
-Copyright (c) 2014 Hugh Kennedy
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 53
ParticleFilter/node_modules/ast-transform/README.md

@@ -1,53 +0,0 @@
-# ast-transform [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/ast-transform&title=ast-transform&description=hughsk/ast-transform%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](http://github.com/hughsk/stability-badges) #
-
-Convenience wrapper for performing AST transformations with
-[browserify](http://browserify.org/) transform streams. Note that it doesn't
-handle source maps nicely, though pull requests are welcome!
-
-## Usage ##
-
-[![ast-transform](https://nodei.co/npm/ast-transform.png?mini=true)](https://nodei.co/npm/ast-transform)
-
-### `ast(transform[, opts])` ###
-
-Where `transform` is a function that takes a filename and returns a function,
-e.g.:
-
-``` javascript
-var replace = require('replace-method')
-var ast = require('ast-transform')
-var path = require('path')
-
-module.exports = ast(function (file) {
-  if (path.extname(file) !== '.js') return
-
-  return function(ast, done) {
-    // replace require calls with
-    // strings for some reason
-    replace(ast)(['require'], function(node) {
-      return { type: 'Literal', value: 'replaced!' }
-    })
-
-    done()
-  }
-})
-```
-
-Note that you can return a falsey value instead of a function to bail the
-stream early and avoid the parse/deparse overhead. Here's an example of using
-the above with browserify:
-
-``` javascript
-var browserify = require('browserify')
-var example = require('./example')
-var fs = require('fs')
-
-browserify('./index.js')
-  .transform(example)
-  .bundle()
-  .pipe(fs.createWriteStream(__filename + '/bundle.js'))
-```
-
-## License ##
-
-MIT. See [LICENSE.md](http://github.com/hughsk/ast-transform/blob/master/LICENSE.md) for details.

+ 0 - 43
ParticleFilter/node_modules/ast-transform/index.js

@@ -1,43 +0,0 @@
-var codegen = require('escodegen')
-var esprima = require('esprima')
-var through = require('through')
-
-module.exports = astTransform
-
-function astTransform(transform, opts) {
-  opts = opts || {}
-
-  return function(file) {
-    var stream = through(write, flush)
-    var tr     = transform(file)
-    var buffer = []
-
-    if (!tr) return through()
-
-    return stream
-
-    function write(data) { buffer.push(data) }
-    function flush() {
-      buffer = buffer.join('')
-
-      try {
-        var ast = esprima.parse(buffer, opts)
-      } catch(e) {
-        return stream.emit('error', e)
-      }
-
-      tr(ast, function(err, updated) {
-        if (err) return stream.emit('error', err)
-
-        try {
-          var code = codegen.generate(updated || ast)
-        } catch(e) {
-          return stream.emit('error', e)
-        }
-
-        stream.queue(code.code || code)
-        stream.queue(null)
-      })
-    }
-  }
-}

+ 0 - 1
ParticleFilter/node_modules/ast-transform/node_modules/.bin/escodegen

@@ -1 +0,0 @@
-../escodegen/bin/escodegen.js

+ 0 - 1
ParticleFilter/node_modules/ast-transform/node_modules/.bin/esgenerate

@@ -1 +0,0 @@
-../escodegen/bin/esgenerate.js

+ 0 - 1
ParticleFilter/node_modules/ast-transform/node_modules/.bin/esparse

@@ -1 +0,0 @@
-../esprima/bin/esparse.js

+ 0 - 1
ParticleFilter/node_modules/ast-transform/node_modules/.bin/esvalidate

@@ -1 +0,0 @@
-../esprima/bin/esvalidate.js

+ 0 - 20
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/.jshintrc

@@ -1,20 +0,0 @@
-{
-    "curly": true,
-    "eqeqeq": true,
-    "immed": true,
-    "indent": 4,
-    "eqnull": true,
-    "latedef": true,
-    "noarg": true,
-    "noempty": true,
-    "quotmark": "single",
-    "undef": true,
-    "unused": "vars",
-    "strict": true,
-    "trailing": true,
-    "validthis": true,
-
-    "onevar": true,
-
-    "node": true
-}

+ 0 - 19
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/LICENSE.BSD

@@ -1,19 +0,0 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 27
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/LICENSE.source-map

@@ -1,27 +0,0 @@
-Copyright (c) 2009-2011, Mozilla Foundation and contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-* Neither the names of the Mozilla Foundation nor the names of project
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 112
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/README.md

@@ -1,112 +0,0 @@
-
-### Escodegen [![Build Status](https://secure.travis-ci.org/Constellation/escodegen.png)](http://travis-ci.org/Constellation/escodegen) [![Build Status](https://drone.io/github.com/Constellation/escodegen/status.png)](https://drone.io/github.com/Constellation/escodegen/latest)
-
-Escodegen ([escodegen](http://github.com/Constellation/escodegen)) is
-[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
-(also popularly known as [JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript))
-code generator from [Parser API](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) AST.
-See [online generator demo](http://constellation.github.com/escodegen/demo/index.html).
-
-
-### Install
-
-Escodegen can be used in a web browser:
-
-    <script src="escodegen.browser.js"></script>
-
-escodegen.browser.js is found in tagged-revision. See Tags on GitHub.
-
-Or in a Node.js application via the package manager:
-
-    npm install escodegen
-
-### Usage
-
-A simple example: the program
-
-    escodegen.generate({
-        type: 'BinaryExpression',
-        operator: '+',
-        left: { type: 'Literal', value: 40 },
-        right: { type: 'Literal', value: 2 }
-    });
-
-produces the string `'40 + 2'`
-
-See the [API page](https://github.com/Constellation/escodegen/wiki/API) for
-options. To run the tests, execute `npm test` in the root directory.
-
-### Building browser bundle / minified browser bundle
-
-At first, executing `npm install` to install the all dev dependencies.
-After that,
-
-    npm run-script build
-
-will generate `escodegen.browser.js`, it is used on the browser environment.
-
-And,
-
-    npm run-script build-min
-
-will generate minified `escodegen.browser.min.js`.
-
-### License
-
-#### Escodegen
-
-Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation)
- (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#### source-map
-
-SourceNodeMocks has a limited interface of mozilla/source-map SourceNode implementations.
-
-Copyright (c) 2009-2011, Mozilla Foundation and contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-* Neither the names of the Mozilla Foundation nor the names of project
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 45
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/bin/escodegen.js

@@ -1,45 +0,0 @@
-#!/usr/bin/env node
-/*
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true */
-
-var fs = require('fs'),
-    path = require('path'),
-    root = path.join(path.dirname(fs.realpathSync(__filename)), '..'),
-    esprima = require('esprima'),
-    escodegen = require(root),
-    files = process.argv.splice(2);
-
-if (files.length === 0) {
-    console.log('Usage:');
-    console.log('   escodegen file.js');
-    process.exit(1);
-}
-
-files.forEach(function (filename) {
-    var content = fs.readFileSync(filename, 'utf-8');
-    console.log(escodegen.generate(esprima.parse(content)));
-});
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 45
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/bin/esgenerate.js

@@ -1,45 +0,0 @@
-#!/usr/bin/env node
-/*
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true */
-
-var fs = require('fs'),
-    path = require('path'),
-    root = path.join(path.dirname(fs.realpathSync(__filename)), '..'),
-    esprima = require('esprima'),
-    escodegen = require(root),
-    files = process.argv.splice(2);
-
-if (files.length === 0) {
-    console.log('Usage:');
-    console.log('   esgenerate file.json');
-    process.exit(1);
-}
-
-files.forEach(function (filename) {
-    var content = fs.readFileSync(filename, 'utf-8');
-    console.log(escodegen.generate(JSON.parse(content)));
-});
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 58
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/component.json

@@ -1,58 +0,0 @@
-{
-    "name": "escodegen",
-    "description": "ECMAScript code generator",
-    "homepage": "http://github.com/Constellation/escodegen",
-    "main": "escodegen.js",
-    "bin": {
-        "esgenerate": "./bin/esgenerate.js",
-        "escodegen": "./bin/escodegen.js"
-    },
-    "version": "1.2.0",
-    "engines": {
-        "node": ">=0.4.0"
-    },
-    "maintainers": [
-        {
-            "name": "Yusuke Suzuki",
-            "email": "utatane.tea@gmail.com",
-            "web": "http://github.com/Constellation"
-        }
-    ],
-    "repository": {
-        "type": "git",
-        "url": "http://github.com/Constellation/escodegen.git"
-    },
-    "dependencies": {
-        "estraverse": "~1.5.0",
-        "esutils": "~1.0.0",
-        "esprima": "~1.0.4"
-    },
-    "optionalDependencies": {},
-    "devDependencies": {
-        "esprima-moz": "*",
-        "q": "*",
-        "bower": "*",
-        "semver": "*",
-        "chai": "~1.7.2",
-        "gulp": "~3.5.0",
-        "gulp-mocha": "~0.4.1",
-        "gulp-eslint": "~0.1.2",
-        "jshint-stylish": "~0.1.5",
-        "gulp-jshint": "~1.4.0",
-        "commonjs-everywhere": "~0.9.6"
-    },
-    "licenses": [
-        {
-            "type": "BSD",
-            "url": "http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD"
-        }
-    ],
-    "scripts": {
-        "test": "gulp travis",
-        "unit-test": "gulp test",
-        "lint": "gulp lint",
-        "release": "node tools/release.js",
-        "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",
-        "build": "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js"
-    }
-}

File diff suppressed because it is too large
+ 0 - 0
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/escodegen.browser.min.js


+ 0 - 2188
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/escodegen.js

@@ -1,2188 +0,0 @@
-/*
-  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012-2013 Michael Ficarra <escodegen.copyright@michael.ficarra.me>
-  Copyright (C) 2012-2013 Mathias Bynens <mathias@qiwi.be>
-  Copyright (C) 2013 Irakli Gozalishvili <rfobic@gmail.com>
-  Copyright (C) 2012 Robert Gust-Bardon <donate@robert.gust-bardon.org>
-  Copyright (C) 2012 John Freeman <jfreeman08@gmail.com>
-  Copyright (C) 2011-2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
-  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>
-  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*global exports:true, generateStatement:true, generateExpression:true, require:true, global:true*/
-(function () {
-    'use strict';
-
-    var Syntax,
-        Precedence,
-        BinaryPrecedence,
-        SourceNode,
-        estraverse,
-        esutils,
-        isArray,
-        base,
-        indent,
-        json,
-        renumber,
-        hexadecimal,
-        quotes,
-        escapeless,
-        newline,
-        space,
-        parentheses,
-        semicolons,
-        safeConcatenation,
-        directive,
-        extra,
-        parse,
-        sourceMap,
-        FORMAT_MINIFY,
-        FORMAT_DEFAULTS;
-
-    estraverse = require('estraverse');
-    esutils = require('esutils');
-
-    Syntax = {
-        AssignmentExpression: 'AssignmentExpression',
-        ArrayExpression: 'ArrayExpression',
-        ArrayPattern: 'ArrayPattern',
-        ArrowFunctionExpression: 'ArrowFunctionExpression',
-        BlockStatement: 'BlockStatement',
-        BinaryExpression: 'BinaryExpression',
-        BreakStatement: 'BreakStatement',
-        CallExpression: 'CallExpression',
-        CatchClause: 'CatchClause',
-        ComprehensionBlock: 'ComprehensionBlock',
-        ComprehensionExpression: 'ComprehensionExpression',
-        ConditionalExpression: 'ConditionalExpression',
-        ContinueStatement: 'ContinueStatement',
-        DirectiveStatement: 'DirectiveStatement',
-        DoWhileStatement: 'DoWhileStatement',
-        DebuggerStatement: 'DebuggerStatement',
-        EmptyStatement: 'EmptyStatement',
-        ExportDeclaration: 'ExportDeclaration',
-        ExpressionStatement: 'ExpressionStatement',
-        ForStatement: 'ForStatement',
-        ForInStatement: 'ForInStatement',
-        ForOfStatement: 'ForOfStatement',
-        FunctionDeclaration: 'FunctionDeclaration',
-        FunctionExpression: 'FunctionExpression',
-        GeneratorExpression: 'GeneratorExpression',
-        Identifier: 'Identifier',
-        IfStatement: 'IfStatement',
-        Literal: 'Literal',
-        LabeledStatement: 'LabeledStatement',
-        LogicalExpression: 'LogicalExpression',
-        MemberExpression: 'MemberExpression',
-        NewExpression: 'NewExpression',
-        ObjectExpression: 'ObjectExpression',
-        ObjectPattern: 'ObjectPattern',
-        Program: 'Program',
-        Property: 'Property',
-        ReturnStatement: 'ReturnStatement',
-        SequenceExpression: 'SequenceExpression',
-        SwitchStatement: 'SwitchStatement',
-        SwitchCase: 'SwitchCase',
-        ThisExpression: 'ThisExpression',
-        ThrowStatement: 'ThrowStatement',
-        TryStatement: 'TryStatement',
-        UnaryExpression: 'UnaryExpression',
-        UpdateExpression: 'UpdateExpression',
-        VariableDeclaration: 'VariableDeclaration',
-        VariableDeclarator: 'VariableDeclarator',
-        WhileStatement: 'WhileStatement',
-        WithStatement: 'WithStatement',
-        YieldExpression: 'YieldExpression'
-    };
-
-    Precedence = {
-        Sequence: 0,
-        Yield: 1,
-        Assignment: 1,
-        Conditional: 2,
-        ArrowFunction: 2,
-        LogicalOR: 3,
-        LogicalAND: 4,
-        BitwiseOR: 5,
-        BitwiseXOR: 6,
-        BitwiseAND: 7,
-        Equality: 8,
-        Relational: 9,
-        BitwiseSHIFT: 10,
-        Additive: 11,
-        Multiplicative: 12,
-        Unary: 13,
-        Postfix: 14,
-        Call: 15,
-        New: 16,
-        Member: 17,
-        Primary: 18
-    };
-
-    BinaryPrecedence = {
-        '||': Precedence.LogicalOR,
-        '&&': Precedence.LogicalAND,
-        '|': Precedence.BitwiseOR,
-        '^': Precedence.BitwiseXOR,
-        '&': Precedence.BitwiseAND,
-        '==': Precedence.Equality,
-        '!=': Precedence.Equality,
-        '===': Precedence.Equality,
-        '!==': Precedence.Equality,
-        'is': Precedence.Equality,
-        'isnt': Precedence.Equality,
-        '<': Precedence.Relational,
-        '>': Precedence.Relational,
-        '<=': Precedence.Relational,
-        '>=': Precedence.Relational,
-        'in': Precedence.Relational,
-        'instanceof': Precedence.Relational,
-        '<<': Precedence.BitwiseSHIFT,
-        '>>': Precedence.BitwiseSHIFT,
-        '>>>': Precedence.BitwiseSHIFT,
-        '+': Precedence.Additive,
-        '-': Precedence.Additive,
-        '*': Precedence.Multiplicative,
-        '%': Precedence.Multiplicative,
-        '/': Precedence.Multiplicative
-    };
-
-    function getDefaultOptions() {
-        // default options
-        return {
-            indent: null,
-            base: null,
-            parse: null,
-            comment: false,
-            format: {
-                indent: {
-                    style: '    ',
-                    base: 0,
-                    adjustMultilineComment: false
-                },
-                newline: '\n',
-                space: ' ',
-                json: false,
-                renumber: false,
-                hexadecimal: false,
-                quotes: 'single',
-                escapeless: false,
-                compact: false,
-                parentheses: true,
-                semicolons: true,
-                safeConcatenation: false
-            },
-            moz: {
-                comprehensionExpressionStartsWithAssignment: false,
-                starlessGenerator: false,
-                parenthesizedComprehensionBlock: false
-            },
-            sourceMap: null,
-            sourceMapRoot: null,
-            sourceMapWithCode: false,
-            directive: false,
-            verbatim: null
-        };
-    }
-
-    function stringRepeat(str, num) {
-        var result = '';
-
-        for (num |= 0; num > 0; num >>>= 1, str += str) {
-            if (num & 1) {
-                result += str;
-            }
-        }
-
-        return result;
-    }
-
-    isArray = Array.isArray;
-    if (!isArray) {
-        isArray = function isArray(array) {
-            return Object.prototype.toString.call(array) === '[object Array]';
-        };
-    }
-
-    function hasLineTerminator(str) {
-        return (/[\r\n]/g).test(str);
-    }
-
-    function endsWithLineTerminator(str) {
-        var len = str.length;
-        return len && esutils.code.isLineTerminator(str.charCodeAt(len - 1));
-    }
-
-    function updateDeeply(target, override) {
-        var key, val;
-
-        function isHashObject(target) {
-            return typeof target === 'object' && target instanceof Object && !(target instanceof RegExp);
-        }
-
-        for (key in override) {
-            if (override.hasOwnProperty(key)) {
-                val = override[key];
-                if (isHashObject(val)) {
-                    if (isHashObject(target[key])) {
-                        updateDeeply(target[key], val);
-                    } else {
-                        target[key] = updateDeeply({}, val);
-                    }
-                } else {
-                    target[key] = val;
-                }
-            }
-        }
-        return target;
-    }
-
-    function generateNumber(value) {
-        var result, point, temp, exponent, pos;
-
-        if (value !== value) {
-            throw new Error('Numeric literal whose value is NaN');
-        }
-        if (value < 0 || (value === 0 && 1 / value < 0)) {
-            throw new Error('Numeric literal whose value is negative');
-        }
-
-        if (value === 1 / 0) {
-            return json ? 'null' : renumber ? '1e400' : '1e+400';
-        }
-
-        result = '' + value;
-        if (!renumber || result.length < 3) {
-            return result;
-        }
-
-        point = result.indexOf('.');
-        if (!json && result.charCodeAt(0) === 0x30  /* 0 */ && point === 1) {
-            point = 0;
-            result = result.slice(1);
-        }
-        temp = result;
-        result = result.replace('e+', 'e');
-        exponent = 0;
-        if ((pos = temp.indexOf('e')) > 0) {
-            exponent = +temp.slice(pos + 1);
-            temp = temp.slice(0, pos);
-        }
-        if (point >= 0) {
-            exponent -= temp.length - point - 1;
-            temp = +(temp.slice(0, point) + temp.slice(point + 1)) + '';
-        }
-        pos = 0;
-        while (temp.charCodeAt(temp.length + pos - 1) === 0x30  /* 0 */) {
-            --pos;
-        }
-        if (pos !== 0) {
-            exponent -= pos;
-            temp = temp.slice(0, pos);
-        }
-        if (exponent !== 0) {
-            temp += 'e' + exponent;
-        }
-        if ((temp.length < result.length ||
-                    (hexadecimal && value > 1e12 && Math.floor(value) === value && (temp = '0x' + value.toString(16)).length < result.length)) &&
-                +temp === value) {
-            result = temp;
-        }
-
-        return result;
-    }
-
-    // Generate valid RegExp expression.
-    // This function is based on https://github.com/Constellation/iv Engine
-
-    function escapeRegExpCharacter(ch, previousIsBackslash) {
-        // not handling '\' and handling \u2028 or \u2029 to unicode escape sequence
-        if ((ch & ~1) === 0x2028) {
-            return (previousIsBackslash ? 'u' : '\\u') + ((ch === 0x2028) ? '2028' : '2029');
-        } else if (ch === 10 || ch === 13) {  // \n, \r
-            return (previousIsBackslash ? '' : '\\') + ((ch === 10) ? 'n' : 'r');
-        }
-        return String.fromCharCode(ch);
-    }
-
-    function generateRegExp(reg) {
-        var match, result, flags, i, iz, ch, characterInBrack, previousIsBackslash;
-
-        result = reg.toString();
-
-        if (reg.source) {
-            // extract flag from toString result
-            match = result.match(/\/([^/]*)$/);
-            if (!match) {
-                return result;
-            }
-
-            flags = match[1];
-            result = '';
-
-            characterInBrack = false;
-            previousIsBackslash = false;
-            for (i = 0, iz = reg.source.length; i < iz; ++i) {
-                ch = reg.source.charCodeAt(i);
-
-                if (!previousIsBackslash) {
-                    if (characterInBrack) {
-                        if (ch === 93) {  // ]
-                            characterInBrack = false;
-                        }
-                    } else {
-                        if (ch === 47) {  // /
-                            result += '\\';
-                        } else if (ch === 91) {  // [
-                            characterInBrack = true;
-                        }
-                    }
-                    result += escapeRegExpCharacter(ch, previousIsBackslash);
-                    previousIsBackslash = ch === 92;  // \
-                } else {
-                    // if new RegExp("\\\n') is provided, create /\n/
-                    result += escapeRegExpCharacter(ch, previousIsBackslash);
-                    // prevent like /\\[/]/
-                    previousIsBackslash = false;
-                }
-            }
-
-            return '/' + result + '/' + flags;
-        }
-
-        return result;
-    }
-
-    function escapeAllowedCharacter(code, next) {
-        var hex, result = '\\';
-
-        switch (code) {
-        case 0x08  /* \b */:
-            result += 'b';
-            break;
-        case 0x0C  /* \f */:
-            result += 'f';
-            break;
-        case 0x09  /* \t */:
-            result += 't';
-            break;
-        default:
-            hex = code.toString(16).toUpperCase();
-            if (json || code > 0xFF) {
-                result += 'u' + '0000'.slice(hex.length) + hex;
-            } else if (code === 0x0000 && !esutils.code.isDecimalDigit(next)) {
-                result += '0';
-            } else if (code === 0x000B  /* \v */) { // '\v'
-                result += 'x0B';
-            } else {
-                result += 'x' + '00'.slice(hex.length) + hex;
-            }
-            break;
-        }
-
-        return result;
-    }
-
-    function escapeDisallowedCharacter(code) {
-        var result = '\\';
-        switch (code) {
-        case 0x5C  /* \ */:
-            result += '\\';
-            break;
-        case 0x0A  /* \n */:
-            result += 'n';
-            break;
-        case 0x0D  /* \r */:
-            result += 'r';
-            break;
-        case 0x2028:
-            result += 'u2028';
-            break;
-        case 0x2029:
-            result += 'u2029';
-            break;
-        default:
-            throw new Error('Incorrectly classified character');
-        }
-
-        return result;
-    }
-
-    function escapeDirective(str) {
-        var i, iz, code, quote;
-
-        quote = quotes === 'double' ? '"' : '\'';
-        for (i = 0, iz = str.length; i < iz; ++i) {
-            code = str.charCodeAt(i);
-            if (code === 0x27  /* ' */) {
-                quote = '"';
-                break;
-            } else if (code === 0x22  /* " */) {
-                quote = '\'';
-                break;
-            } else if (code === 0x5C  /* \ */) {
-                ++i;
-            }
-        }
-
-        return quote + str + quote;
-    }
-
-    function escapeString(str) {
-        var result = '', i, len, code, singleQuotes = 0, doubleQuotes = 0, single, quote;
-
-        for (i = 0, len = str.length; i < len; ++i) {
-            code = str.charCodeAt(i);
-            if (code === 0x27  /* ' */) {
-                ++singleQuotes;
-            } else if (code === 0x22  /* " */) {
-                ++doubleQuotes;
-            } else if (code === 0x2F  /* / */ && json) {
-                result += '\\';
-            } else if (esutils.code.isLineTerminator(code) || code === 0x5C  /* \ */) {
-                result += escapeDisallowedCharacter(code);
-                continue;
-            } else if ((json && code < 0x20  /* SP */) || !(json || escapeless || (code >= 0x20  /* SP */ && code <= 0x7E  /* ~ */))) {
-                result += escapeAllowedCharacter(code, str.charCodeAt(i + 1));
-                continue;
-            }
-            result += String.fromCharCode(code);
-        }
-
-        single = !(quotes === 'double' || (quotes === 'auto' && doubleQuotes < singleQuotes));
-        quote = single ? '\'' : '"';
-
-        if (!(single ? singleQuotes : doubleQuotes)) {
-            return quote + result + quote;
-        }
-
-        str = result;
-        result = quote;
-
-        for (i = 0, len = str.length; i < len; ++i) {
-            code = str.charCodeAt(i);
-            if ((code === 0x27  /* ' */ && single) || (code === 0x22  /* " */ && !single)) {
-                result += '\\';
-            }
-            result += String.fromCharCode(code);
-        }
-
-        return result + quote;
-    }
-
-    /**
-     * flatten an array to a string, where the array can contain
-     * either strings or nested arrays
-     */
-    function flattenToString(arr) {
-        var i, iz, elem, result = '';
-        for (i = 0, iz = arr.length; i < iz; ++i) {
-            elem = arr[i];
-            result += isArray(elem) ? flattenToString(elem) : elem;
-        }
-        return result;
-    }
-
-    /**
-     * convert generated to a SourceNode when source maps are enabled.
-     */
-    function toSourceNodeWhenNeeded(generated, node) {
-        if (!sourceMap) {
-            // with no source maps, generated is either an
-            // array or a string.  if an array, flatten it.
-            // if a string, just return it
-            if (isArray(generated)) {
-                return flattenToString(generated);
-            } else {
-                return generated;
-            }
-        }
-        if (node == null) {
-            if (generated instanceof SourceNode) {
-                return generated;
-            } else {
-                node = {};
-            }
-        }
-        if (node.loc == null) {
-            return new SourceNode(null, null, sourceMap, generated, node.name || null);
-        }
-        return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null);
-    }
-
-    function noEmptySpace() {
-        return (space) ? space : ' ';
-    }
-
-    function join(left, right) {
-        var leftSource = toSourceNodeWhenNeeded(left).toString(),
-            rightSource = toSourceNodeWhenNeeded(right).toString(),
-            leftCharCode = leftSource.charCodeAt(leftSource.length - 1),
-            rightCharCode = rightSource.charCodeAt(0);
-
-        if ((leftCharCode === 0x2B  /* + */ || leftCharCode === 0x2D  /* - */) && leftCharCode === rightCharCode ||
-        esutils.code.isIdentifierPart(leftCharCode) && esutils.code.isIdentifierPart(rightCharCode) ||
-        leftCharCode === 0x2F  /* / */ && rightCharCode === 0x69  /* i */) { // infix word operators all start with `i`
-            return [left, noEmptySpace(), right];
-        } else if (esutils.code.isWhiteSpace(leftCharCode) || esutils.code.isLineTerminator(leftCharCode) ||
-                esutils.code.isWhiteSpace(rightCharCode) || esutils.code.isLineTerminator(rightCharCode)) {
-            return [left, right];
-        }
-        return [left, space, right];
-    }
-
-    function addIndent(stmt) {
-        return [base, stmt];
-    }
-
-    function withIndent(fn) {
-        var previousBase, result;
-        previousBase = base;
-        base += indent;
-        result = fn.call(this, base);
-        base = previousBase;
-        return result;
-    }
-
-    function calculateSpaces(str) {
-        var i;
-        for (i = str.length - 1; i >= 0; --i) {
-            if (esutils.code.isLineTerminator(str.charCodeAt(i))) {
-                break;
-            }
-        }
-        return (str.length - 1) - i;
-    }
-
-    function adjustMultilineComment(value, specialBase) {
-        var array, i, len, line, j, spaces, previousBase, sn;
-
-        array = value.split(/\r\n|[\r\n]/);
-        spaces = Number.MAX_VALUE;
-
-        // first line doesn't have indentation
-        for (i = 1, len = array.length; i < len; ++i) {
-            line = array[i];
-            j = 0;
-            while (j < line.length && esutils.code.isWhiteSpace(line.charCodeAt(j))) {
-                ++j;
-            }
-            if (spaces > j) {
-                spaces = j;
-            }
-        }
-
-        if (typeof specialBase !== 'undefined') {
-            // pattern like
-            // {
-            //   var t = 20;  /*
-            //                 * this is comment
-            //                 */
-            // }
-            previousBase = base;
-            if (array[1][spaces] === '*') {
-                specialBase += ' ';
-            }
-            base = specialBase;
-        } else {
-            if (spaces & 1) {
-                // /*
-                //  *
-                //  */
-                // If spaces are odd number, above pattern is considered.
-                // We waste 1 space.
-                --spaces;
-            }
-            previousBase = base;
-        }
-
-        for (i = 1, len = array.length; i < len; ++i) {
-            sn = toSourceNodeWhenNeeded(addIndent(array[i].slice(spaces)));
-            array[i] = sourceMap ? sn.join('') : sn;
-        }
-
-        base = previousBase;
-
-        return array.join('\n');
-    }
-
-    function generateComment(comment, specialBase) {
-        if (comment.type === 'Line') {
-            if (endsWithLineTerminator(comment.value)) {
-                return '//' + comment.value;
-            } else {
-                // Always use LineTerminator
-                return '//' + comment.value + '\n';
-            }
-        }
-        if (extra.format.indent.adjustMultilineComment && /[\n\r]/.test(comment.value)) {
-            return adjustMultilineComment('/*' + comment.value + '*/', specialBase);
-        }
-        return '/*' + comment.value + '*/';
-    }
-
-    function addCommentsToStatement(stmt, result) {
-        var i, len, comment, save, tailingToStatement, specialBase, fragment;
-
-        if (stmt.leadingComments && stmt.leadingComments.length > 0) {
-            save = result;
-
-            comment = stmt.leadingComments[0];
-            result = [];
-            if (safeConcatenation && stmt.type === Syntax.Program && stmt.body.length === 0) {
-                result.push('\n');
-            }
-            result.push(generateComment(comment));
-            if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                result.push('\n');
-            }
-
-            for (i = 1, len = stmt.leadingComments.length; i < len; ++i) {
-                comment = stmt.leadingComments[i];
-                fragment = [generateComment(comment)];
-                if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                    fragment.push('\n');
-                }
-                result.push(addIndent(fragment));
-            }
-
-            result.push(addIndent(save));
-        }
-
-        if (stmt.trailingComments) {
-            tailingToStatement = !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());
-            specialBase = stringRepeat(' ', calculateSpaces(toSourceNodeWhenNeeded([base, result, indent]).toString()));
-            for (i = 0, len = stmt.trailingComments.length; i < len; ++i) {
-                comment = stmt.trailingComments[i];
-                if (tailingToStatement) {
-                    // We assume target like following script
-                    //
-                    // var t = 20;  /**
-                    //               * This is comment of t
-                    //               */
-                    if (i === 0) {
-                        // first case
-                        result = [result, indent];
-                    } else {
-                        result = [result, specialBase];
-                    }
-                    result.push(generateComment(comment, specialBase));
-                } else {
-                    result = [result, addIndent(generateComment(comment))];
-                }
-                if (i !== len - 1 && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                    result = [result, '\n'];
-                }
-            }
-        }
-
-        return result;
-    }
-
-    function parenthesize(text, current, should) {
-        if (current < should) {
-            return ['(', text, ')'];
-        }
-        return text;
-    }
-
-    function maybeBlock(stmt, semicolonOptional, functionBody) {
-        var result, noLeadingComment;
-
-        noLeadingComment = !extra.comment || !stmt.leadingComments;
-
-        if (stmt.type === Syntax.BlockStatement && noLeadingComment) {
-            return [space, generateStatement(stmt, { functionBody: functionBody })];
-        }
-
-        if (stmt.type === Syntax.EmptyStatement && noLeadingComment) {
-            return ';';
-        }
-
-        withIndent(function () {
-            result = [newline, addIndent(generateStatement(stmt, { semicolonOptional: semicolonOptional, functionBody: functionBody }))];
-        });
-
-        return result;
-    }
-
-    function maybeBlockSuffix(stmt, result) {
-        var ends = endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString());
-        if (stmt.type === Syntax.BlockStatement && (!extra.comment || !stmt.leadingComments) && !ends) {
-            return [result, space];
-        }
-        if (ends) {
-            return [result, base];
-        }
-        return [result, newline, base];
-    }
-
-    function generateVerbatim(expr, option) {
-        var i, result;
-        result = expr[extra.verbatim].split(/\r\n|\n/);
-        for (i = 1; i < result.length; i++) {
-            result[i] = newline + base + result[i];
-        }
-
-        result = parenthesize(result, Precedence.Sequence, option.precedence);
-        return toSourceNodeWhenNeeded(result, expr);
-    }
-
-    function generateIdentifier(node) {
-        return toSourceNodeWhenNeeded(node.name, node);
-    }
-
-    function generatePattern(node, options) {
-        var result;
-
-        if (node.type === Syntax.Identifier) {
-            result = generateIdentifier(node);
-        } else {
-            result = generateExpression(node, {
-                precedence: options.precedence,
-                allowIn: options.allowIn,
-                allowCall: true
-            });
-        }
-
-        return result;
-    }
-
-    function generateFunctionBody(node) {
-        var result, i, len, expr, arrow;
-
-        arrow = node.type === Syntax.ArrowFunctionExpression;
-
-        if (arrow && node.params.length === 1 && node.params[0].type === Syntax.Identifier) {
-            // arg => { } case
-            result = [generateIdentifier(node.params[0])];
-        } else {
-            result = ['('];
-            for (i = 0, len = node.params.length; i < len; ++i) {
-                result.push(generatePattern(node.params[i], {
-                    precedence: Precedence.Assignment,
-                    allowIn: true
-                }));
-                if (i + 1 < len) {
-                    result.push(',' + space);
-                }
-            }
-            result.push(')');
-        }
-
-        if (arrow) {
-            result.push(space);
-            result.push('=>');
-        }
-
-        if (node.expression) {
-            result.push(space);
-            expr = generateExpression(node.body, {
-                precedence: Precedence.Assignment,
-                allowIn: true,
-                allowCall: true
-            });
-            if (expr.toString().charAt(0) === '{') {
-                expr = ['(', expr, ')'];
-            }
-            result.push(expr);
-        } else {
-            result.push(maybeBlock(node.body, false, true));
-        }
-        return result;
-    }
-
-    function generateIterationForStatement(operator, stmt, semicolonIsNotNeeded) {
-        var result = ['for' + space + '('];
-        withIndent(function () {
-            if (stmt.left.type === Syntax.VariableDeclaration) {
-                withIndent(function () {
-                    result.push(stmt.left.kind + noEmptySpace());
-                    result.push(generateStatement(stmt.left.declarations[0], {
-                        allowIn: false
-                    }));
-                });
-            } else {
-                result.push(generateExpression(stmt.left, {
-                    precedence: Precedence.Call,
-                    allowIn: true,
-                    allowCall: true
-                }));
-            }
-
-            result = join(result, operator);
-            result = [join(
-                result,
-                generateExpression(stmt.right, {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: true
-                })
-            ), ')'];
-        });
-        result.push(maybeBlock(stmt.body, semicolonIsNotNeeded));
-        return result;
-    }
-
-    function generateExpression(expr, option) {
-        var result,
-            precedence,
-            type,
-            currentPrecedence,
-            i,
-            len,
-            raw,
-            fragment,
-            multiline,
-            leftCharCode,
-            leftSource,
-            rightCharCode,
-            allowIn,
-            allowCall,
-            allowUnparenthesizedNew,
-            property,
-            isGenerator;
-
-        precedence = option.precedence;
-        allowIn = option.allowIn;
-        allowCall = option.allowCall;
-        type = expr.type || option.type;
-
-        if (extra.verbatim && expr.hasOwnProperty(extra.verbatim)) {
-            return generateVerbatim(expr, option);
-        }
-
-        switch (type) {
-        case Syntax.SequenceExpression:
-            result = [];
-            allowIn |= (Precedence.Sequence < precedence);
-            for (i = 0, len = expr.expressions.length; i < len; ++i) {
-                result.push(generateExpression(expr.expressions[i], {
-                    precedence: Precedence.Assignment,
-                    allowIn: allowIn,
-                    allowCall: true
-                }));
-                if (i + 1 < len) {
-                    result.push(',' + space);
-                }
-            }
-            result = parenthesize(result, Precedence.Sequence, precedence);
-            break;
-
-        case Syntax.AssignmentExpression:
-            allowIn |= (Precedence.Assignment < precedence);
-            result = parenthesize(
-                [
-                    generateExpression(expr.left, {
-                        precedence: Precedence.Call,
-                        allowIn: allowIn,
-                        allowCall: true
-                    }),
-                    space + expr.operator + space,
-                    generateExpression(expr.right, {
-                        precedence: Precedence.Assignment,
-                        allowIn: allowIn,
-                        allowCall: true
-                    })
-                ],
-                Precedence.Assignment,
-                precedence
-            );
-            break;
-
-        case Syntax.ArrowFunctionExpression:
-            allowIn |= (Precedence.ArrowFunction < precedence);
-            result = parenthesize(generateFunctionBody(expr), Precedence.ArrowFunction, precedence);
-            break;
-
-        case Syntax.ConditionalExpression:
-            allowIn |= (Precedence.Conditional < precedence);
-            result = parenthesize(
-                [
-                    generateExpression(expr.test, {
-                        precedence: Precedence.LogicalOR,
-                        allowIn: allowIn,
-                        allowCall: true
-                    }),
-                    space + '?' + space,
-                    generateExpression(expr.consequent, {
-                        precedence: Precedence.Assignment,
-                        allowIn: allowIn,
-                        allowCall: true
-                    }),
-                    space + ':' + space,
-                    generateExpression(expr.alternate, {
-                        precedence: Precedence.Assignment,
-                        allowIn: allowIn,
-                        allowCall: true
-                    })
-                ],
-                Precedence.Conditional,
-                precedence
-            );
-            break;
-
-        case Syntax.LogicalExpression:
-        case Syntax.BinaryExpression:
-            currentPrecedence = BinaryPrecedence[expr.operator];
-
-            allowIn |= (currentPrecedence < precedence);
-
-            fragment = generateExpression(expr.left, {
-                precedence: currentPrecedence,
-                allowIn: allowIn,
-                allowCall: true
-            });
-
-            leftSource = fragment.toString();
-
-            if (leftSource.charCodeAt(leftSource.length - 1) === 0x2F /* / */ && esutils.code.isIdentifierPart(expr.operator.charCodeAt(0))) {
-                result = [fragment, noEmptySpace(), expr.operator];
-            } else {
-                result = join(fragment, expr.operator);
-            }
-
-            fragment = generateExpression(expr.right, {
-                precedence: currentPrecedence + 1,
-                allowIn: allowIn,
-                allowCall: true
-            });
-
-            if (expr.operator === '/' && fragment.toString().charAt(0) === '/' ||
-            expr.operator.slice(-1) === '<' && fragment.toString().slice(0, 3) === '!--') {
-                // If '/' concats with '/' or `<` concats with `!--`, it is interpreted as comment start
-                result.push(noEmptySpace());
-                result.push(fragment);
-            } else {
-                result = join(result, fragment);
-            }
-
-            if (expr.operator === 'in' && !allowIn) {
-                result = ['(', result, ')'];
-            } else {
-                result = parenthesize(result, currentPrecedence, precedence);
-            }
-
-            break;
-
-        case Syntax.CallExpression:
-            result = [generateExpression(expr.callee, {
-                precedence: Precedence.Call,
-                allowIn: true,
-                allowCall: true,
-                allowUnparenthesizedNew: false
-            })];
-
-            result.push('(');
-            for (i = 0, len = expr['arguments'].length; i < len; ++i) {
-                result.push(generateExpression(expr['arguments'][i], {
-                    precedence: Precedence.Assignment,
-                    allowIn: true,
-                    allowCall: true
-                }));
-                if (i + 1 < len) {
-                    result.push(',' + space);
-                }
-            }
-            result.push(')');
-
-            if (!allowCall) {
-                result = ['(', result, ')'];
-            } else {
-                result = parenthesize(result, Precedence.Call, precedence);
-            }
-            break;
-
-        case Syntax.NewExpression:
-            len = expr['arguments'].length;
-            allowUnparenthesizedNew = option.allowUnparenthesizedNew === undefined || option.allowUnparenthesizedNew;
-
-            result = join(
-                'new',
-                generateExpression(expr.callee, {
-                    precedence: Precedence.New,
-                    allowIn: true,
-                    allowCall: false,
-                    allowUnparenthesizedNew: allowUnparenthesizedNew && !parentheses && len === 0
-                })
-            );
-
-            if (!allowUnparenthesizedNew || parentheses || len > 0) {
-                result.push('(');
-                for (i = 0; i < len; ++i) {
-                    result.push(generateExpression(expr['arguments'][i], {
-                        precedence: Precedence.Assignment,
-                        allowIn: true,
-                        allowCall: true
-                    }));
-                    if (i + 1 < len) {
-                        result.push(',' + space);
-                    }
-                }
-                result.push(')');
-            }
-
-            result = parenthesize(result, Precedence.New, precedence);
-            break;
-
-        case Syntax.MemberExpression:
-            result = [generateExpression(expr.object, {
-                precedence: Precedence.Call,
-                allowIn: true,
-                allowCall: allowCall,
-                allowUnparenthesizedNew: false
-            })];
-
-            if (expr.computed) {
-                result.push('[');
-                result.push(generateExpression(expr.property, {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: allowCall
-                }));
-                result.push(']');
-            } else {
-                if (expr.object.type === Syntax.Literal && typeof expr.object.value === 'number') {
-                    fragment = toSourceNodeWhenNeeded(result).toString();
-                    // When the following conditions are all true,
-                    //   1. No floating point
-                    //   2. Don't have exponents
-                    //   3. The last character is a decimal digit
-                    //   4. Not hexadecimal OR octal number literal
-                    // we should add a floating point.
-                    if (
-                            fragment.indexOf('.') < 0 &&
-                            !/[eExX]/.test(fragment) &&
-                            esutils.code.isDecimalDigit(fragment.charCodeAt(fragment.length - 1)) &&
-                            !(fragment.length >= 2 && fragment.charCodeAt(0) === 48)  // '0'
-                            ) {
-                        result.push('.');
-                    }
-                }
-                result.push('.');
-                result.push(generateIdentifier(expr.property));
-            }
-
-            result = parenthesize(result, Precedence.Member, precedence);
-            break;
-
-        case Syntax.UnaryExpression:
-            fragment = generateExpression(expr.argument, {
-                precedence: Precedence.Unary,
-                allowIn: true,
-                allowCall: true
-            });
-
-            if (space === '') {
-                result = join(expr.operator, fragment);
-            } else {
-                result = [expr.operator];
-                if (expr.operator.length > 2) {
-                    // delete, void, typeof
-                    // get `typeof []`, not `typeof[]`
-                    result = join(result, fragment);
-                } else {
-                    // Prevent inserting spaces between operator and argument if it is unnecessary
-                    // like, `!cond`
-                    leftSource = toSourceNodeWhenNeeded(result).toString();
-                    leftCharCode = leftSource.charCodeAt(leftSource.length - 1);
-                    rightCharCode = fragment.toString().charCodeAt(0);
-
-                    if (((leftCharCode === 0x2B  /* + */ || leftCharCode === 0x2D  /* - */) && leftCharCode === rightCharCode) ||
-                            (esutils.code.isIdentifierPart(leftCharCode) && esutils.code.isIdentifierPart(rightCharCode))) {
-                        result.push(noEmptySpace());
-                        result.push(fragment);
-                    } else {
-                        result.push(fragment);
-                    }
-                }
-            }
-            result = parenthesize(result, Precedence.Unary, precedence);
-            break;
-
-        case Syntax.YieldExpression:
-            if (expr.delegate) {
-                result = 'yield*';
-            } else {
-                result = 'yield';
-            }
-            if (expr.argument) {
-                result = join(
-                    result,
-                    generateExpression(expr.argument, {
-                        precedence: Precedence.Yield,
-                        allowIn: true,
-                        allowCall: true
-                    })
-                );
-            }
-            result = parenthesize(result, Precedence.Yield, precedence);
-            break;
-
-        case Syntax.UpdateExpression:
-            if (expr.prefix) {
-                result = parenthesize(
-                    [
-                        expr.operator,
-                        generateExpression(expr.argument, {
-                            precedence: Precedence.Unary,
-                            allowIn: true,
-                            allowCall: true
-                        })
-                    ],
-                    Precedence.Unary,
-                    precedence
-                );
-            } else {
-                result = parenthesize(
-                    [
-                        generateExpression(expr.argument, {
-                            precedence: Precedence.Postfix,
-                            allowIn: true,
-                            allowCall: true
-                        }),
-                        expr.operator
-                    ],
-                    Precedence.Postfix,
-                    precedence
-                );
-            }
-            break;
-
-        case Syntax.FunctionExpression:
-            isGenerator = expr.generator && !extra.moz.starlessGenerator;
-            result = isGenerator ? 'function*' : 'function';
-
-            if (expr.id) {
-                result = [result, (isGenerator) ? space : noEmptySpace(),
-                          generateIdentifier(expr.id),
-                          generateFunctionBody(expr)];
-            } else {
-                result = [result + space, generateFunctionBody(expr)];
-            }
-
-            break;
-
-        case Syntax.ArrayPattern:
-        case Syntax.ArrayExpression:
-            if (!expr.elements.length) {
-                result = '[]';
-                break;
-            }
-            multiline = expr.elements.length > 1;
-            result = ['[', multiline ? newline : ''];
-            withIndent(function (indent) {
-                for (i = 0, len = expr.elements.length; i < len; ++i) {
-                    if (!expr.elements[i]) {
-                        if (multiline) {
-                            result.push(indent);
-                        }
-                        if (i + 1 === len) {
-                            result.push(',');
-                        }
-                    } else {
-                        result.push(multiline ? indent : '');
-                        result.push(generateExpression(expr.elements[i], {
-                            precedence: Precedence.Assignment,
-                            allowIn: true,
-                            allowCall: true
-                        }));
-                    }
-                    if (i + 1 < len) {
-                        result.push(',' + (multiline ? newline : space));
-                    }
-                }
-            });
-            if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                result.push(newline);
-            }
-            result.push(multiline ? base : '');
-            result.push(']');
-            break;
-
-        case Syntax.Property:
-            if (expr.kind === 'get' || expr.kind === 'set') {
-                result = [
-                    expr.kind, noEmptySpace(),
-                    generateExpression(expr.key, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    generateFunctionBody(expr.value)
-                ];
-            } else {
-                if (expr.shorthand) {
-                    result = generateExpression(expr.key, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    });
-                } else if (expr.method) {
-                    result = [];
-                    if (expr.value.generator) {
-                        result.push('*');
-                    }
-                    result.push(generateExpression(expr.key, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }));
-                    result.push(generateFunctionBody(expr.value));
-                } else {
-                    result = [
-                        generateExpression(expr.key, {
-                            precedence: Precedence.Sequence,
-                            allowIn: true,
-                            allowCall: true
-                        }),
-                        ':' + space,
-                        generateExpression(expr.value, {
-                            precedence: Precedence.Assignment,
-                            allowIn: true,
-                            allowCall: true
-                        })
-                    ];
-                }
-            }
-            break;
-
-        case Syntax.ObjectExpression:
-            if (!expr.properties.length) {
-                result = '{}';
-                break;
-            }
-            multiline = expr.properties.length > 1;
-
-            withIndent(function () {
-                fragment = generateExpression(expr.properties[0], {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: true,
-                    type: Syntax.Property
-                });
-            });
-
-            if (!multiline) {
-                // issues 4
-                // Do not transform from
-                //   dejavu.Class.declare({
-                //       method2: function () {}
-                //   });
-                // to
-                //   dejavu.Class.declare({method2: function () {
-                //       }});
-                if (!hasLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                    result = [ '{', space, fragment, space, '}' ];
-                    break;
-                }
-            }
-
-            withIndent(function (indent) {
-                result = [ '{', newline, indent, fragment ];
-
-                if (multiline) {
-                    result.push(',' + newline);
-                    for (i = 1, len = expr.properties.length; i < len; ++i) {
-                        result.push(indent);
-                        result.push(generateExpression(expr.properties[i], {
-                            precedence: Precedence.Sequence,
-                            allowIn: true,
-                            allowCall: true,
-                            type: Syntax.Property
-                        }));
-                        if (i + 1 < len) {
-                            result.push(',' + newline);
-                        }
-                    }
-                }
-            });
-
-            if (!endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                result.push(newline);
-            }
-            result.push(base);
-            result.push('}');
-            break;
-
-        case Syntax.ObjectPattern:
-            if (!expr.properties.length) {
-                result = '{}';
-                break;
-            }
-
-            multiline = false;
-            if (expr.properties.length === 1) {
-                property = expr.properties[0];
-                if (property.value.type !== Syntax.Identifier) {
-                    multiline = true;
-                }
-            } else {
-                for (i = 0, len = expr.properties.length; i < len; ++i) {
-                    property = expr.properties[i];
-                    if (!property.shorthand) {
-                        multiline = true;
-                        break;
-                    }
-                }
-            }
-            result = ['{', multiline ? newline : '' ];
-
-            withIndent(function (indent) {
-                for (i = 0, len = expr.properties.length; i < len; ++i) {
-                    result.push(multiline ? indent : '');
-                    result.push(generateExpression(expr.properties[i], {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }));
-                    if (i + 1 < len) {
-                        result.push(',' + (multiline ? newline : space));
-                    }
-                }
-            });
-
-            if (multiline && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                result.push(newline);
-            }
-            result.push(multiline ? base : '');
-            result.push('}');
-            break;
-
-        case Syntax.ThisExpression:
-            result = 'this';
-            break;
-
-        case Syntax.Identifier:
-            result = generateIdentifier(expr);
-            break;
-
-        case Syntax.Literal:
-            if (expr.hasOwnProperty('raw') && parse) {
-                try {
-                    raw = parse(expr.raw).body[0].expression;
-                    if (raw.type === Syntax.Literal) {
-                        if (raw.value === expr.value) {
-                            result = expr.raw;
-                            break;
-                        }
-                    }
-                } catch (e) {
-                    // not use raw property
-                }
-            }
-
-            if (expr.value === null) {
-                result = 'null';
-                break;
-            }
-
-            if (typeof expr.value === 'string') {
-                result = escapeString(expr.value);
-                break;
-            }
-
-            if (typeof expr.value === 'number') {
-                result = generateNumber(expr.value);
-                break;
-            }
-
-            if (typeof expr.value === 'boolean') {
-                result = expr.value ? 'true' : 'false';
-                break;
-            }
-
-            result = generateRegExp(expr.value);
-            break;
-
-        case Syntax.GeneratorExpression:
-        case Syntax.ComprehensionExpression:
-            // GeneratorExpression should be parenthesized with (...), ComprehensionExpression with [...]
-            // Due to https://bugzilla.mozilla.org/show_bug.cgi?id=883468 position of expr.body can differ in Spidermonkey and ES6
-            result = (type === Syntax.GeneratorExpression) ? ['('] : ['['];
-
-            if (extra.moz.comprehensionExpressionStartsWithAssignment) {
-                fragment = generateExpression(expr.body, {
-                    precedence: Precedence.Assignment,
-                    allowIn: true,
-                    allowCall: true
-                });
-
-                result.push(fragment);
-            }
-
-            if (expr.blocks) {
-                withIndent(function () {
-                    for (i = 0, len = expr.blocks.length; i < len; ++i) {
-                        fragment = generateExpression(expr.blocks[i], {
-                            precedence: Precedence.Sequence,
-                            allowIn: true,
-                            allowCall: true
-                        });
-
-                        if (i > 0 || extra.moz.comprehensionExpressionStartsWithAssignment) {
-                            result = join(result, fragment);
-                        } else {
-                            result.push(fragment);
-                        }
-                    }
-                });
-            }
-
-            if (expr.filter) {
-                result = join(result, 'if' + space);
-                fragment = generateExpression(expr.filter, {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: true
-                });
-                if (extra.moz.parenthesizedComprehensionBlock) {
-                    result = join(result, [ '(', fragment, ')' ]);
-                } else {
-                    result = join(result, fragment);
-                }
-            }
-
-            if (!extra.moz.comprehensionExpressionStartsWithAssignment) {
-                fragment = generateExpression(expr.body, {
-                    precedence: Precedence.Assignment,
-                    allowIn: true,
-                    allowCall: true
-                });
-
-                result = join(result, fragment);
-            }
-
-            result.push((type === Syntax.GeneratorExpression) ? ')' : ']');
-            break;
-
-        case Syntax.ComprehensionBlock:
-            if (expr.left.type === Syntax.VariableDeclaration) {
-                fragment = [
-                    expr.left.kind, noEmptySpace(),
-                    generateStatement(expr.left.declarations[0], {
-                        allowIn: false
-                    })
-                ];
-            } else {
-                fragment = generateExpression(expr.left, {
-                    precedence: Precedence.Call,
-                    allowIn: true,
-                    allowCall: true
-                });
-            }
-
-            fragment = join(fragment, expr.of ? 'of' : 'in');
-            fragment = join(fragment, generateExpression(expr.right, {
-                precedence: Precedence.Sequence,
-                allowIn: true,
-                allowCall: true
-            }));
-
-            if (extra.moz.parenthesizedComprehensionBlock) {
-                result = [ 'for' + space + '(', fragment, ')' ];
-            } else {
-                result = join('for' + space, fragment);
-            }
-            break;
-
-        default:
-            throw new Error('Unknown expression type: ' + expr.type);
-        }
-
-        return toSourceNodeWhenNeeded(result, expr);
-    }
-
-    function generateStatement(stmt, option) {
-        var i,
-            len,
-            result,
-            node,
-            allowIn,
-            functionBody,
-            directiveContext,
-            fragment,
-            semicolon,
-            isGenerator;
-
-        allowIn = true;
-        semicolon = ';';
-        functionBody = false;
-        directiveContext = false;
-        if (option) {
-            allowIn = option.allowIn === undefined || option.allowIn;
-            if (!semicolons && option.semicolonOptional === true) {
-                semicolon = '';
-            }
-            functionBody = option.functionBody;
-            directiveContext = option.directiveContext;
-        }
-
-        switch (stmt.type) {
-        case Syntax.BlockStatement:
-            result = ['{', newline];
-
-            withIndent(function () {
-                for (i = 0, len = stmt.body.length; i < len; ++i) {
-                    fragment = addIndent(generateStatement(stmt.body[i], {
-                        semicolonOptional: i === len - 1,
-                        directiveContext: functionBody
-                    }));
-                    result.push(fragment);
-                    if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                        result.push(newline);
-                    }
-                }
-            });
-
-            result.push(addIndent('}'));
-            break;
-
-        case Syntax.BreakStatement:
-            if (stmt.label) {
-                result = 'break ' + stmt.label.name + semicolon;
-            } else {
-                result = 'break' + semicolon;
-            }
-            break;
-
-        case Syntax.ContinueStatement:
-            if (stmt.label) {
-                result = 'continue ' + stmt.label.name + semicolon;
-            } else {
-                result = 'continue' + semicolon;
-            }
-            break;
-
-        case Syntax.DirectiveStatement:
-            if (stmt.raw) {
-                result = stmt.raw + semicolon;
-            } else {
-                result = escapeDirective(stmt.directive) + semicolon;
-            }
-            break;
-
-        case Syntax.DoWhileStatement:
-            // Because `do 42 while (cond)` is Syntax Error. We need semicolon.
-            result = join('do', maybeBlock(stmt.body));
-            result = maybeBlockSuffix(stmt.body, result);
-            result = join(result, [
-                'while' + space + '(',
-                generateExpression(stmt.test, {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: true
-                }),
-                ')' + semicolon
-            ]);
-            break;
-
-        case Syntax.CatchClause:
-            withIndent(function () {
-                var guard;
-
-                result = [
-                    'catch' + space + '(',
-                    generateExpression(stmt.param, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    ')'
-                ];
-
-                if (stmt.guard) {
-                    guard = generateExpression(stmt.guard, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    });
-
-                    result.splice(2, 0, ' if ', guard);
-                }
-            });
-            result.push(maybeBlock(stmt.body));
-            break;
-
-        case Syntax.DebuggerStatement:
-            result = 'debugger' + semicolon;
-            break;
-
-        case Syntax.EmptyStatement:
-            result = ';';
-            break;
-
-        case Syntax.ExportDeclaration:
-            result = 'export ';
-            if (stmt.declaration) {
-                // FunctionDeclaration or VariableDeclaration
-                result = [result, generateStatement(stmt.declaration, { semicolonOptional: semicolon === '' })];
-                break;
-            }
-            break;
-
-        case Syntax.ExpressionStatement:
-            result = [generateExpression(stmt.expression, {
-                precedence: Precedence.Sequence,
-                allowIn: true,
-                allowCall: true
-            })];
-            // 12.4 '{', 'function' is not allowed in this position.
-            // wrap expression with parentheses
-            fragment = toSourceNodeWhenNeeded(result).toString();
-            if (fragment.charAt(0) === '{' ||  // ObjectExpression
-                    (fragment.slice(0, 8) === 'function' && '* ('.indexOf(fragment.charAt(8)) >= 0) ||  // function or generator
-                    (directive && directiveContext && stmt.expression.type === Syntax.Literal && typeof stmt.expression.value === 'string')) {
-                result = ['(', result, ')' + semicolon];
-            } else {
-                result.push(semicolon);
-            }
-            break;
-
-        case Syntax.VariableDeclarator:
-            if (stmt.init) {
-                result = [
-                    generateExpression(stmt.id, {
-                        precedence: Precedence.Assignment,
-                        allowIn: allowIn,
-                        allowCall: true
-                    }),
-                    space,
-                    '=',
-                    space,
-                    generateExpression(stmt.init, {
-                        precedence: Precedence.Assignment,
-                        allowIn: allowIn,
-                        allowCall: true
-                    })
-                ];
-            } else {
-                result = generatePattern(stmt.id, {
-                    precedence: Precedence.Assignment,
-                    allowIn: allowIn
-                });
-            }
-            break;
-
-        case Syntax.VariableDeclaration:
-            result = [stmt.kind];
-            // special path for
-            // var x = function () {
-            // };
-            if (stmt.declarations.length === 1 && stmt.declarations[0].init &&
-                    stmt.declarations[0].init.type === Syntax.FunctionExpression) {
-                result.push(noEmptySpace());
-                result.push(generateStatement(stmt.declarations[0], {
-                    allowIn: allowIn
-                }));
-            } else {
-                // VariableDeclarator is typed as Statement,
-                // but joined with comma (not LineTerminator).
-                // So if comment is attached to target node, we should specialize.
-                withIndent(function () {
-                    node = stmt.declarations[0];
-                    if (extra.comment && node.leadingComments) {
-                        result.push('\n');
-                        result.push(addIndent(generateStatement(node, {
-                            allowIn: allowIn
-                        })));
-                    } else {
-                        result.push(noEmptySpace());
-                        result.push(generateStatement(node, {
-                            allowIn: allowIn
-                        }));
-                    }
-
-                    for (i = 1, len = stmt.declarations.length; i < len; ++i) {
-                        node = stmt.declarations[i];
-                        if (extra.comment && node.leadingComments) {
-                            result.push(',' + newline);
-                            result.push(addIndent(generateStatement(node, {
-                                allowIn: allowIn
-                            })));
-                        } else {
-                            result.push(',' + space);
-                            result.push(generateStatement(node, {
-                                allowIn: allowIn
-                            }));
-                        }
-                    }
-                });
-            }
-            result.push(semicolon);
-            break;
-
-        case Syntax.ThrowStatement:
-            result = [join(
-                'throw',
-                generateExpression(stmt.argument, {
-                    precedence: Precedence.Sequence,
-                    allowIn: true,
-                    allowCall: true
-                })
-            ), semicolon];
-            break;
-
-        case Syntax.TryStatement:
-            result = ['try', maybeBlock(stmt.block)];
-            result = maybeBlockSuffix(stmt.block, result);
-
-            if (stmt.handlers) {
-                // old interface
-                for (i = 0, len = stmt.handlers.length; i < len; ++i) {
-                    result = join(result, generateStatement(stmt.handlers[i]));
-                    if (stmt.finalizer || i + 1 !== len) {
-                        result = maybeBlockSuffix(stmt.handlers[i].body, result);
-                    }
-                }
-            } else {
-                stmt.guardedHandlers = stmt.guardedHandlers || [];
-
-                for (i = 0, len = stmt.guardedHandlers.length; i < len; ++i) {
-                    result = join(result, generateStatement(stmt.guardedHandlers[i]));
-                    if (stmt.finalizer || i + 1 !== len) {
-                        result = maybeBlockSuffix(stmt.guardedHandlers[i].body, result);
-                    }
-                }
-
-                // new interface
-                if (stmt.handler) {
-                    if (isArray(stmt.handler)) {
-                        for (i = 0, len = stmt.handler.length; i < len; ++i) {
-                            result = join(result, generateStatement(stmt.handler[i]));
-                            if (stmt.finalizer || i + 1 !== len) {
-                                result = maybeBlockSuffix(stmt.handler[i].body, result);
-                            }
-                        }
-                    } else {
-                        result = join(result, generateStatement(stmt.handler));
-                        if (stmt.finalizer) {
-                            result = maybeBlockSuffix(stmt.handler.body, result);
-                        }
-                    }
-                }
-            }
-            if (stmt.finalizer) {
-                result = join(result, ['finally', maybeBlock(stmt.finalizer)]);
-            }
-            break;
-
-        case Syntax.SwitchStatement:
-            withIndent(function () {
-                result = [
-                    'switch' + space + '(',
-                    generateExpression(stmt.discriminant, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    ')' + space + '{' + newline
-                ];
-            });
-            if (stmt.cases) {
-                for (i = 0, len = stmt.cases.length; i < len; ++i) {
-                    fragment = addIndent(generateStatement(stmt.cases[i], {semicolonOptional: i === len - 1}));
-                    result.push(fragment);
-                    if (!endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                        result.push(newline);
-                    }
-                }
-            }
-            result.push(addIndent('}'));
-            break;
-
-        case Syntax.SwitchCase:
-            withIndent(function () {
-                if (stmt.test) {
-                    result = [
-                        join('case', generateExpression(stmt.test, {
-                            precedence: Precedence.Sequence,
-                            allowIn: true,
-                            allowCall: true
-                        })),
-                        ':'
-                    ];
-                } else {
-                    result = ['default:'];
-                }
-
-                i = 0;
-                len = stmt.consequent.length;
-                if (len && stmt.consequent[0].type === Syntax.BlockStatement) {
-                    fragment = maybeBlock(stmt.consequent[0]);
-                    result.push(fragment);
-                    i = 1;
-                }
-
-                if (i !== len && !endsWithLineTerminator(toSourceNodeWhenNeeded(result).toString())) {
-                    result.push(newline);
-                }
-
-                for (; i < len; ++i) {
-                    fragment = addIndent(generateStatement(stmt.consequent[i], {semicolonOptional: i === len - 1 && semicolon === ''}));
-                    result.push(fragment);
-                    if (i + 1 !== len && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                        result.push(newline);
-                    }
-                }
-            });
-            break;
-
-        case Syntax.IfStatement:
-            withIndent(function () {
-                result = [
-                    'if' + space + '(',
-                    generateExpression(stmt.test, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    ')'
-                ];
-            });
-            if (stmt.alternate) {
-                result.push(maybeBlock(stmt.consequent));
-                result = maybeBlockSuffix(stmt.consequent, result);
-                if (stmt.alternate.type === Syntax.IfStatement) {
-                    result = join(result, ['else ', generateStatement(stmt.alternate, {semicolonOptional: semicolon === ''})]);
-                } else {
-                    result = join(result, join('else', maybeBlock(stmt.alternate, semicolon === '')));
-                }
-            } else {
-                result.push(maybeBlock(stmt.consequent, semicolon === ''));
-            }
-            break;
-
-        case Syntax.ForStatement:
-            withIndent(function () {
-                result = ['for' + space + '('];
-                if (stmt.init) {
-                    if (stmt.init.type === Syntax.VariableDeclaration) {
-                        result.push(generateStatement(stmt.init, {allowIn: false}));
-                    } else {
-                        result.push(generateExpression(stmt.init, {
-                            precedence: Precedence.Sequence,
-                            allowIn: false,
-                            allowCall: true
-                        }));
-                        result.push(';');
-                    }
-                } else {
-                    result.push(';');
-                }
-
-                if (stmt.test) {
-                    result.push(space);
-                    result.push(generateExpression(stmt.test, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }));
-                    result.push(';');
-                } else {
-                    result.push(';');
-                }
-
-                if (stmt.update) {
-                    result.push(space);
-                    result.push(generateExpression(stmt.update, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }));
-                    result.push(')');
-                } else {
-                    result.push(')');
-                }
-            });
-
-            result.push(maybeBlock(stmt.body, semicolon === ''));
-            break;
-
-        case Syntax.ForInStatement:
-            result = generateIterationForStatement('in', stmt, semicolon === '');
-            break;
-
-        case Syntax.ForOfStatement:
-            result = generateIterationForStatement('of', stmt, semicolon === '');
-            break;
-
-        case Syntax.LabeledStatement:
-            result = [stmt.label.name + ':', maybeBlock(stmt.body, semicolon === '')];
-            break;
-
-        case Syntax.Program:
-            len = stmt.body.length;
-            result = [safeConcatenation && len > 0 ? '\n' : ''];
-            for (i = 0; i < len; ++i) {
-                fragment = addIndent(
-                    generateStatement(stmt.body[i], {
-                        semicolonOptional: !safeConcatenation && i === len - 1,
-                        directiveContext: true
-                    })
-                );
-                result.push(fragment);
-                if (i + 1 < len && !endsWithLineTerminator(toSourceNodeWhenNeeded(fragment).toString())) {
-                    result.push(newline);
-                }
-            }
-            break;
-
-        case Syntax.FunctionDeclaration:
-            isGenerator = stmt.generator && !extra.moz.starlessGenerator;
-            result = [
-                (isGenerator ? 'function*' : 'function'),
-                (isGenerator ? space : noEmptySpace()),
-                generateIdentifier(stmt.id),
-                generateFunctionBody(stmt)
-            ];
-            break;
-
-        case Syntax.ReturnStatement:
-            if (stmt.argument) {
-                result = [join(
-                    'return',
-                    generateExpression(stmt.argument, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    })
-                ), semicolon];
-            } else {
-                result = ['return' + semicolon];
-            }
-            break;
-
-        case Syntax.WhileStatement:
-            withIndent(function () {
-                result = [
-                    'while' + space + '(',
-                    generateExpression(stmt.test, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    ')'
-                ];
-            });
-            result.push(maybeBlock(stmt.body, semicolon === ''));
-            break;
-
-        case Syntax.WithStatement:
-            withIndent(function () {
-                result = [
-                    'with' + space + '(',
-                    generateExpression(stmt.object, {
-                        precedence: Precedence.Sequence,
-                        allowIn: true,
-                        allowCall: true
-                    }),
-                    ')'
-                ];
-            });
-            result.push(maybeBlock(stmt.body, semicolon === ''));
-            break;
-
-        default:
-            throw new Error('Unknown statement type: ' + stmt.type);
-        }
-
-        // Attach comments
-
-        if (extra.comment) {
-            result = addCommentsToStatement(stmt, result);
-        }
-
-        fragment = toSourceNodeWhenNeeded(result).toString();
-        if (stmt.type === Syntax.Program && !safeConcatenation && newline === '' &&  fragment.charAt(fragment.length - 1) === '\n') {
-            result = sourceMap ? toSourceNodeWhenNeeded(result).replaceRight(/\s+$/, '') : fragment.replace(/\s+$/, '');
-        }
-
-        return toSourceNodeWhenNeeded(result, stmt);
-    }
-
-    function generate(node, options) {
-        var defaultOptions = getDefaultOptions(), result, pair;
-
-        if (options != null) {
-            // Obsolete options
-            //
-            //   `options.indent`
-            //   `options.base`
-            //
-            // Instead of them, we can use `option.format.indent`.
-            if (typeof options.indent === 'string') {
-                defaultOptions.format.indent.style = options.indent;
-            }
-            if (typeof options.base === 'number') {
-                defaultOptions.format.indent.base = options.base;
-            }
-            options = updateDeeply(defaultOptions, options);
-            indent = options.format.indent.style;
-            if (typeof options.base === 'string') {
-                base = options.base;
-            } else {
-                base = stringRepeat(indent, options.format.indent.base);
-            }
-        } else {
-            options = defaultOptions;
-            indent = options.format.indent.style;
-            base = stringRepeat(indent, options.format.indent.base);
-        }
-        json = options.format.json;
-        renumber = options.format.renumber;
-        hexadecimal = json ? false : options.format.hexadecimal;
-        quotes = json ? 'double' : options.format.quotes;
-        escapeless = options.format.escapeless;
-        newline = options.format.newline;
-        space = options.format.space;
-        if (options.format.compact) {
-            newline = space = indent = base = '';
-        }
-        parentheses = options.format.parentheses;
-        semicolons = options.format.semicolons;
-        safeConcatenation = options.format.safeConcatenation;
-        directive = options.directive;
-        parse = json ? null : options.parse;
-        sourceMap = options.sourceMap;
-        extra = options;
-
-        if (sourceMap) {
-            if (!exports.browser) {
-                // We assume environment is node.js
-                // And prevent from including source-map by browserify
-                SourceNode = require('source-map').SourceNode;
-            } else {
-                SourceNode = global.sourceMap.SourceNode;
-            }
-        }
-
-        switch (node.type) {
-        case Syntax.BlockStatement:
-        case Syntax.BreakStatement:
-        case Syntax.CatchClause:
-        case Syntax.ContinueStatement:
-        case Syntax.DirectiveStatement:
-        case Syntax.DoWhileStatement:
-        case Syntax.DebuggerStatement:
-        case Syntax.EmptyStatement:
-        case Syntax.ExpressionStatement:
-        case Syntax.ForStatement:
-        case Syntax.ForInStatement:
-        case Syntax.ForOfStatement:
-        case Syntax.FunctionDeclaration:
-        case Syntax.IfStatement:
-        case Syntax.LabeledStatement:
-        case Syntax.Program:
-        case Syntax.ReturnStatement:
-        case Syntax.SwitchStatement:
-        case Syntax.SwitchCase:
-        case Syntax.ThrowStatement:
-        case Syntax.TryStatement:
-        case Syntax.VariableDeclaration:
-        case Syntax.VariableDeclarator:
-        case Syntax.WhileStatement:
-        case Syntax.WithStatement:
-            result = generateStatement(node);
-            break;
-
-        case Syntax.AssignmentExpression:
-        case Syntax.ArrayExpression:
-        case Syntax.ArrayPattern:
-        case Syntax.BinaryExpression:
-        case Syntax.CallExpression:
-        case Syntax.ConditionalExpression:
-        case Syntax.FunctionExpression:
-        case Syntax.Identifier:
-        case Syntax.Literal:
-        case Syntax.LogicalExpression:
-        case Syntax.MemberExpression:
-        case Syntax.NewExpression:
-        case Syntax.ObjectExpression:
-        case Syntax.ObjectPattern:
-        case Syntax.Property:
-        case Syntax.SequenceExpression:
-        case Syntax.ThisExpression:
-        case Syntax.UnaryExpression:
-        case Syntax.UpdateExpression:
-        case Syntax.YieldExpression:
-
-            result = generateExpression(node, {
-                precedence: Precedence.Sequence,
-                allowIn: true,
-                allowCall: true
-            });
-            break;
-
-        default:
-            throw new Error('Unknown node type: ' + node.type);
-        }
-
-        if (!sourceMap) {
-            return result.toString();
-        }
-
-
-        pair = result.toStringWithSourceMap({
-            file: options.file,
-            sourceRoot: options.sourceMapRoot
-        });
-
-        if (options.sourceContent) {
-            pair.map.setSourceContent(options.sourceMap,
-                                      options.sourceContent);
-        }
-
-        if (options.sourceMapWithCode) {
-            return pair;
-        }
-
-        return pair.map.toString();
-    }
-
-    FORMAT_MINIFY = {
-        indent: {
-            style: '',
-            base: 0
-        },
-        renumber: true,
-        hexadecimal: true,
-        quotes: 'auto',
-        escapeless: true,
-        compact: true,
-        parentheses: false,
-        semicolons: false
-    };
-
-    FORMAT_DEFAULTS = getDefaultOptions().format;
-
-    exports.version = require('./package.json').version;
-    exports.generate = generate;
-    exports.attachComments = estraverse.attachComments;
-    exports.browser = false;
-    exports.FORMAT_MINIFY = FORMAT_MINIFY;
-    exports.FORMAT_DEFAULTS = FORMAT_DEFAULTS;
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 67
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/gulpfile.js

@@ -1,67 +0,0 @@
-/*
-  Copyright (C) 2014 Yusuke Suzuki <utatane.tea@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-'use strict';
-
-var gulp = require('gulp');
-var mocha = require('gulp-mocha');
-var jshint = require('gulp-jshint');
-var eslint = require('gulp-eslint');
-
-var TEST = [ 'test/*.js' ];
-
-var LINT = [
-    'gulpfile.js',
-    'escodegen.js'
-];
-
-var ESLINT_OPTION = {
-    'rulesdir': 'tools/rules/',
-    'rules': {
-        'push-with-multiple-arguments': 2,
-        'quotes': 0,
-        'eqeqeq': 0,
-        'no-use-before-define': 0,
-        'no-shadow': 0
-    },
-    'env': {
-        'node': true
-    }
-};
-
-gulp.task('test', function () {
-    return gulp.src(TEST).pipe(mocha({ reporter: 'spec' }));
-});
-
-gulp.task('lint', function () {
-    return gulp.src(LINT)
-        .pipe(jshint('.jshintrc'))
-        .pipe(jshint.reporter(require('jshint-stylish')))
-        .pipe(jshint.reporter('fail'))
-        .pipe(eslint(ESLINT_OPTION))
-        .pipe(eslint.formatEach('compact', process.stderr));
-});
-
-gulp.task('travis', [ 'lint', 'test' ]);
-gulp.task('default', [ 'travis' ]);

+ 0 - 109
ParticleFilter/node_modules/ast-transform/node_modules/escodegen/package.json

@@ -1,109 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "escodegen",
-        "raw": "escodegen@~1.2.0",
-        "rawSpec": "~1.2.0",
-        "scope": null,
-        "spec": ">=1.2.0 <1.3.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform"
-    ]
-  ],
-  "_from": "escodegen@>=1.2.0 <1.3.0",
-  "_id": "escodegen@1.2.0",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/ast-transform/escodegen",
-  "_npmUser": {
-    "email": "utatane.tea@gmail.com",
-    "name": "constellation"
-  },
-  "_npmVersion": "1.3.21",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "escodegen",
-    "raw": "escodegen@~1.2.0",
-    "rawSpec": "~1.2.0",
-    "scope": null,
-    "spec": ">=1.2.0 <1.3.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform"
-  ],
-  "_resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz",
-  "_shasum": "09de7967791cc958b7f89a2ddb6d23451af327e1",
-  "_shrinkwrap": null,
-  "_spec": "escodegen@~1.2.0",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform",
-  "bin": {
-    "escodegen": "./bin/escodegen.js",
-    "esgenerate": "./bin/esgenerate.js"
-  },
-  "bugs": {
-    "url": "https://github.com/Constellation/escodegen/issues"
-  },
-  "dependencies": {
-    "esprima": "~1.0.4",
-    "estraverse": "~1.5.0",
-    "esutils": "~1.0.0",
-    "source-map": "~0.1.30"
-  },
-  "description": "ECMAScript code generator",
-  "devDependencies": {
-    "bower": "*",
-    "chai": "~1.7.2",
-    "commonjs-everywhere": "~0.9.6",
-    "esprima-moz": "*",
-    "gulp": "~3.5.0",
-    "gulp-eslint": "~0.1.2",
-    "gulp-jshint": "~1.4.0",
-    "gulp-mocha": "~0.4.1",
-    "jshint-stylish": "~0.1.5",
-    "q": "*",
-    "semver": "*"
-  },
-  "directories": {},
-  "dist": {
-    "shasum": "09de7967791cc958b7f89a2ddb6d23451af327e1",
-    "tarball": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz"
-  },
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "homepage": "http://github.com/Constellation/escodegen",
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD"
-    }
-  ],
-  "main": "escodegen.js",
-  "maintainers": [
-    {
-      "email": "utatane.tea@gmail.com",
-      "name": "constellation"
-    }
-  ],
-  "name": "escodegen",
-  "optionalDependencies": {
-    "source-map": "~0.1.30"
-  },
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/Constellation/escodegen.git"
-  },
-  "scripts": {
-    "build": "./node_modules/.bin/cjsify -a path: tools/entry-point.js > escodegen.browser.js",
-    "build-min": "./node_modules/.bin/cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",
-    "lint": "gulp lint",
-    "release": "node tools/release.js",
-    "test": "gulp travis",
-    "unit-test": "gulp test"
-  },
-  "version": "1.2.0"
-}

+ 0 - 73
ParticleFilter/node_modules/ast-transform/node_modules/esprima/README.md

@@ -1,73 +0,0 @@
-**Esprima** ([esprima.org](http://esprima.org)) is a high performance,
-standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
-parser written in ECMAScript (also popularly known as
-[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).
-Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),
-with the help of [many contributors](https://github.com/ariya/esprima/contributors).
-
-Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as
-[Node.js](http://nodejs.org).
-
-### Features
-
-- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262)
-- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla
-[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)
-- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage)
-- Optional tracking of syntax node location (index-based and line-column)
-- Experimental support for ES6/Harmony (module, class, destructuring, ...)
-
-Esprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)).
-It is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html)
-with the new generation of fast parsers.
-
-### Applications
-
-Esprima serves as the basis for many popular JavaScript development tools:
-
-- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul)
-- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck)
-- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS),
-[Sweet.js](http://sweetjs.org/) (macro)
-- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr)
-- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html))
-- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter),
-- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen)
-
-### Questions?
-- [Documentation](http://esprima.org/doc)
-- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect)
-and [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement)
-- [Mailing list](http://groups.google.com/group/esprima)
-- [Contribution guide](http://esprima.org/doc/index.html#contribution)
-
-Follow [@Esprima](http://twitter.com/Esprima) on Twitter to get the
-development updates.
-Feedback and contribution are welcomed!
-
-### License
-
-Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)
- and other contributors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-

+ 0 - 117
ParticleFilter/node_modules/ast-transform/node_modules/esprima/bin/esparse.js

@@ -1,117 +0,0 @@
-#!/usr/bin/env node
-/*
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true rhino:true */
-
-var fs, esprima, fname, content, options, syntax;
-
-if (typeof require === 'function') {
-    fs = require('fs');
-    esprima = require('esprima');
-} else if (typeof load === 'function') {
-    try {
-        load('esprima.js');
-    } catch (e) {
-        load('../esprima.js');
-    }
-}
-
-// Shims to Node.js objects when running under Rhino.
-if (typeof console === 'undefined' && typeof process === 'undefined') {
-    console = { log: print };
-    fs = { readFileSync: readFile };
-    process = { argv: arguments, exit: quit };
-    process.argv.unshift('esparse.js');
-    process.argv.unshift('rhino');
-}
-
-function showUsage() {
-    console.log('Usage:');
-    console.log('   esparse [options] file.js');
-    console.log();
-    console.log('Available options:');
-    console.log();
-    console.log('  --comment      Gather all line and block comments in an array');
-    console.log('  --loc          Include line-column location info for each syntax node');
-    console.log('  --range        Include index-based range for each syntax node');
-    console.log('  --raw          Display the raw value of literals');
-    console.log('  --tokens       List all tokens in an array');
-    console.log('  --tolerant     Tolerate errors on a best-effort basis (experimental)');
-    console.log('  -v, --version  Shows program version');
-    console.log();
-    process.exit(1);
-}
-
-if (process.argv.length <= 2) {
-    showUsage();
-}
-
-options = {};
-
-process.argv.splice(2).forEach(function (entry) {
-
-    if (entry === '-h' || entry === '--help') {
-        showUsage();
-    } else if (entry === '-v' || entry === '--version') {
-        console.log('ECMAScript Parser (using Esprima version', esprima.version, ')');
-        console.log();
-        process.exit(0);
-    } else if (entry === '--comment') {
-        options.comment = true;
-    } else if (entry === '--loc') {
-        options.loc = true;
-    } else if (entry === '--range') {
-        options.range = true;
-    } else if (entry === '--raw') {
-        options.raw = true;
-    } else if (entry === '--tokens') {
-        options.tokens = true;
-    } else if (entry === '--tolerant') {
-        options.tolerant = true;
-    } else if (entry.slice(0, 2) === '--') {
-        console.log('Error: unknown option ' + entry + '.');
-        process.exit(1);
-    } else if (typeof fname === 'string') {
-        console.log('Error: more than one input file.');
-        process.exit(1);
-    } else {
-        fname = entry;
-    }
-});
-
-if (typeof fname !== 'string') {
-    console.log('Error: no input file.');
-    process.exit(1);
-}
-
-try {
-    content = fs.readFileSync(fname, 'utf-8');
-    syntax = esprima.parse(content, options);
-    console.log(JSON.stringify(syntax, null, 4));
-} catch (e) {
-    console.log('Error: ' + e.message);
-    process.exit(1);
-}

+ 0 - 177
ParticleFilter/node_modules/ast-transform/node_modules/esprima/bin/esvalidate.js

@@ -1,177 +0,0 @@
-#!/usr/bin/env node
-/*
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true plusplus:true node:true rhino:true */
-
-var fs, esprima, options, fnames, count;
-
-if (typeof require === 'function') {
-    fs = require('fs');
-    esprima = require('esprima');
-} else if (typeof load === 'function') {
-    try {
-        load('esprima.js');
-    } catch (e) {
-        load('../esprima.js');
-    }
-}
-
-// Shims to Node.js objects when running under Rhino.
-if (typeof console === 'undefined' && typeof process === 'undefined') {
-    console = { log: print };
-    fs = { readFileSync: readFile };
-    process = { argv: arguments, exit: quit };
-    process.argv.unshift('esvalidate.js');
-    process.argv.unshift('rhino');
-}
-
-function showUsage() {
-    console.log('Usage:');
-    console.log('   esvalidate [options] file.js');
-    console.log();
-    console.log('Available options:');
-    console.log();
-    console.log('  --format=type  Set the report format, plain (default) or junit');
-    console.log('  -v, --version  Print program version');
-    console.log();
-    process.exit(1);
-}
-
-if (process.argv.length <= 2) {
-    showUsage();
-}
-
-options = {
-    format: 'plain'
-};
-
-fnames = [];
-
-process.argv.splice(2).forEach(function (entry) {
-
-    if (entry === '-h' || entry === '--help') {
-        showUsage();
-    } else if (entry === '-v' || entry === '--version') {
-        console.log('ECMAScript Validator (using Esprima version', esprima.version, ')');
-        console.log();
-        process.exit(0);
-    } else if (entry.slice(0, 9) === '--format=') {
-        options.format = entry.slice(9);
-        if (options.format !== 'plain' && options.format !== 'junit') {
-            console.log('Error: unknown report format ' + options.format + '.');
-            process.exit(1);
-        }
-    } else if (entry.slice(0, 2) === '--') {
-        console.log('Error: unknown option ' + entry + '.');
-        process.exit(1);
-    } else {
-        fnames.push(entry);
-    }
-});
-
-if (fnames.length === 0) {
-    console.log('Error: no input file.');
-    process.exit(1);
-}
-
-if (options.format === 'junit') {
-    console.log('<?xml version="1.0" encoding="UTF-8"?>');
-    console.log('<testsuites>');
-}
-
-count = 0;
-fnames.forEach(function (fname) {
-    var content, timestamp, syntax, name;
-    try {
-        content = fs.readFileSync(fname, 'utf-8');
-
-        if (content[0] === '#' && content[1] === '!') {
-            content = '//' + content.substr(2, content.length);
-        }
-
-        timestamp = Date.now();
-        syntax = esprima.parse(content, { tolerant: true });
-
-        if (options.format === 'junit') {
-
-            name = fname;
-            if (name.lastIndexOf('/') >= 0) {
-                name = name.slice(name.lastIndexOf('/') + 1);
-            }
-
-            console.log('<testsuite name="' + fname + '" errors="0" ' +
-                ' failures="' + syntax.errors.length + '" ' +
-                ' tests="' + syntax.errors.length + '" ' +
-                ' time="' + Math.round((Date.now() - timestamp) / 1000) +
-                '">');
-
-            syntax.errors.forEach(function (error) {
-                var msg = error.message;
-                msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
-                console.log('  <testcase name="Line ' + error.lineNumber + ': ' + msg + '" ' +
-                    ' time="0">');
-                console.log('    <error type="SyntaxError" message="' + error.message + '">' +
-                    error.message + '(' + name + ':' + error.lineNumber + ')' +
-                    '</error>');
-                console.log('  </testcase>');
-            });
-
-            console.log('</testsuite>');
-
-        } else if (options.format === 'plain') {
-
-            syntax.errors.forEach(function (error) {
-                var msg = error.message;
-                msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
-                msg = fname + ':' + error.lineNumber + ': ' + msg;
-                console.log(msg);
-                ++count;
-            });
-
-        }
-    } catch (e) {
-        ++count;
-        if (options.format === 'junit') {
-            console.log('<testsuite name="' + fname + '" errors="1" failures="0" tests="1" ' +
-                ' time="' + Math.round((Date.now() - timestamp) / 1000) + '">');
-            console.log(' <testcase name="' + e.message + '" ' + ' time="0">');
-            console.log(' <error type="ParseError" message="' + e.message + '">' +
-                e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') +
-                ')</error>');
-            console.log(' </testcase>');
-            console.log('</testsuite>');
-        } else {
-            console.log('Error: ' + e.message);
-        }
-    }
-});
-
-if (options.format === 'junit') {
-    console.log('</testsuites>');
-}
-
-if (count > 0) {
-    process.exit(1);
-}

File diff suppressed because it is too large
+ 0 - 179
ParticleFilter/node_modules/ast-transform/node_modules/esprima/esprima.js


+ 0 - 104
ParticleFilter/node_modules/ast-transform/node_modules/esprima/package.json

@@ -1,104 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "esprima",
-        "raw": "esprima@~1.0.4",
-        "rawSpec": "~1.0.4",
-        "scope": null,
-        "spec": ">=1.0.4 <1.1.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform"
-    ]
-  ],
-  "_from": "esprima@>=1.0.4 <1.1.0",
-  "_id": "esprima@1.0.4",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/ast-transform/esprima",
-  "_npmUser": {
-    "email": "ariya.hidayat@gmail.com",
-    "name": "ariya"
-  },
-  "_npmVersion": "1.1.61",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "esprima",
-    "raw": "esprima@~1.0.4",
-    "rawSpec": "~1.0.4",
-    "scope": null,
-    "spec": ">=1.0.4 <1.1.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform",
-    "/ast-transform/escodegen"
-  ],
-  "_resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
-  "_shasum": "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad",
-  "_shrinkwrap": null,
-  "_spec": "esprima@~1.0.4",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform",
-  "bin": {
-    "esparse": "./bin/esparse.js",
-    "esvalidate": "./bin/esvalidate.js"
-  },
-  "bugs": {
-    "url": "https://github.com/ariya/esprima/issues"
-  },
-  "dependencies": {},
-  "description": "ECMAScript parsing infrastructure for multipurpose analysis",
-  "devDependencies": {},
-  "directories": {},
-  "dist": {
-    "shasum": "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad",
-    "tarball": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"
-  },
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "files": [
-    "bin",
-    "test/run.js",
-    "test/runner.js",
-    "test/test.js",
-    "test/compat.js",
-    "test/reflect.js",
-    "esprima.js"
-  ],
-  "homepage": "http://esprima.org",
-  "keywords": [
-    "ast",
-    "ecmascript",
-    "javascript",
-    "parser",
-    "syntax"
-  ],
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD"
-    }
-  ],
-  "main": "esprima.js",
-  "maintainers": [
-    {
-      "email": "ariya.hidayat@gmail.com",
-      "name": "ariya"
-    }
-  ],
-  "name": "esprima",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/ariya/esprima.git"
-  },
-  "scripts": {
-    "benchmark": "node test/benchmarks.js",
-    "benchmark-quick": "node test/benchmarks.js quick",
-    "test": "node test/run.js"
-  },
-  "version": "1.0.4"
-}

+ 0 - 239
ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/compat.js

@@ -1,239 +0,0 @@
-/*
-  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
-  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint node: true */
-/*global document: true, window:true, esprima: true, testReflect: true */
-
-var runTests;
-
-function getContext(esprima, reportCase, reportFailure) {
-    'use strict';
-
-    var Reflect, Pattern;
-
-    // Maps Mozilla Reflect object to our Esprima parser.
-    Reflect = {
-        parse: function (code) {
-            var result;
-
-            reportCase(code);
-
-            try {
-                result = esprima.parse(code);
-            } catch (error) {
-                result = error;
-            }
-
-            return result;
-        }
-    };
-
-    // This is used by Reflect test suite to match a syntax tree.
-    Pattern = function (obj) {
-        var pattern;
-
-        // Poor man's deep object cloning.
-        pattern = JSON.parse(JSON.stringify(obj));
-
-        // Special handling for regular expression literal since we need to
-        // convert it to a string literal, otherwise it will be decoded
-        // as object "{}" and the regular expression would be lost.
-        if (obj.type && obj.type === 'Literal') {
-            if (obj.value instanceof RegExp) {
-                pattern = {
-                    type: obj.type,
-                    value: obj.value.toString()
-                };
-            }
-        }
-
-        // Special handling for branch statement because SpiderMonkey
-        // prefers to put the 'alternate' property before 'consequent'.
-        if (obj.type && obj.type === 'IfStatement') {
-            pattern = {
-                type: pattern.type,
-                test: pattern.test,
-                consequent: pattern.consequent,
-                alternate: pattern.alternate
-            };
-        }
-
-        // Special handling for do while statement because SpiderMonkey
-        // prefers to put the 'test' property before 'body'.
-        if (obj.type && obj.type === 'DoWhileStatement') {
-            pattern = {
-                type: pattern.type,
-                body: pattern.body,
-                test: pattern.test
-            };
-        }
-
-        function adjustRegexLiteralAndRaw(key, value) {
-            if (key === 'value' && value instanceof RegExp) {
-                value = value.toString();
-            } else if (key === 'raw' && typeof value === "string") {
-                // Ignore Esprima-specific 'raw' property.
-                return undefined;
-            }
-            return value;
-        }
-
-        if (obj.type && (obj.type === 'Program')) {
-            pattern.assert = function (tree) {
-                var actual, expected;
-                actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4);
-                expected = JSON.stringify(obj, null, 4);
-
-                if (expected !== actual) {
-                    reportFailure(expected, actual);
-                }
-            };
-        }
-
-        return pattern;
-    };
-
-    return {
-        Reflect: Reflect,
-        Pattern: Pattern
-    };
-}
-
-if (typeof window !== 'undefined') {
-    // Run all tests in a browser environment.
-    runTests = function () {
-        'use strict';
-
-        var total = 0,
-            failures = 0;
-
-        function setText(el, str) {
-            if (typeof el.innerText === 'string') {
-                el.innerText = str;
-            } else {
-                el.textContent = str;
-            }
-        }
-
-        function reportCase(code) {
-            var report, e;
-            report = document.getElementById('report');
-            e = document.createElement('pre');
-            e.setAttribute('class', 'code');
-            setText(e, code);
-            report.appendChild(e);
-            total += 1;
-        }
-
-        function reportFailure(expected, actual) {
-            var report, e;
-
-            failures += 1;
-
-            report = document.getElementById('report');
-
-            e = document.createElement('p');
-            setText(e, 'Expected');
-            report.appendChild(e);
-
-            e = document.createElement('pre');
-            e.setAttribute('class', 'expected');
-            setText(e, expected);
-            report.appendChild(e);
-
-            e = document.createElement('p');
-            setText(e, 'Actual');
-            report.appendChild(e);
-
-            e = document.createElement('pre');
-            e.setAttribute('class', 'actual');
-            setText(e, actual);
-            report.appendChild(e);
-        }
-
-        setText(document.getElementById('version'), esprima.version);
-
-        window.setTimeout(function () {
-            var tick, context = getContext(esprima, reportCase, reportFailure);
-
-            tick = new Date();
-            testReflect(context.Reflect, context.Pattern);
-            tick = (new Date()) - tick;
-
-            if (failures > 0) {
-                setText(document.getElementById('status'), total + ' tests. ' +
-                    'Failures: ' + failures + '. ' + tick + ' ms');
-            } else {
-                setText(document.getElementById('status'), total + ' tests. ' +
-                    'No failure. ' + tick + ' ms');
-            }
-        }, 513);
-    };
-} else {
-    (function (global) {
-        'use strict';
-        var esprima = require('../esprima'),
-            tick,
-            total = 0,
-            failures = [],
-            header,
-            current,
-            context;
-
-        function reportCase(code) {
-            total += 1;
-            current = code;
-        }
-
-        function reportFailure(expected, actual) {
-            failures.push({
-                source: current,
-                expected: expected.toString(),
-                actual: actual.toString()
-            });
-        }
-
-        context = getContext(esprima, reportCase, reportFailure);
-
-        tick = new Date();
-        require('./reflect').testReflect(context.Reflect, context.Pattern);
-        tick = (new Date()) - tick;
-
-        header = total + ' tests. ' + failures.length + ' failures. ' +
-            tick + ' ms';
-        if (failures.length) {
-            console.error(header);
-            failures.forEach(function (failure) {
-                console.error(failure.source + ': Expected\n    ' +
-                    failure.expected.split('\n').join('\n    ') +
-                    '\nto match\n    ' + failure.actual);
-            });
-        } else {
-            console.log(header);
-        }
-        process.exit(failures.length === 0 ? 0 : 1);
-    }(this));
-}
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 422
ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/reflect.js

@@ -1,422 +0,0 @@
-// This is modified from Mozilla Reflect.parse test suite (the file is located
-// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree).
-//
-// Some notable changes:
-//   * Removed unsupported features (destructuring, let, comprehensions...).
-//   * Removed tests for E4X (ECMAScript for XML).
-//   * Removed everything related to builder.
-//   * Enclosed every 'Pattern' construct with a scope.
-//   * Tweaked some expected tree to remove generator field.
-//   * Removed the test for bug 632030 and bug 632024.
-
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/licenses/publicdomain/
- */
-
-(function (exports) {
-
-function testReflect(Reflect, Pattern) {
-
-function program(elts) { return Pattern({ type: "Program", body: elts }) }
-function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) }
-function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) }
-function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) }
-function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) }
-function lit(val) { return Pattern({ type: "Literal", value: val }) }
-var thisExpr = Pattern({ type: "ThisExpression" });
-function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration",
-                                             id: id,
-                                             params: params,
-                                             defaults: [],
-                                             body: body,
-                                             rest: null,
-                                             generator: false,
-                                             expression: false
-                                             }) }
-function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration",
-                                                id: id,
-                                                params: params,
-                                                defaults: [],
-                                                body: body,
-                                                rest: null,
-                                                generator: false,
-                                                expression: false
-                                                }) }
-function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) }
-function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) }
-function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) }
-function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) }
-function ident(name) { return Pattern({ type: "Identifier", name: name }) }
-function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) }
-function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) }
-function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) }
-function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) }
-function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) }
-function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) }
-function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) }
-function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) }
-var emptyStmt = Pattern({ type: "EmptyStatement" });
-function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) }
-function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) }
-function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) }
-function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) }
-function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) }
-function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) }
-function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) }
-function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) }
-function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } }
-function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) }
-function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) }
-function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression",
-                                                id: id,
-                                                params: args,
-                                                defaults: [],
-                                                body: body,
-                                                rest: null,
-                                                generator: false,
-                                                expression: false
-                                                }) }
-function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression",
-                                              id: id,
-                                              params: args,
-                                              defaults: [],
-                                              body: body,
-                                              rest: null,
-                                              generator: false,
-                                              expression: false
-                                              }) }
-
-function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg, prefix: true }) }
-function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) }
-function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) }
-function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) }
-function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) }
-
-function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) }
-function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) }
-function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) }
-function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) }
-function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) }
-function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) }
-function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) }
-
-function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) }
-function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) }
-
-function localSrc(src) { return "(function(){ " + src + " })" }
-function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) }
-function blockSrc(src) { return "(function(){ { " + src + " } })" }
-function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) }
-
-function assertBlockStmt(src, patt) {
-    blockPatt(patt).assert(Reflect.parse(blockSrc(src)));
-}
-
-function assertBlockExpr(src, patt) {
-    assertBlockStmt(src, exprStmt(patt));
-}
-
-function assertBlockDecl(src, patt, builder) {
-    blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder}));
-}
-
-function assertLocalStmt(src, patt) {
-    localPatt(patt).assert(Reflect.parse(localSrc(src)));
-}
-
-function assertLocalExpr(src, patt) {
-    assertLocalStmt(src, exprStmt(patt));
-}
-
-function assertLocalDecl(src, patt) {
-    localPatt(patt).assert(Reflect.parse(localSrc(src)));
-}
-
-function assertGlobalStmt(src, patt, builder) {
-    program([patt]).assert(Reflect.parse(src, {builder: builder}));
-}
-
-function assertGlobalExpr(src, patt, builder) {
-    program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder}));
-    //assertStmt(src, exprStmt(patt));
-}
-
-function assertGlobalDecl(src, patt) {
-    program([patt]).assert(Reflect.parse(src));
-}
-
-function assertProg(src, patt) {
-    program(patt).assert(Reflect.parse(src));
-}
-
-function assertStmt(src, patt) {
-    assertLocalStmt(src, patt);
-    assertGlobalStmt(src, patt);
-    assertBlockStmt(src, patt);
-}
-
-function assertExpr(src, patt) {
-    assertLocalExpr(src, patt);
-    assertGlobalExpr(src, patt);
-    assertBlockExpr(src, patt);
-}
-
-function assertDecl(src, patt) {
-    assertLocalDecl(src, patt);
-    assertGlobalDecl(src, patt);
-    assertBlockDecl(src, patt);
-}
-
-function assertError(src, errorType) {
-    try {
-        Reflect.parse(src);
-    } catch (e) {
-        return;
-    }
-    throw new Error("expected " + errorType.name + " for " + uneval(src));
-}
-
-
-// general tests
-
-// NB: These are useful but for now jit-test doesn't do I/O reliably.
-
-//program(_).assert(Reflect.parse(snarf('data/flapjax.txt')));
-//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt')));
-//program(_).assert(Reflect.parse(snarf('data/prototype.js')));
-//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js')));
-//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js')));
-
-
-// declarations
-
-assertDecl("var x = 1, y = 2, z = 3",
-           varDecl([declarator(ident("x"), lit(1)),
-                    declarator(ident("y"), lit(2)),
-                    declarator(ident("z"), lit(3))]));
-assertDecl("var x, y, z",
-           varDecl([declarator(ident("x"), null),
-                    declarator(ident("y"), null),
-                    declarator(ident("z"), null)]));
-assertDecl("function foo() { }",
-           funDecl(ident("foo"), [], blockStmt([])));
-assertDecl("function foo() { return 42 }",
-           funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))])));
-
-
-// Bug 591437: rebound args have their defs turned into uses
-assertDecl("function f(a) { function a() { } }",
-           funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))])));
-assertDecl("function f(a,b,c) { function b() { } }",
-           funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))])));
-
-// expressions
-
-assertExpr("true", lit(true));
-assertExpr("false", lit(false));
-assertExpr("42", lit(42));
-assertExpr("(/asdf/)", lit(/asdf/));
-assertExpr("this", thisExpr);
-assertExpr("foo", ident("foo"));
-assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar")));
-assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar")));
-assertExpr("(function(){})", funExpr(null, [], blockStmt([])));
-assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([])));
-assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([])));
-assertExpr("(++x)", updExpr("++", ident("x"), true));
-assertExpr("(x++)", updExpr("++", ident("x"), false));
-assertExpr("(+x)", unExpr("+", ident("x")));
-assertExpr("(-x)", unExpr("-", ident("x")));
-assertExpr("(!x)", unExpr("!", ident("x")));
-assertExpr("(~x)", unExpr("~", ident("x")));
-assertExpr("(delete x)", unExpr("delete", ident("x")));
-assertExpr("(typeof x)", unExpr("typeof", ident("x")));
-assertExpr("(void x)", unExpr("void", ident("x")));
-assertExpr("(x == y)", binExpr("==", ident("x"), ident("y")));
-assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y")));
-assertExpr("(x === y)", binExpr("===", ident("x"), ident("y")));
-assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y")));
-assertExpr("(x < y)", binExpr("<", ident("x"), ident("y")));
-assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y")));
-assertExpr("(x > y)", binExpr(">", ident("x"), ident("y")));
-assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y")));
-assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y")));
-assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y")));
-assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y")));
-assertExpr("(x + y)", binExpr("+", ident("x"), ident("y")));
-assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z")));
-assertExpr("(x - y)", binExpr("-", ident("x"), ident("y")));
-assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z")));
-assertExpr("(x * y)", binExpr("*", ident("x"), ident("y")));
-assertExpr("(x / y)", binExpr("/", ident("x"), ident("y")));
-assertExpr("(x % y)", binExpr("%", ident("x"), ident("y")));
-assertExpr("(x | y)", binExpr("|", ident("x"), ident("y")));
-assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y")));
-assertExpr("(x & y)", binExpr("&", ident("x"), ident("y")));
-assertExpr("(x in y)", binExpr("in", ident("x"), ident("y")));
-assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y")));
-assertExpr("(x = y)", aExpr("=", ident("x"), ident("y")));
-assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y")));
-assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y")));
-assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y")));
-assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y")));
-assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y")));
-assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y")));
-assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y")));
-assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y")));
-assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y")));
-assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y")));
-assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y")));
-assertExpr("(x || y)", logExpr("||", ident("x"), ident("y")));
-assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y")));
-assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z")))
-assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z")));
-assertExpr("(x,y)", seqExpr([ident("x"),ident("y")]))
-assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")]))
-assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")]));
-assertExpr("(new Object)", newExpr(ident("Object"), []));
-assertExpr("(new Object())", newExpr(ident("Object"), []));
-assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)]));
-assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)]));
-assertExpr("(String())", callExpr(ident("String"), []));
-assertExpr("(String(42))", callExpr(ident("String"), [lit(42)]));
-assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)]));
-assertExpr("[]", arrExpr([]));
-assertExpr("[1]", arrExpr([lit(1)]));
-assertExpr("[1,2]", arrExpr([lit(1),lit(2)]));
-assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)]));
-assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)]));
-assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)]));
-assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)]));
-assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)]));
-assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)]));
-assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)]));
-assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)]));
-assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)]));
-assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined]));
-assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined]));
-assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined]));
-assertExpr("({})", objExpr([]));
-assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")]));
-assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"),
-                                    objProp(ident("y"), lit(2), "init")]));
-assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"),
-                                         objProp(ident("y"), lit(2), "init"),
-                                         objProp(ident("z"), lit(3), "init") ]));
-assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"),
-                                           objProp(lit("y"), lit(2), "init"),
-                                           objProp(ident("z"), lit(3), "init") ]));
-assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"),
-                                             objProp(lit("y"), lit(2), "init"),
-                                             objProp(ident("z"), lit(3), "init") ]));
-assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"),
-                                             objProp(lit("y"), lit(2), "init"),
-                                             objProp(lit(3), lit(3), "init") ]));
-
-// Bug 571617: eliminate constant-folding
-assertExpr("2 + 3", binExpr("+", lit(2), lit(3)));
-
-// Bug 632026: constant-folding
-assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a"))));
-
-// Bug 632056: constant-folding
-program([exprStmt(ident("f")),
-         ifStmt(lit(1),
-                funDecl(ident("f"), [], blockStmt([])),
-                null)]).assert(Reflect.parse("f; if (1) function f(){}"));
-
-// statements
-
-assertStmt("throw 42", throwStmt(lit(42)));
-assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null)));
-assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null)));
-assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null)));
-assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null)));
-assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null)));
-assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null)));
-assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null)));
-assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null)));
-assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null)));
-assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null)));
-assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null)));
-assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null)));
-assertStmt("{ }", blockStmt([]));
-assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]));
-assertStmt(";", emptyStmt);
-assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null));
-assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true))));
-assertStmt("if (foo) { throw 1; throw 2; throw 3; }",
-           ifStmt(ident("foo"),
-                  blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]),
-                  null));
-assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;",
-           ifStmt(ident("foo"),
-                  blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]),
-                  exprStmt(lit(true))));
-assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo")))));
-assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo")))));
-assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([])));
-assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))])));
-assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([])));
-assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))])));
-assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo")));
-assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo")));
-assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }",
-           switchStmt(ident("foo"),
-                      [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]),
-                        caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]),
-                        defaultClause([ exprStmt(lit(3)) ]) ]));
-assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }",
-           switchStmt(ident("foo"),
-                      [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]),
-                        caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]),
-                        defaultClause([ exprStmt(lit(3)) ]),
-                        caseClause(lit(42), [ exprStmt(lit(42)) ]) ]));
-assertStmt("try { } catch (e) { }",
-           tryStmt(blockStmt([]),
-                   [],
-                   [ catchClause(ident("e"), null, blockStmt([])) ],
-                   null));
-assertStmt("try { } catch (e) { } finally { }",
-           tryStmt(blockStmt([]),
-                   [],
-                   [ catchClause(ident("e"), null, blockStmt([])) ],
-                   blockStmt([])));
-assertStmt("try { } finally { }",
-           tryStmt(blockStmt([]),
-                   [],
-                   [],
-                   blockStmt([])));
-
-// redeclarations (TOK_NAME nodes with lexdef)
-
-assertStmt("function f() { function g() { } function g() { } }",
-           funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])),
-                                              funDecl(ident("g"), [], blockStmt([]))])));
-
-assertStmt("function f() { function g() { } function g() { return 42 } }",
-           funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])),
-                                              funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))])));
-
-assertStmt("function f() { var x = 42; var x = 43; }",
-           funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]),
-                                              varDecl([declarator(ident("x"),lit(43))])])));
-
-// getters and setters
-
- assertExpr("({ get x() { return 42 } })",
-            objExpr([ objProp(ident("x"),
-                              funExpr(null, [], blockStmt([returnStmt(lit(42))])),
-                              "get" ) ]));
- assertExpr("({ set x(v) { return 42 } })",
-            objExpr([ objProp(ident("x"),
-                              funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])),
-                              "set" ) ]));
-
-}
-
-exports.testReflect = testReflect;
-
-}(typeof exports === 'undefined' ? this : exports));

+ 0 - 66
ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/run.js

@@ -1,66 +0,0 @@
-/*
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint node:true */
-
-(function () {
-    'use strict';
-
-    var child = require('child_process'),
-        nodejs = '"' + process.execPath + '"',
-        ret = 0,
-        suites,
-        index;
-
-    suites = [
-        'runner',
-        'compat'
-    ];
-
-    function nextTest() {
-        var suite = suites[index];
-
-        if (index < suites.length) {
-            child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) {
-                if (stdout) {
-                    process.stdout.write(suite + ': ' + stdout);
-                }
-                if (stderr) {
-                    process.stderr.write(suite + ': ' + stderr);
-                }
-                if (err) {
-                    ret = err.code;
-                }
-                index += 1;
-                nextTest();
-            });
-        } else {
-            process.exit(ret);
-        }
-    }
-
-    index = 0;
-    nextTest();
-}());

+ 0 - 387
ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/runner.js

@@ -1,387 +0,0 @@
-/*
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
-  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint browser:true node:true */
-/*global esprima:true, testFixture:true */
-
-var runTests;
-
-// Special handling for regular expression literal since we need to
-// convert it to a string literal, otherwise it will be decoded
-// as object "{}" and the regular expression would be lost.
-function adjustRegexLiteral(key, value) {
-    'use strict';
-    if (key === 'value' && value instanceof RegExp) {
-        value = value.toString();
-    }
-    return value;
-}
-
-function NotMatchingError(expected, actual) {
-    'use strict';
-    Error.call(this, 'Expected ');
-    this.expected = expected;
-    this.actual = actual;
-}
-NotMatchingError.prototype = new Error();
-
-function errorToObject(e) {
-    'use strict';
-    var msg = e.toString();
-
-    // Opera 9.64 produces an non-standard string in toString().
-    if (msg.substr(0, 6) !== 'Error:') {
-        if (typeof e.message === 'string') {
-            msg = 'Error: ' + e.message;
-        }
-    }
-
-    return {
-        index: e.index,
-        lineNumber: e.lineNumber,
-        column: e.column,
-        message: msg
-    };
-}
-
-function testParse(esprima, code, syntax) {
-    'use strict';
-    var expected, tree, actual, options, StringObject, i, len, err;
-
-    // alias, so that JSLint does not complain.
-    StringObject = String;
-
-    options = {
-        comment: (typeof syntax.comments !== 'undefined'),
-        range: true,
-        loc: true,
-        tokens: (typeof syntax.tokens !== 'undefined'),
-        raw: true,
-        tolerant: (typeof syntax.errors !== 'undefined')
-    };
-
-    if (typeof syntax.tokens !== 'undefined') {
-        if (syntax.tokens.length > 0) {
-            options.range = (typeof syntax.tokens[0].range !== 'undefined');
-            options.loc = (typeof syntax.tokens[0].loc !== 'undefined');
-        }
-    }
-
-    if (typeof syntax.comments !== 'undefined') {
-        if (syntax.comments.length > 0) {
-            options.range = (typeof syntax.comments[0].range !== 'undefined');
-            options.loc = (typeof syntax.comments[0].loc !== 'undefined');
-        }
-    }
-
-    expected = JSON.stringify(syntax, null, 4);
-    try {
-        tree = esprima.parse(code, options);
-        tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0];
-
-        if (options.tolerant) {
-            for (i = 0, len = tree.errors.length; i < len; i += 1) {
-                tree.errors[i] = errorToObject(tree.errors[i]);
-            }
-        }
-
-        actual = JSON.stringify(tree, adjustRegexLiteral, 4);
-
-        // Only to ensure that there is no error when using string object.
-        esprima.parse(new StringObject(code), options);
-
-    } catch (e) {
-        throw new NotMatchingError(expected, e.toString());
-    }
-    if (expected !== actual) {
-        throw new NotMatchingError(expected, actual);
-    }
-
-    function filter(key, value) {
-        if (key === 'value' && value instanceof RegExp) {
-            value = value.toString();
-        }
-        return (key === 'loc' || key === 'range') ? undefined : value;
-    }
-
-    if (options.tolerant) {
-        return;
-    }
-
-
-    // Check again without any location info.
-    options.range = false;
-    options.loc = false;
-    expected = JSON.stringify(syntax, filter, 4);
-    try {
-        tree = esprima.parse(code, options);
-        tree = (options.comment || options.tokens) ? tree : tree.body[0];
-
-        if (options.tolerant) {
-            for (i = 0, len = tree.errors.length; i < len; i += 1) {
-                tree.errors[i] = errorToObject(tree.errors[i]);
-            }
-        }
-
-        actual = JSON.stringify(tree, filter, 4);
-    } catch (e) {
-        throw new NotMatchingError(expected, e.toString());
-    }
-    if (expected !== actual) {
-        throw new NotMatchingError(expected, actual);
-    }
-}
-
-function testError(esprima, code, exception) {
-    'use strict';
-    var i, options, expected, actual, handleInvalidRegexFlag;
-
-    // Different parsing options should give the same error.
-    options = [
-        {},
-        { comment: true },
-        { raw: true },
-        { raw: true, comment: true }
-    ];
-
-    // If handleInvalidRegexFlag is true, an invalid flag in a regular expression
-    // will throw an exception. In some old version V8, this is not the case
-    // and hence handleInvalidRegexFlag is false.
-    handleInvalidRegexFlag = false;
-    try {
-        'test'.match(new RegExp('[a-z]', 'x'));
-    } catch (e) {
-        handleInvalidRegexFlag = true;
-    }
-
-    expected = JSON.stringify(exception);
-
-    for (i = 0; i < options.length; i += 1) {
-
-        try {
-            esprima.parse(code, options[i]);
-        } catch (e) {
-            actual = JSON.stringify(errorToObject(e));
-        }
-
-        if (expected !== actual) {
-
-            // Compensate for old V8 which does not handle invalid flag.
-            if (exception.message.indexOf('Invalid regular expression') > 0) {
-                if (typeof actual === 'undefined' && !handleInvalidRegexFlag) {
-                    return;
-                }
-            }
-
-            throw new NotMatchingError(expected, actual);
-        }
-
-    }
-}
-
-function testAPI(esprima, code, result) {
-    'use strict';
-    var expected, res, actual;
-
-    expected = JSON.stringify(result.result, null, 4);
-    try {
-        if (typeof result.property !== 'undefined') {
-            res = esprima[result.property];
-        } else {
-            res = esprima[result.call].apply(esprima, result.args);
-        }
-        actual = JSON.stringify(res, adjustRegexLiteral, 4);
-    } catch (e) {
-        throw new NotMatchingError(expected, e.toString());
-    }
-    if (expected !== actual) {
-        throw new NotMatchingError(expected, actual);
-    }
-}
-
-function runTest(esprima, code, result) {
-    'use strict';
-    if (result.hasOwnProperty('lineNumber')) {
-        testError(esprima, code, result);
-    } else if (result.hasOwnProperty('result')) {
-        testAPI(esprima, code, result);
-    } else {
-        testParse(esprima, code, result);
-    }
-}
-
-if (typeof window !== 'undefined') {
-    // Run all tests in a browser environment.
-    runTests = function () {
-        'use strict';
-        var total = 0,
-            failures = 0,
-            category,
-            fixture,
-            source,
-            tick,
-            expected,
-            index,
-            len;
-
-        function setText(el, str) {
-            if (typeof el.innerText === 'string') {
-                el.innerText = str;
-            } else {
-                el.textContent = str;
-            }
-        }
-
-        function startCategory(category) {
-            var report, e;
-            report = document.getElementById('report');
-            e = document.createElement('h4');
-            setText(e, category);
-            report.appendChild(e);
-        }
-
-        function reportSuccess(code) {
-            var report, e;
-            report = document.getElementById('report');
-            e = document.createElement('pre');
-            e.setAttribute('class', 'code');
-            setText(e, code);
-            report.appendChild(e);
-        }
-
-        function reportFailure(code, expected, actual) {
-            var report, e;
-
-            report = document.getElementById('report');
-
-            e = document.createElement('p');
-            setText(e, 'Code:');
-            report.appendChild(e);
-
-            e = document.createElement('pre');
-            e.setAttribute('class', 'code');
-            setText(e, code);
-            report.appendChild(e);
-
-            e = document.createElement('p');
-            setText(e, 'Expected');
-            report.appendChild(e);
-
-            e = document.createElement('pre');
-            e.setAttribute('class', 'expected');
-            setText(e, expected);
-            report.appendChild(e);
-
-            e = document.createElement('p');
-            setText(e, 'Actual');
-            report.appendChild(e);
-
-            e = document.createElement('pre');
-            e.setAttribute('class', 'actual');
-            setText(e, actual);
-            report.appendChild(e);
-        }
-
-        setText(document.getElementById('version'), esprima.version);
-
-        tick = new Date();
-        for (category in testFixture) {
-            if (testFixture.hasOwnProperty(category)) {
-                startCategory(category);
-                fixture = testFixture[category];
-                for (source in fixture) {
-                    if (fixture.hasOwnProperty(source)) {
-                        expected = fixture[source];
-                        total += 1;
-                        try {
-                            runTest(esprima, source, expected);
-                            reportSuccess(source, JSON.stringify(expected, null, 4));
-                        } catch (e) {
-                            failures += 1;
-                            reportFailure(source, e.expected, e.actual);
-                        }
-                    }
-                }
-            }
-        }
-        tick = (new Date()) - tick;
-
-        if (failures > 0) {
-            setText(document.getElementById('status'), total + ' tests. ' +
-                'Failures: ' + failures + '. ' + tick + ' ms');
-        } else {
-            setText(document.getElementById('status'), total + ' tests. ' +
-                'No failure. ' + tick + ' ms');
-        }
-    };
-} else {
-    (function () {
-        'use strict';
-
-        var esprima = require('../esprima'),
-            vm = require('vm'),
-            fs = require('fs'),
-            total = 0,
-            failures = [],
-            tick = new Date(),
-            expected,
-            header;
-
-        vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8'));
-
-        Object.keys(testFixture).forEach(function (category) {
-            Object.keys(testFixture[category]).forEach(function (source) {
-                total += 1;
-                expected = testFixture[category][source];
-                try {
-                    runTest(esprima, source, expected);
-                } catch (e) {
-                    e.source = source;
-                    failures.push(e);
-                }
-            });
-        });
-        tick = (new Date()) - tick;
-
-        header = total + ' tests. ' + failures.length + ' failures. ' +
-            tick + ' ms';
-        if (failures.length) {
-            console.error(header);
-            failures.forEach(function (failure) {
-                console.error(failure.source + ': Expected\n    ' +
-                    failure.expected.split('\n').join('\n    ') +
-                    '\nto match\n    ' + failure.actual);
-            });
-        } else {
-            console.log(header);
-        }
-        process.exit(failures.length === 0 ? 0 : 1);
-    }());
-}

+ 0 - 20238
ParticleFilter/node_modules/ast-transform/node_modules/esprima/test/test.js

@@ -1,20238 +0,0 @@
-/*
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
-  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
-  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
-  Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-var testFixture = {
-
-    'Primary Expression': {
-
-        'this\n': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'ThisExpression',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 0 }
-                }
-            }],
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 0 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'this',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            }]
-        },
-
-        'null\n': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: null,
-                    raw: 'null',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 0 }
-                }
-            }],
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 0 }
-            },
-            tokens: [{
-                type: 'Null',
-                value: 'null',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            }]
-        },
-
-        '\n    42\n\n': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 2, column: 4 },
-                        end: { line: 2, column: 6 }
-                    }
-                },
-                range: [5, 9],
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 4, column: 0 }
-                }
-            }],
-            range: [5, 9],
-            loc: {
-                start: { line: 2, column: 4 },
-                end: { line: 4, column: 0 }
-            },
-            tokens: [{
-                type: 'Numeric',
-                value: '42',
-                range: [5, 7],
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 2, column: 6 }
-                }
-            }]
-        },
-
-        '(1 + 2 ) * 3': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '*',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '+',
-                    left: {
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [1, 2],
-                        loc: {
-                            start: { line: 1, column: 1 },
-                            end: { line: 1, column: 2 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 2,
-                        raw: '2',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [1, 6],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 3,
-                    raw: '3',
-                    range: [11, 12],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 12],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 12 }
-                }
-            },
-            range: [0, 12],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 12 }
-            }
-        }
-
-    },
-
-    'Grouping Operator': {
-
-        '(1) + (2  ) + 3': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '+',
-                    left: {
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [1, 2],
-                        loc: {
-                            start: { line: 1, column: 1 },
-                            end: { line: 1, column: 2 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 2,
-                        raw: '2',
-                        range: [7, 8],
-                        loc: {
-                            start: { line: 1, column: 7 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    range: [0, 11],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 3,
-                    raw: '3',
-                    range: [14, 15],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 15 }
-                    }
-                },
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        },
-
-        '4 + 5 << (6)': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<<',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '+',
-                    left: {
-                        type: 'Literal',
-                        value: 4,
-                        raw: '4',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 5,
-                        raw: '5',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 6,
-                    raw: '6',
-                    range: [10, 11],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 12],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 12 }
-                }
-            },
-            range: [0, 12],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 12 }
-            }
-        }
-
-    },
-
-    'Array Initializer': {
-
-        'x = []': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'ArrayExpression',
-                        elements: [],
-                        range: [4, 6],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [0, 6],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            }],
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            },
-            tokens: [{
-                type: 'Identifier',
-                value: 'x',
-                range: [0, 1],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 1 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [2, 3],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '[',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: ']',
-                range: [5, 6],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 6 }
-                }
-            }]
-        },
-
-        'x = [ ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [4, 7],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x = [ 42 ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [{
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [6, 8],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 8 }
-                        }
-                    }],
-                    range: [4, 10],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                range: [0, 10],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            range: [0, 10],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 10 }
-            }
-        },
-
-        'x = [ 42, ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [{
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [6, 8],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 8 }
-                        }
-                    }],
-                    range: [4, 11],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'x = [ ,, 42 ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [
-                        null,
-                        null,
-                        {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [9, 11],
-                            loc: {
-                                start: { line: 1, column: 9 },
-                                end: { line: 1, column: 11 }
-                            }
-                        }],
-                    range: [4, 13],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'x = [ 1, 2, 3, ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [{
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    }, {
-                        type: 'Literal',
-                        value: 2,
-                        raw: '2',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    }, {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [12, 13],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 13 }
-                        }
-                    }],
-                    range: [4, 16],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        'x = [ 1, 2,, 3, ]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [{
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    }, {
-                        type: 'Literal',
-                        value: 2,
-                        raw: '2',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    }, null, {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [13, 14],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 14 }
-                        }
-                    }],
-                    range: [4, 17],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        '日本語 = []': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: '日本語',
-                    range: [0, 3],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [6, 8],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'T\u203F = []': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'T\u203F',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'T\u200C = []': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'T\u200C',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'T\u200D = []': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'T\u200D',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '\u2163\u2161 = []': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: '\u2163\u2161',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '\u2163\u2161\u200A=\u2009[]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: '\u2163\u2161',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        }
-
-    },
-
-    'Object Initializer': {
-
-        'x = {}': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [],
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x = { }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [],
-                    range: [4, 7],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x = { answer: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'answer',
-                            range: [6, 12],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [14, 16],
-                            loc: {
-                                start: { line: 1, column: 14 },
-                                end: { line: 1, column: 16 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 16],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 16 }
-                        }
-                    }],
-                    range: [4, 18],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                range: [0, 18],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            }
-        },
-
-        'x = { if: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'if',
-                            range: [6, 8],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 8 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [10, 12],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 12],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 12 }
-                        }
-                    }],
-                    range: [4, 14],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        'x = { true: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'true',
-                            range: [6, 10],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 10 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [12, 14],
-                            loc: {
-                                start: { line: 1, column: 12 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 14],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 14 }
-                        }
-                    }],
-                    range: [4, 16],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        'x = { false: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'false',
-                            range: [6, 11],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 11 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [13, 15],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 15],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 15 }
-                        }
-                    }],
-                    range: [4, 17],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        'x = { null: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'null',
-                            range: [6, 10],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 10 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [12, 14],
-                            loc: {
-                                start: { line: 1, column: 12 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 14],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 14 }
-                        }
-                    }],
-                    range: [4, 16],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        'x = { "answer": 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Literal',
-                            value: 'answer',
-                            raw: '"answer"',
-                            range: [6, 14],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [16, 18],
-                            loc: {
-                                start: { line: 1, column: 16 },
-                                end: { line: 1, column: 18 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 18],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 18 }
-                        }
-                    }],
-                    range: [4, 20],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                range: [0, 20],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 20 }
-                }
-            },
-            range: [0, 20],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 20 }
-            }
-        },
-
-        'x = { x: 1, x: 2 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [
-                        {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [6, 7],
-                                loc: {
-                                    start: { line: 1, column: 6 },
-                                    end: { line: 1, column: 7 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 1,
-                                raw: '1',
-                                range: [9, 10],
-                                loc: {
-                                    start: { line: 1, column: 9 },
-                                    end: { line: 1, column: 10 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [6, 10],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 10 }
-                            }
-                        },
-                        {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [12, 13],
-                                loc: {
-                                    start: { line: 1, column: 12 },
-                                    end: { line: 1, column: 13 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 2,
-                                raw: '2',
-                                range: [15, 16],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 16 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [12, 16],
-                            loc: {
-                                start: { line: 1, column: 12 },
-                                end: { line: 1, column: 16 }
-                            }
-                        }
-                    ],
-                    range: [4, 18],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                range: [0, 18],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            }
-        },
-
-        'x = { get width() { return m_width } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'width',
-                            range: [10, 15],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ReturnStatement',
-                                    argument: {
-                                        type: 'Identifier',
-                                        name: 'm_width',
-                                        range: [27, 34],
-                                        loc: {
-                                            start: { line: 1, column: 27 },
-                                            end: { line: 1, column: 34 }
-                                        }
-                                    },
-                                    range: [20, 35],
-                                    loc: {
-                                        start: { line: 1, column: 20 },
-                                        end: { line: 1, column: 35 }
-                                    }
-                                }],
-                                range: [18, 36],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 36 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [18, 36],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 36 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 36],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 36 }
-                        }
-                    }],
-                    range: [4, 38],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                range: [0, 38],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 38 }
-                }
-            },
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            }
-        },
-
-        'x = { get undef() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'undef',
-                            range: [10, 15],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [18, 20],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 20 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [18, 20],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 20 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 20],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 20 }
-                        }
-                    }],
-                    range: [4, 22],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                range: [0, 22],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        'x = { get if() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'if',
-                            range: [10, 12],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [15, 17],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 17 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [15, 17],
-                            loc: {
-                                start: { line: 1, column: 15 },
-                                end: { line: 1, column: 17 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 17],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 17 }
-                        }
-                    }],
-                    range: [4, 19],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 19 }
-                    }
-                },
-                range: [0, 19],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 19 }
-                }
-            },
-            range: [0, 19],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 19 }
-            }
-        },
-
-        'x = { get true() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'true',
-                            range: [10, 14],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [17, 19],
-                                loc: {
-                                    start: { line: 1, column: 17 },
-                                    end: { line: 1, column: 19 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [17, 19],
-                            loc: {
-                                start: { line: 1, column: 17 },
-                                end: { line: 1, column: 19 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 19],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 19 }
-                        }
-                    }],
-                    range: [4, 21],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            },
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            }
-        },
-
-        'x = { get false() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'false',
-                            range: [10, 15],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [18, 20],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 20 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [18, 20],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 20 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 20],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 20 }
-                        }
-                    }],
-                    range: [4, 22],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                range: [0, 22],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        'x = { get null() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'null',
-                            range: [10, 14],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [17, 19],
-                                loc: {
-                                    start: { line: 1, column: 17 },
-                                    end: { line: 1, column: 19 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [17, 19],
-                            loc: {
-                                start: { line: 1, column: 17 },
-                                end: { line: 1, column: 19 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 19],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 19 }
-                        }
-                    }],
-                    range: [4, 21],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            },
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            }
-        },
-
-        'x = { get "undef"() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Literal',
-                            value: 'undef',
-                            raw: '"undef"',
-                            range: [10, 17],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 17 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [20, 22],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 22 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [20, 22],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 22 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 22],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 22 }
-                        }
-                    }],
-                    range: [4, 24],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                range: [0, 24],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'x = { get 10() {} }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Literal',
-                            value: 10,
-                            raw: '10',
-                            range: [10, 12],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [15, 17],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 17 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [15, 17],
-                            loc: {
-                                start: { line: 1, column: 15 },
-                                end: { line: 1, column: 17 }
-                            }
-                        },
-                        kind: 'get',
-                        range: [6, 17],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 17 }
-                        }
-                    }],
-                    range: [4, 19],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 19 }
-                    }
-                },
-                range: [0, 19],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 19 }
-                }
-            },
-            range: [0, 19],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 19 }
-            }
-        },
-
-        'x = { set width(w) { m_width = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'width',
-                            range: [10, 15],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [16, 17],
-                                loc: {
-                                    start: { line: 1, column: 16 },
-                                    end: { line: 1, column: 17 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_width',
-                                            range: [21, 28],
-                                            loc: {
-                                                start: { line: 1, column: 21 },
-                                                end: { line: 1, column: 28 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [31, 32],
-                                            loc: {
-                                                start: { line: 1, column: 31 },
-                                                end: { line: 1, column: 32 }
-                                            }
-                                        },
-                                        range: [21, 32],
-                                        loc: {
-                                            start: { line: 1, column: 21 },
-                                            end: { line: 1, column: 32 }
-                                        }
-                                    },
-                                    range: [21, 33],
-                                    loc: {
-                                        start: { line: 1, column: 21 },
-                                        end: { line: 1, column: 33 }
-                                    }
-                                }],
-                                range: [19, 34],
-                                loc: {
-                                    start: { line: 1, column: 19 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [19, 34],
-                            loc: {
-                                start: { line: 1, column: 19 },
-                                end: { line: 1, column: 34 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 34],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 34 }
-                        }
-                    }],
-                    range: [4, 36],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [0, 36],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'x = { set if(w) { m_if = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'if',
-                            range: [10, 12],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [13, 14],
-                                loc: {
-                                    start: { line: 1, column: 13 },
-                                    end: { line: 1, column: 14 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_if',
-                                            range: [18, 22],
-                                            loc: {
-                                                start: { line: 1, column: 18 },
-                                                end: { line: 1, column: 22 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [25, 26],
-                                            loc: {
-                                                start: { line: 1, column: 25 },
-                                                end: { line: 1, column: 26 }
-                                            }
-                                        },
-                                        range: [18, 26],
-                                        loc: {
-                                            start: { line: 1, column: 18 },
-                                            end: { line: 1, column: 26 }
-                                        }
-                                    },
-                                    range: [18, 27],
-                                    loc: {
-                                        start: { line: 1, column: 18 },
-                                        end: { line: 1, column: 27 }
-                                    }
-                                }],
-                                range: [16, 28],
-                                loc: {
-                                    start: { line: 1, column: 16 },
-                                    end: { line: 1, column: 28 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [16, 28],
-                            loc: {
-                                start: { line: 1, column: 16 },
-                                end: { line: 1, column: 28 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 28],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 28 }
-                        }
-                    }],
-                    range: [4, 30],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 30 }
-                    }
-                },
-                range: [0, 30],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 30 }
-                }
-            },
-            range: [0, 30],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 30 }
-            }
-        },
-
-        'x = { set true(w) { m_true = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'true',
-                            range: [10, 14],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [15, 16],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 16 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_true',
-                                            range: [20, 26],
-                                            loc: {
-                                                start: { line: 1, column: 20 },
-                                                end: { line: 1, column: 26 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [29, 30],
-                                            loc: {
-                                                start: { line: 1, column: 29 },
-                                                end: { line: 1, column: 30 }
-                                            }
-                                        },
-                                        range: [20, 30],
-                                        loc: {
-                                            start: { line: 1, column: 20 },
-                                            end: { line: 1, column: 30 }
-                                        }
-                                    },
-                                    range: [20, 31],
-                                    loc: {
-                                        start: { line: 1, column: 20 },
-                                        end: { line: 1, column: 31 }
-                                    }
-                                }],
-                                range: [18, 32],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 32 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [18, 32],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 32 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 32],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 32 }
-                        }
-                    }],
-                    range: [4, 34],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                range: [0, 34],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 34 }
-                }
-            },
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        },
-
-        'x = { set false(w) { m_false = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'false',
-                            range: [10, 15],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 15 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [16, 17],
-                                loc: {
-                                    start: { line: 1, column: 16 },
-                                    end: { line: 1, column: 17 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_false',
-                                            range: [21, 28],
-                                            loc: {
-                                                start: { line: 1, column: 21 },
-                                                end: { line: 1, column: 28 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [31, 32],
-                                            loc: {
-                                                start: { line: 1, column: 31 },
-                                                end: { line: 1, column: 32 }
-                                            }
-                                        },
-                                        range: [21, 32],
-                                        loc: {
-                                            start: { line: 1, column: 21 },
-                                            end: { line: 1, column: 32 }
-                                        }
-                                    },
-                                    range: [21, 33],
-                                    loc: {
-                                        start: { line: 1, column: 21 },
-                                        end: { line: 1, column: 33 }
-                                    }
-                                }],
-                                range: [19, 34],
-                                loc: {
-                                    start: { line: 1, column: 19 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [19, 34],
-                            loc: {
-                                start: { line: 1, column: 19 },
-                                end: { line: 1, column: 34 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 34],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 34 }
-                        }
-                    }],
-                    range: [4, 36],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [0, 36],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'x = { set null(w) { m_null = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'null',
-                            range: [10, 14],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [15, 16],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 16 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_null',
-                                            range: [20, 26],
-                                            loc: {
-                                                start: { line: 1, column: 20 },
-                                                end: { line: 1, column: 26 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [29, 30],
-                                            loc: {
-                                                start: { line: 1, column: 29 },
-                                                end: { line: 1, column: 30 }
-                                            }
-                                        },
-                                        range: [20, 30],
-                                        loc: {
-                                            start: { line: 1, column: 20 },
-                                            end: { line: 1, column: 30 }
-                                        }
-                                    },
-                                    range: [20, 31],
-                                    loc: {
-                                        start: { line: 1, column: 20 },
-                                        end: { line: 1, column: 31 }
-                                    }
-                                }],
-                                range: [18, 32],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 32 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [18, 32],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 32 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 32],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 32 }
-                        }
-                    }],
-                    range: [4, 34],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                range: [0, 34],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 34 }
-                }
-            },
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        },
-
-        'x = { set "null"(w) { m_null = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Literal',
-                            value: 'null',
-                            raw: '"null"',
-                            range: [10, 16],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 16 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [17, 18],
-                                loc: {
-                                    start: { line: 1, column: 17 },
-                                    end: { line: 1, column: 18 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_null',
-                                            range: [22, 28],
-                                            loc: {
-                                                start: { line: 1, column: 22 },
-                                                end: { line: 1, column: 28 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [31, 32],
-                                            loc: {
-                                                start: { line: 1, column: 31 },
-                                                end: { line: 1, column: 32 }
-                                            }
-                                        },
-                                        range: [22, 32],
-                                        loc: {
-                                            start: { line: 1, column: 22 },
-                                            end: { line: 1, column: 32 }
-                                        }
-                                    },
-                                    range: [22, 33],
-                                    loc: {
-                                        start: { line: 1, column: 22 },
-                                        end: { line: 1, column: 33 }
-                                    }
-                                }],
-                                range: [20, 34],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [20, 34],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 34 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 34],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 34 }
-                        }
-                    }],
-                    range: [4, 36],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [0, 36],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'x = { set 10(w) { m_null = w } }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Literal',
-                            value: 10,
-                            raw: '10',
-                            range: [10, 12],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [{
-                                type: 'Identifier',
-                                name: 'w',
-                                range: [13, 14],
-                                loc: {
-                                    start: { line: 1, column: 13 },
-                                    end: { line: 1, column: 14 }
-                                }
-                            }],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [{
-                                    type: 'ExpressionStatement',
-                                    expression: {
-                                        type: 'AssignmentExpression',
-                                        operator: '=',
-                                        left: {
-                                            type: 'Identifier',
-                                            name: 'm_null',
-                                            range: [18, 24],
-                                            loc: {
-                                                start: { line: 1, column: 18 },
-                                                end: { line: 1, column: 24 }
-                                            }
-                                        },
-                                        right: {
-                                            type: 'Identifier',
-                                            name: 'w',
-                                            range: [27, 28],
-                                            loc: {
-                                                start: { line: 1, column: 27 },
-                                                end: { line: 1, column: 28 }
-                                            }
-                                        },
-                                        range: [18, 28],
-                                        loc: {
-                                            start: { line: 1, column: 18 },
-                                            end: { line: 1, column: 28 }
-                                        }
-                                    },
-                                    range: [18, 29],
-                                    loc: {
-                                        start: { line: 1, column: 18 },
-                                        end: { line: 1, column: 29 }
-                                    }
-                                }],
-                                range: [16, 30],
-                                loc: {
-                                    start: { line: 1, column: 16 },
-                                    end: { line: 1, column: 30 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [16, 30],
-                            loc: {
-                                start: { line: 1, column: 16 },
-                                end: { line: 1, column: 30 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [6, 30],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 30 }
-                        }
-                    }],
-                    range: [4, 32],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 32 }
-                    }
-                },
-                range: [0, 32],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 32 }
-                }
-            },
-            range: [0, 32],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 32 }
-            }
-        },
-
-        'x = { get: 42 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'get',
-                            range: [6, 9],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 9 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 42,
-                            raw: '42',
-                            range: [11, 13],
-                            loc: {
-                                start: { line: 1, column: 11 },
-                                end: { line: 1, column: 13 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 13],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 13 }
-                        }
-                    }],
-                    range: [4, 15],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 15 }
-                    }
-                },
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        },
-
-        'x = { set: 43 }': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 'set',
-                            range: [6, 9],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 9 }
-                            }
-                        },
-                        value: {
-                            type: 'Literal',
-                            value: 43,
-                            raw: '43',
-                            range: [11, 13],
-                            loc: {
-                                start: { line: 1, column: 11 },
-                                end: { line: 1, column: 13 }
-                            }
-                        },
-                        kind: 'init',
-                        range: [6, 13],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 13 }
-                        }
-                    }],
-                    range: [4, 15],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 15 }
-                    }
-                },
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        }
-
-    },
-
-    'Comments': {
-
-        '/* block comment */ 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 42,
-                raw: '42',
-                range: [20, 22],
-                loc: {
-                    start: { line: 1, column: 20 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [20, 22],
-            loc: {
-                start: { line: 1, column: 20 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        '42 /*The*/ /*Answer*/': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            },
-            comments: [{
-                type: 'Block',
-                value: 'The',
-                range: [3, 10],
-                loc: {
-                    start: { line: 1, column: 3 },
-                    end: { line: 1, column: 10 }
-                }
-            }, {
-                type: 'Block',
-                value: 'Answer',
-                range: [11, 21],
-                loc: {
-                    start: { line: 1, column: 11 },
-                    end: { line: 1, column: 21 }
-                }
-            }]
-        },
-
-        '42 /*the*/ /*answer*/': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [0, 2]
-                },
-                range: [0, 21]
-            }],
-            range: [0, 21],
-            comments: [{
-                type: 'Block',
-                value: 'the',
-                range: [3, 10]
-            }, {
-                type: 'Block',
-                value: 'answer',
-                range: [11, 21]
-            }]
-        },
-
-        '/* multiline\ncomment\nshould\nbe\nignored */ 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 42,
-                raw: '42',
-                range: [42, 44],
-                loc: {
-                    start: { line: 5, column: 11 },
-                    end: { line: 5, column: 13 }
-                }
-            },
-            range: [42, 44],
-            loc: {
-                start: { line: 5, column: 11 },
-                end: { line: 5, column: 13 }
-            }
-        },
-
-        '/*a\r\nb*/ 42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [9, 11],
-                    loc: {
-                        start: { line: 2, column: 4 },
-                        end: { line: 2, column: 6 }
-                    }
-                },
-                range: [9, 11],
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            range: [9, 11],
-            loc: {
-                start: { line: 2, column: 4 },
-                end: { line: 2, column: 6 }
-            },
-            comments: [{
-                type: 'Block',
-                value: 'a\r\nb',
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 3 }
-                }
-            }]
-        },
-
-        '/*a\rb*/ 42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [8, 10],
-                    loc: {
-                        start: { line: 2, column: 4 },
-                        end: { line: 2, column: 6 }
-                    }
-                },
-                range: [8, 10],
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            range: [8, 10],
-            loc: {
-                start: { line: 2, column: 4 },
-                end: { line: 2, column: 6 }
-            },
-            comments: [{
-                type: 'Block',
-                value: 'a\rb',
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 3 }
-                }
-            }]
-        },
-
-        '/*a\nb*/ 42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [8, 10],
-                    loc: {
-                        start: { line: 2, column: 4 },
-                        end: { line: 2, column: 6 }
-                    }
-                },
-                range: [8, 10],
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            range: [8, 10],
-            loc: {
-                start: { line: 2, column: 4 },
-                end: { line: 2, column: 6 }
-            },
-            comments: [{
-                type: 'Block',
-                value: 'a\nb',
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 3 }
-                }
-            }]
-        },
-
-        '/*a\nc*/ 42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    loc: {
-                        start: { line: 2, column: 4 },
-                        end: { line: 2, column: 6 }
-                    }
-                },
-                loc: {
-                    start: { line: 2, column: 4 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            loc: {
-                start: { line: 2, column: 4 },
-                end: { line: 2, column: 6 }
-            },
-            comments: [{
-                type: 'Block',
-                value: 'a\nc',
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 3 }
-                }
-            }]
-        },
-
-        '// line comment\n42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 42,
-                raw: '42',
-                range: [16, 18],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 2 }
-                }
-            },
-            range: [16, 18],
-            loc: {
-                start: { line: 2, column: 0 },
-                end: { line: 2, column: 2 }
-            }
-        },
-
-        '42 // line comment': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [0, 2],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                range: [0, 18],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 18 }
-                }
-            }],
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' line comment',
-                range: [3, 18],
-                loc: {
-                    start: { line: 1, column: 3 },
-                    end: { line: 1, column: 18 }
-                }
-            }]
-        },
-
-        '// Hello, world!\n42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [17, 19],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 2 }
-                    }
-                },
-                range: [17, 19],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 2 }
-                }
-            }],
-            range: [17, 19],
-            loc: {
-                start: { line: 2, column: 0 },
-                end: { line: 2, column: 2 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' Hello, world!',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }]
-        },
-
-        '// Hello, world!\n': {
-            type: 'Program',
-            body: [],
-            range: [17, 17],
-            loc: {
-                start: { line: 2, column: 0 },
-                end: { line: 2, column: 0 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' Hello, world!',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }]
-        },
-
-        '// Hallo, world!\n': {
-            type: 'Program',
-            body: [],
-            loc: {
-                start: { line: 2, column: 0 },
-                end: { line: 2, column: 0 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' Hallo, world!',
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }]
-        },
-
-        '//\n42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [3, 5],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 2 }
-                    }
-                },
-                range: [3, 5],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 2 }
-                }
-            }],
-            range: [3, 5],
-            loc: {
-                start: { line: 2, column: 0 },
-                end: { line: 2, column: 2 }
-            },
-            comments: [{
-                type: 'Line',
-                value: '',
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            }]
-        },
-
-        '//': {
-            type: 'Program',
-            body: [],
-            range: [2, 2],
-            loc: {
-                start: { line: 1, column: 2 },
-                end: { line: 1, column: 2 }
-            },
-            comments: [{
-                type: 'Line',
-                value: '',
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            }]
-        },
-
-        '// ': {
-            type: 'Program',
-            body: [],
-            range: [3, 3],
-            comments: [{
-                type: 'Line',
-                value: ' ',
-                range: [0, 3]
-            }]
-        },
-
-        '/**/42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [4, 6],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 6 }
-                }
-            }],
-            range: [4, 6],
-            loc: {
-                start: { line: 1, column: 4 },
-                end: { line: 1, column: 6 }
-            },
-            comments: [{
-                type: 'Block',
-                value: '',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            }]
-        },
-
-        '// Hello, world!\n\n//   Another hello\n42': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [37, 39],
-                    loc: {
-                        start: { line: 4, column: 0 },
-                        end: { line: 4, column: 2 }
-                    }
-                },
-                range: [37, 39],
-                loc: {
-                    start: { line: 4, column: 0 },
-                    end: { line: 4, column: 2 }
-                }
-            }],
-            range: [37, 39],
-            loc: {
-                start: { line: 4, column: 0 },
-                end: { line: 4, column: 2 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' Hello, world!',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }, {
-                type: 'Line',
-                value: '   Another hello',
-                range: [18, 36],
-                loc: {
-                    start: { line: 3, column: 0 },
-                    end: { line: 3, column: 18 }
-                }
-            }]
-        },
-
-        'if (x) { // Some comment\ndoThat(); }': {
-            type: 'Program',
-            body: [{
-                type: 'IfStatement',
-                test: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                consequent: {
-                    type: 'BlockStatement',
-                    body: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'doThat',
-                                range: [25, 31],
-                                loc: {
-                                    start: { line: 2, column: 0 },
-                                    end: { line: 2, column: 6 }
-                                }
-                            },
-                            'arguments': [],
-                            range: [25, 33],
-                            loc: {
-                                start: { line: 2, column: 0 },
-                                end: { line: 2, column: 8 }
-                            }
-                        },
-                        range: [25, 34],
-                        loc: {
-                            start: { line: 2, column: 0 },
-                            end: { line: 2, column: 9 }
-                        }
-                    }],
-                    range: [7, 36],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 2, column: 11 }
-                    }
-                },
-                alternate: null,
-                range: [0, 36],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 11 }
-                }
-            }],
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 11 }
-            },
-            comments: [{
-                type: 'Line',
-                value: ' Some comment',
-                range: [9, 24],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 24 }
-                }
-            }]
-        },
-
-        'switch (answer) { case 42: /* perfect */ bingo() }': {
-            type: 'Program',
-            body: [{
-                type: 'SwitchStatement',
-                discriminant: {
-                    type: 'Identifier',
-                    name: 'answer',
-                    range: [8, 14],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                cases: [{
-                    type: 'SwitchCase',
-                    test: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [23, 25],
-                        loc: {
-                            start: { line: 1, column: 23 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    consequent: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'bingo',
-                                range: [41, 46],
-                                loc: {
-                                    start: { line: 1, column: 41 },
-                                    end: { line: 1, column: 46 }
-                                }
-                            },
-                            'arguments': [],
-                            range: [41, 48],
-                            loc: {
-                                start: { line: 1, column: 41 },
-                                end: { line: 1, column: 48 }
-                            }
-                        },
-                        range: [41, 49],
-                        loc: {
-                            start: { line: 1, column: 41 },
-                            end: { line: 1, column: 49 }
-                        }
-                    }],
-                    range: [18, 49],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 49 }
-                    }
-                }],
-                range: [0, 50],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 50 }
-                }
-            }],
-            range: [0, 50],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 50 }
-            },
-            comments: [{
-                type: 'Block',
-                value: ' perfect ',
-                range: [27, 40],
-                loc: {
-                    start: { line: 1, column: 27 },
-                    end: { line: 1, column: 40 }
-                }
-            }]
-        }
-
-    },
-
-    'Numeric Literals': {
-
-        '0': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0,
-                raw: '0',
-                range: [0, 1],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 1 }
-                }
-            },
-            range: [0, 1],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 1 }
-            }
-        },
-
-        '42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 42,
-                raw: '42',
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        '3': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 3,
-                    raw: '3',
-                    range: [0, 1]
-                },
-                range: [0, 1]
-            }],
-            range: [0, 1],
-            tokens: [{
-                type: 'Numeric',
-                value: '3',
-                range: [0, 1]
-            }]
-        },
-
-        '5': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 5,
-                    raw: '5',
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 1 }
-                }
-            }],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 1 }
-            },
-            tokens: [{
-                type: 'Numeric',
-                value: '5',
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 1 }
-                }
-            }]
-        },
-
-        '.14': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0.14,
-                raw: '.14',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        '3.14159': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 3.14159,
-                raw: '3.14159',
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '6.02214179e+23': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 6.02214179e+23,
-                raw: '6.02214179e+23',
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        '1.492417830e-10': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 1.49241783e-10,
-                raw: '1.492417830e-10',
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        },
-
-        '0x0': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0,
-                raw: '0x0',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        '0e+100': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0,
-                raw: '0e+100',
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        '0xabc': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0xabc,
-                raw: '0xabc',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        '0xdef': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0xdef,
-                raw: '0xdef',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        '0X1A': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0x1A,
-                raw: '0X1A',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            range: [0, 4],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 4 }
-            }
-        },
-
-        '0x10': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0x10,
-                raw: '0x10',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            range: [0, 4],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 4 }
-            }
-        },
-
-        '0x100': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0x100,
-                raw: '0x100',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        '0X04': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 0X04,
-                raw: '0X04',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            range: [0, 4],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 4 }
-            }
-        },
-
-        '02': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 2,
-                raw: '02',
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        '012': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 10,
-                raw: '012',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        '0012': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 10,
-                raw: '0012',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            range: [0, 4],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 4 }
-            }
-        }
-
-    },
-
-    'String Literals': {
-
-        '"Hello"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello',
-                raw: '"Hello"',
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: '\n\r\t\x0B\b\f\\\'"\x00',
-                raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"',
-                range: [0, 22],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        '"\\u0061"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'a',
-                raw: '"\\u0061"',
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        '"\\x61"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'a',
-                raw: '"\\x61"',
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        '"\\u00"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'u00',
-                raw: '"\\u00"',
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        '"\\xt"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'xt',
-                raw: '"\\xt"',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        '"Hello\\nworld"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\nworld',
-                raw: '"Hello\\nworld"',
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        '"Hello\\\nworld"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Helloworld',
-                raw: '"Hello\\\nworld"',
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 14 }
-            }
-        },
-
-        '"Hello\\02World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u0002World',
-                raw: '"Hello\\02World"',
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        },
-
-        '"Hello\\012World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u000AWorld',
-                raw: '"Hello\\012World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\122World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\122World',
-                raw: '"Hello\\122World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\0122World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u000A2World',
-                raw: '"Hello\\0122World"',
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        '"Hello\\312World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u00CAWorld',
-                raw: '"Hello\\312World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\412World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\412World',
-                raw: '"Hello\\412World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\812World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello812World',
-                raw: '"Hello\\812World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\712World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\712World',
-                raw: '"Hello\\712World"',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '"Hello\\0World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u0000World',
-                raw: '"Hello\\0World"',
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        '"Hello\\\r\nworld"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Helloworld',
-                raw: '"Hello\\\r\nworld"',
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 2, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 15 }
-            }
-        },
-
-        '"Hello\\1World"': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Literal',
-                value: 'Hello\u0001World',
-                raw: '"Hello\\1World"',
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        }
-    },
-
-    'Regular Expression Literals': {
-
-        'var x = /[a-z]/i': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[a-z]/i',
-                        raw: '/[a-z]/i',
-                        range: [8, 16],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 16 }
-                        }
-                    },
-                    range: [4, 16],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 16 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }],
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[a-z]/i',
-                range: [8, 16],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 16 }
-                }
-            }]
-        },
-
-        'var x = /[x-z]/i': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5]
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[x-z]/i',
-                        raw: '/[x-z]/i',
-                        range: [8, 16]
-                    },
-                    range: [4, 16]
-                }],
-                kind: 'var',
-                range: [0, 16]
-            }],
-            range: [0, 16],
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3]
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5]
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7]
-            }, {
-                type: 'RegularExpression',
-                value: '/[x-z]/i',
-                range: [8, 16]
-            }]
-        },
-
-        'var x = /[a-c]/i': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[a-c]/i',
-                        raw: '/[a-c]/i',
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 16 }
-                        }
-                    },
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 16 }
-                    }
-                }],
-                kind: 'var',
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[a-c]/i',
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 16 }
-                }
-            }]
-        },
-
-        'var x = /[P QR]/i': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[P QR]/i',
-                        raw: '/[P QR]/i',
-                        range: [8, 17],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 17 }
-                        }
-                    },
-                    range: [4, 17],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 17 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            }],
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[P QR]/i',
-                range: [8, 17],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 17 }
-                }
-            }]
-        },
-
-        'var x = /[\\]/]/': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: new RegExp('[\\]/]').toString(),
-                        raw: '/[\\]/]/',
-                        range: [8, 15],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    range: [4, 15],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 15 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            }],
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[\\]/]/',
-                range: [8, 15],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 15 }
-                }
-            }]
-        },
-
-        'var x = /foo\\/bar/': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/foo\\/bar/',
-                        raw: '/foo\\/bar/',
-                        range: [8, 18],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    range: [4, 18],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 18 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 18],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 18 }
-                }
-            }],
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/foo\\/bar/',
-                range: [8, 18],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 18 }
-                }
-            }]
-        },
-
-        'var x = /=([^=\\s])+/g': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/=([^=\\s])+/g',
-                        raw: '/=([^=\\s])+/g',
-                        range: [8, 21],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 21 }
-                        }
-                    },
-                    range: [4, 21],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 21 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/=([^=\\s])+/g',
-                range: [8, 21],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 21 }
-                }
-            }]
-        },
-
-        'var x = /[P QR]/\\u0067': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[P QR]/g',
-                        raw: '/[P QR]/\\u0067',
-                        range: [8, 22],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    range: [4, 22],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 22 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 22],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 22 }
-                }
-            }],
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[P QR]/\\u0067',
-                range: [8, 22],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 22 }
-                }
-            }]
-        },
-
-        'var x = /[P QR]/\\g': {
-            type: 'Program',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: '/[P QR]/g',
-                        raw: '/[P QR]/\\g',
-                        range: [8, 18],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    range: [4, 18],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 18 }
-                    }
-                }],
-                kind: 'var',
-                range: [0, 18],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 18 }
-                }
-            }],
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            },
-            tokens: [{
-                type: 'Keyword',
-                value: 'var',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }, {
-                type: 'Identifier',
-                value: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'Punctuator',
-                value: '=',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            }, {
-                type: 'RegularExpression',
-                value: '/[P QR]/\\g',
-                range: [8, 18],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 18 }
-                }
-            }]
-        }
-
-    },
-
-    'Left-Hand-Side Expression': {
-
-        'new Button': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'Identifier',
-                    name: 'Button',
-                    range: [4, 10],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 10],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            range: [0, 10],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 10 }
-            }
-        },
-
-        'new Button()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'Identifier',
-                    name: 'Button',
-                    range: [4, 10],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 12],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 12 }
-                }
-            },
-            range: [0, 12],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 12 }
-            }
-        },
-
-        'new new foo': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'NewExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [8, 11],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [4, 11],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'new new foo()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'NewExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [8, 11],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [4, 13],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'new foo().bar()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'CallExpression',
-                callee: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'NewExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'foo',
-                            range: [4, 7],
-                            loc: {
-                                start: { line: 1, column: 4 },
-                                end: { line: 1, column: 7 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [0, 9],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [10, 13],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 13 }
-                        }
-                    },
-                    range: [0, 13],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 15],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            range: [0, 15],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 15 }
-            }
-        },
-
-        'new foo[bar]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'MemberExpression',
-                    computed: true,
-                    object: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [4, 7],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [8, 11],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    range: [4, 12],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 12],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 12 }
-                }
-            },
-            range: [0, 12],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 12 }
-            }
-        },
-
-        'new foo.bar()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'NewExpression',
-                callee: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [4, 7],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [8, 11],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    range: [4, 11],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        '( new foo).bar()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'CallExpression',
-                callee: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'NewExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'foo',
-                            range: [6, 9],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 9 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [2, 9],
-                        loc: {
-                            start: { line: 1, column: 2 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [11, 14],
-                        loc: {
-                            start: { line: 1, column: 11 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    range: [0, 14],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        'foo(bar, baz)': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'CallExpression',
-                callee: {
-                    type: 'Identifier',
-                    name: 'foo',
-                    range: [0, 3],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                'arguments': [{
-                    type: 'Identifier',
-                    name: 'bar',
-                    range: [4, 7],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 7 }
-                    }
-                }, {
-                    type: 'Identifier',
-                    name: 'baz',
-                    range: [9, 12],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 12 }
-                    }
-                }],
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        '(    foo  )()': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'CallExpression',
-                callee: {
-                    type: 'Identifier',
-                    name: 'foo',
-                    range: [5, 8],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                'arguments': [],
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'universe.milkyway': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'milkyway',
-                    range: [9, 17],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        'universe.milkyway.solarsystem': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'Identifier',
-                        name: 'universe',
-                        range: [0, 8],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'milkyway',
-                        range: [9, 17],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 17 }
-                        }
-                    },
-                    range: [0, 17],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'solarsystem',
-                    range: [18, 29],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 29 }
-                    }
-                },
-                range: [0, 29],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 29 }
-                }
-            },
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 29 }
-            }
-        },
-
-        'universe.milkyway.solarsystem.Earth': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'MemberExpression',
-                        computed: false,
-                        object: {
-                            type: 'Identifier',
-                            name: 'universe',
-                            range: [0, 8],
-                            loc: {
-                                start: { line: 1, column: 0 },
-                                end: { line: 1, column: 8 }
-                            }
-                        },
-                        property: {
-                            type: 'Identifier',
-                            name: 'milkyway',
-                            range: [9, 17],
-                            loc: {
-                                start: { line: 1, column: 9 },
-                                end: { line: 1, column: 17 }
-                            }
-                        },
-                        range: [0, 17],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 17 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'solarsystem',
-                        range: [18, 29],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 29 }
-                        }
-                    },
-                    range: [0, 29],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 29 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'Earth',
-                    range: [30, 35],
-                    loc: {
-                        start: { line: 1, column: 30 },
-                        end: { line: 1, column: 35 }
-                    }
-                },
-                range: [0, 35],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 35 }
-                }
-            },
-            range: [0, 35],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 35 }
-            }
-        },
-
-        'universe[galaxyName, otherUselessName]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: true,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'SequenceExpression',
-                    expressions: [{
-                        type: 'Identifier',
-                        name: 'galaxyName',
-                        range: [9, 19],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 19 }
-                        }
-                    }, {
-                        type: 'Identifier',
-                        name: 'otherUselessName',
-                        range: [21, 37],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 37 }
-                        }
-                    }],
-                    range: [9, 37],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 37 }
-                    }
-                },
-                range: [0, 38],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 38 }
-                }
-            },
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            }
-        },
-
-        'universe[galaxyName]': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: true,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'galaxyName',
-                    range: [9, 19],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 19 }
-                    }
-                },
-                range: [0, 20],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 20 }
-                }
-            },
-            range: [0, 20],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 20 }
-            }
-        },
-
-        'universe[42].galaxies': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'MemberExpression',
-                    computed: true,
-                    object: {
-                        type: 'Identifier',
-                        name: 'universe',
-                        range: [0, 8],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    property: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [9, 11],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'galaxies',
-                    range: [13, 21],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            },
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            }
-        },
-
-        'universe(42).galaxies': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'universe',
-                        range: [0, 8],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [9, 11],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 11 }
-                        }
-                    }],
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'galaxies',
-                    range: [13, 21],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [0, 21],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 21 }
-                }
-            },
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            }
-        },
-
-        'universe(42).galaxies(14, 3, 77).milkyway': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'MemberExpression',
-                        computed: false,
-                        object: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'universe',
-                                range: [0, 8],
-                                loc: {
-                                    start: { line: 1, column: 0 },
-                                    end: { line: 1, column: 8 }
-                                }
-                            },
-                            'arguments': [{
-                                type: 'Literal',
-                                value: 42,
-                                raw: '42',
-                                range: [9, 11],
-                                loc: {
-                                    start: { line: 1, column: 9 },
-                                    end: { line: 1, column: 11 }
-                                }
-                            }],
-                            range: [0, 12],
-                            loc: {
-                                start: { line: 1, column: 0 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        property: {
-                            type: 'Identifier',
-                            name: 'galaxies',
-                            range: [13, 21],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 21 }
-                            }
-                        },
-                        range: [0, 21],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 21 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Literal',
-                        value: 14,
-                        raw: '14',
-                        range: [22, 24],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 24 }
-                        }
-                    }, {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [26, 27],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 27 }
-                        }
-                    }, {
-                        type: 'Literal',
-                        value: 77,
-                        raw: '77',
-                        range: [29, 31],
-                        loc: {
-                            start: { line: 1, column: 29 },
-                            end: { line: 1, column: 31 }
-                        }
-                    }],
-                    range: [0, 32],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 32 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'milkyway',
-                    range: [33, 41],
-                    loc: {
-                        start: { line: 1, column: 33 },
-                        end: { line: 1, column: 41 }
-                    }
-                },
-                range: [0, 41],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 41 }
-                }
-            },
-            range: [0, 41],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 41 }
-            }
-        },
-
-        'earth.asia.Indonesia.prepareForElection(2014)': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'CallExpression',
-                callee: {
-                    type: 'MemberExpression',
-                    computed: false,
-                    object: {
-                        type: 'MemberExpression',
-                        computed: false,
-                        object: {
-                            type: 'MemberExpression',
-                            computed: false,
-                            object: {
-                                type: 'Identifier',
-                                name: 'earth',
-                                range: [0, 5],
-                                loc: {
-                                    start: { line: 1, column: 0 },
-                                    end: { line: 1, column: 5 }
-                                }
-                            },
-                            property: {
-                                type: 'Identifier',
-                                name: 'asia',
-                                range: [6, 10],
-                                loc: {
-                                    start: { line: 1, column: 6 },
-                                    end: { line: 1, column: 10 }
-                                }
-                            },
-                            range: [0, 10],
-                            loc: {
-                                start: { line: 1, column: 0 },
-                                end: { line: 1, column: 10 }
-                            }
-                        },
-                        property: {
-                            type: 'Identifier',
-                            name: 'Indonesia',
-                            range: [11, 20],
-                            loc: {
-                                start: { line: 1, column: 11 },
-                                end: { line: 1, column: 20 }
-                            }
-                        },
-                        range: [0, 20],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 20 }
-                        }
-                    },
-                    property: {
-                        type: 'Identifier',
-                        name: 'prepareForElection',
-                        range: [21, 39],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 39 }
-                        }
-                    },
-                    range: [0, 39],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 39 }
-                    }
-                },
-                'arguments': [{
-                    type: 'Literal',
-                    value: 2014,
-                    raw: '2014',
-                    range: [40, 44],
-                    loc: {
-                        start: { line: 1, column: 40 },
-                        end: { line: 1, column: 44 }
-                    }
-                }],
-                range: [0, 45],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 45 }
-                }
-            },
-            range: [0, 45],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 45 }
-            }
-        },
-
-        'universe.if': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'if',
-                    range: [9, 11],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'universe.true': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'true',
-                    range: [9, 13],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'universe.false': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'false',
-                    range: [9, 14],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        'universe.null': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'MemberExpression',
-                computed: false,
-                object: {
-                    type: 'Identifier',
-                    name: 'universe',
-                    range: [0, 8],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                property: {
-                    type: 'Identifier',
-                    name: 'null',
-                    range: [9, 13],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        }
-
-    },
-
-    'Postfix Expressions': {
-
-        'x++': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                prefix: false,
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        'x--': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                prefix: false,
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        'eval++': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                prefix: false,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'eval--': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                prefix: false,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'arguments++': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [0, 9],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                prefix: false,
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'arguments--': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [0, 9],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                prefix: false,
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        }
-
-    },
-
-    'Unary Operators': {
-
-        '++x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [2, 3],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                prefix: true,
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        '--x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [2, 3],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                prefix: true,
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        '++eval': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [2, 6],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                prefix: true,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        '--eval': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [2, 6],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                prefix: true,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        '++arguments': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [2, 11],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                prefix: true,
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        '--arguments': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UpdateExpression',
-                operator: '--',
-                argument: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [2, 11],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                prefix: true,
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        '+x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: '+',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [1, 2],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                prefix: true,
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        '-x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: '-',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [1, 2],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                prefix: true,
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        '~x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: '~',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [1, 2],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                prefix: true,
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        '!x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: '!',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [1, 2],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 2 }
-                    }
-                },
-                prefix: true,
-                range: [0, 2],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 2 }
-                }
-            },
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        },
-
-        'void x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: 'void',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                prefix: true,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'delete x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: 'delete',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [7, 8],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                prefix: true,
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'typeof x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'UnaryExpression',
-                operator: 'typeof',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [7, 8],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                prefix: true,
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        }
-
-    },
-
-    'Multiplicative Operators': {
-
-        'x * y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '*',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x / y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '/',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x % y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '%',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        }
-
-    },
-
-    'Additive Operators': {
-
-        'x + y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x - y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '-',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        }
-
-    },
-
-    'Bitwise Shift Operator': {
-
-        'x << y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x >> y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '>>',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x >>> y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '>>>',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        }
-
-    },
-
-    'Relational Operators': {
-
-        'x < y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x > y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '>',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x <= y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x >= y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '>=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x in y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: 'in',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x instanceof y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: 'instanceof',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [13, 14],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        'x < y < z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '<',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        }
-
-    },
-
-    'Equality Operators': {
-
-        'x == y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '==',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x != y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '!=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x === y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '===',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x !== y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '!==',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        }
-
-    },
-
-    'Binary Bitwise Operators': {
-
-        'x & y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '&',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x ^ y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '^',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'x | y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '|',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        }
-
-    },
-
-    'Binary Expressions': {
-
-        'x + y + z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '+',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x - y + z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '-',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x + y - z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '-',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '+',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x - y - z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '-',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '-',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x + y * z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '*',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x + y / z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '+',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '/',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x - y % z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '-',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '%',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x * y * z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '*',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '*',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x * y / z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '/',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '*',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x * y % z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '%',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '*',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x % y * z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '*',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '%',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x << y << z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '<<',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '<<',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [0, 6],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [10, 11],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'x | y | z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '|',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '|',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x & y & z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '&',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x ^ y ^ z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '^',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '^',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x & y | z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '|',
-                left: {
-                    type: 'BinaryExpression',
-                    operator: '&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x | y ^ z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '|',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '^',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x | y & z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'BinaryExpression',
-                operator: '|',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        }
-
-    },
-
-    'Binary Logical Operators': {
-
-        'x || y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '||',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x && y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '&&',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'x || y || z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '||',
-                left: {
-                    type: 'LogicalExpression',
-                    operator: '||',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [0, 6],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [10, 11],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'x && y && z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '&&',
-                left: {
-                    type: 'LogicalExpression',
-                    operator: '&&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [0, 6],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [10, 11],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'x || y && z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '||',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'LogicalExpression',
-                    operator: '&&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [10, 11],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 11 }
-                        }
-                    },
-                    range: [5, 11],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [0, 11],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'x || y ^ z': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'LogicalExpression',
-                operator: '||',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'BinaryExpression',
-                    operator: '^',
-                    left: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    range: [5, 10],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                range: [0, 10],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            range: [0, 10],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 10 }
-            }
-        }
-
-    },
-
-    'Conditional Operator': {
-
-        'y ? 1 : 2': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'ConditionalExpression',
-                test: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                consequent: {
-                    type: 'Literal',
-                    value: 1,
-                    raw: '1',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                alternate: {
-                    type: 'Literal',
-                    value: 2,
-                    raw: '2',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x && y ? 1 : 2': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'ConditionalExpression',
-                test: {
-                    type: 'LogicalExpression',
-                    operator: '&&',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [5, 6],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 6 }
-                        }
-                    },
-                    range: [0, 6],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                consequent: {
-                    type: 'Literal',
-                    value: 1,
-                    raw: '1',
-                    range: [9, 10],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                alternate: {
-                    type: 'Literal',
-                    value: 2,
-                    raw: '2',
-                    range: [13, 14],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        }
-
-    },
-
-    'Assignment Operators': {
-
-        'x = 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'eval = 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [7, 9],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'arguments = 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [0, 9],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [12, 14],
-                    loc: {
-                        start: { line: 1, column: 12 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                range: [0, 14],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        'x *= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '*=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x /= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '/=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x %= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '%=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x += 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '+=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x -= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '-=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x <<= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '<<=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [6, 8],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'x >>= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '>>=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [6, 8],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                range: [0, 8],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'x >>>= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '>>>=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [7, 9],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [0, 9],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'x &= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '&=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x ^= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '^=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        'x |= 42': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'AssignmentExpression',
-                operator: '|=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [5, 7],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        }
-
-    },
-
-    'Block': {
-
-        '{ foo }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'foo',
-                    range: [2, 5],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [2, 6],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 6 }
-                }
-            }],
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '{ doThis(); doThat(); }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'doThis',
-                        range: [2, 8],
-                        loc: {
-                            start: { line: 1, column: 2 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [2, 10],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                range: [2, 11],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 11 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'doThat',
-                        range: [12, 18],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [12, 20],
-                    loc: {
-                        start: { line: 1, column: 12 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                range: [12, 21],
-                loc: {
-                    start: { line: 1, column: 12 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            }
-        },
-
-        '{}': {
-            type: 'BlockStatement',
-            body: [],
-            range: [0, 2],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 2 }
-            }
-        }
-
-    },
-
-    'Variable Statement': {
-
-        'var x': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: null,
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        'var x, y;': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: null,
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [7, 8],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                init: null,
-                range: [7, 8],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 8 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'var x = 42': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [8, 10],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                range: [4, 10],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 10 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 10],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 10 }
-            }
-        },
-
-        'var eval = 42, arguments = 42': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [4, 8],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [11, 13],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [4, 13],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [15, 24],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [27, 29],
-                    loc: {
-                        start: { line: 1, column: 27 },
-                        end: { line: 1, column: 29 }
-                    }
-                },
-                range: [15, 29],
-                loc: {
-                    start: { line: 1, column: 15 },
-                    end: { line: 1, column: 29 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 29 }
-            }
-        },
-
-        'var x = 14, y = 3, z = 1977': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 14,
-                    raw: '14',
-                    range: [8, 10],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 10 }
-                    }
-                },
-                range: [4, 10],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 10 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [12, 13],
-                    loc: {
-                        start: { line: 1, column: 12 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 3,
-                    raw: '3',
-                    range: [16, 17],
-                    loc: {
-                        start: { line: 1, column: 16 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [12, 17],
-                loc: {
-                    start: { line: 1, column: 12 },
-                    end: { line: 1, column: 17 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [19, 20],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 1977,
-                    raw: '1977',
-                    range: [23, 27],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                range: [19, 27],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 27 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 27],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 27 }
-            }
-        },
-
-        'var implements, interface, package': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'implements',
-                    range: [4, 14],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                init: null,
-                range: [4, 14],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 14 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'interface',
-                    range: [16, 25],
-                    loc: {
-                        start: { line: 1, column: 16 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                init: null,
-                range: [16, 25],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 25 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'package',
-                    range: [27, 34],
-                    loc: {
-                        start: { line: 1, column: 27 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                init: null,
-                range: [27, 34],
-                loc: {
-                    start: { line: 1, column: 27 },
-                    end: { line: 1, column: 34 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        },
-
-        'var private, protected, public, static': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'private',
-                    range: [4, 11],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                init: null,
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'protected',
-                    range: [13, 22],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                init: null,
-                range: [13, 22],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 22 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'public',
-                    range: [24, 30],
-                    loc: {
-                        start: { line: 1, column: 24 },
-                        end: { line: 1, column: 30 }
-                    }
-                },
-                init: null,
-                range: [24, 30],
-                loc: {
-                    start: { line: 1, column: 24 },
-                    end: { line: 1, column: 30 }
-                }
-            }, {
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'static',
-                    range: [32, 38],
-                    loc: {
-                        start: { line: 1, column: 32 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                init: null,
-                range: [32, 38],
-                loc: {
-                    start: { line: 1, column: 32 },
-                    end: { line: 1, column: 38 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            }
-        }
-
-    },
-
-    'Let Statement': {
-
-        'let x': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: null,
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }],
-            kind: 'let',
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            }
-        },
-
-        '{ let x }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    init: null,
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                }],
-                kind: 'let',
-                range: [2, 8],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 8 }
-                }
-            }],
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        '{ let x = 42 }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [10, 12],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 12 }
-                        }
-                    },
-                    range: [6, 12],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 12 }
-                    }
-                }],
-                kind: 'let',
-                range: [2, 13],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 13 }
-                }
-            }],
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        },
-
-        '{ let x = 14, y = 3, z = 1977 }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 14,
-                        raw: '14',
-                        range: [10, 12],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 12 }
-                        }
-                    },
-                    range: [6, 12],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 12 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [14, 15],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    range: [14, 19],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 19 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [21, 22],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 1977,
-                        raw: '1977',
-                        range: [25, 29],
-                        loc: {
-                            start: { line: 1, column: 25 },
-                            end: { line: 1, column: 29 }
-                        }
-                    },
-                    range: [21, 29],
-                    loc: {
-                        start: { line: 1, column: 21 },
-                        end: { line: 1, column: 29 }
-                    }
-                }],
-                kind: 'let',
-                range: [2, 30],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 30 }
-                }
-            }],
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            }
-        }
-
-    },
-
-    'Const Statement': {
-
-        'const x = 42': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                init: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [10, 12],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [6, 12],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 12 }
-                }
-            }],
-            kind: 'const',
-            range: [0, 12],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 12 }
-            }
-        },
-
-        '{ const x = 42 }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [12, 14],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    range: [8, 14],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 14 }
-                    }
-                }],
-                kind: 'const',
-                range: [2, 15],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 15 }
-                }
-            }],
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            }
-        },
-
-        '{ const x = 14, y = 3, z = 1977 }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 14,
-                        raw: '14',
-                        range: [12, 14],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    range: [8, 14],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 14 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [16, 17],
-                        loc: {
-                            start: { line: 1, column: 16 },
-                            end: { line: 1, column: 17 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [20, 21],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 21 }
-                        }
-                    },
-                    range: [16, 21],
-                    loc: {
-                        start: { line: 1, column: 16 },
-                        end: { line: 1, column: 21 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'z',
-                        range: [23, 24],
-                        loc: {
-                            start: { line: 1, column: 23 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 1977,
-                        raw: '1977',
-                        range: [27, 31],
-                        loc: {
-                            start: { line: 1, column: 27 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    range: [23, 31],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 31 }
-                    }
-                }],
-                kind: 'const',
-                range: [2, 32],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 32 }
-                }
-            }],
-            range: [0, 33],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 33 }
-            }
-        }
-
-    },
-
-    'Empty Statement': {
-
-        ';': {
-            type: 'EmptyStatement',
-            range: [0, 1],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 1 }
-            }
-        }
-
-    },
-
-    'Expression Statement': {
-
-        'x': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Identifier',
-                name: 'x',
-                range: [0, 1],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 1 }
-                }
-            },
-            range: [0, 1],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 1 }
-            }
-        },
-
-        'x, y': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'SequenceExpression',
-                expressions: [{
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [0, 1],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 1 }
-                    }
-                }, {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [3, 4],
-                    loc: {
-                        start: { line: 1, column: 3 },
-                        end: { line: 1, column: 4 }
-                    }
-                }],
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            range: [0, 4],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 4 }
-            }
-        },
-
-        '\\u0061': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Identifier',
-                name: 'a',
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            },
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            }
-        },
-
-        'a\\u0061': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Identifier',
-                name: 'aa',
-                range: [0, 7],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 7],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 7 }
-            }
-        },
-
-        '\\ua': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Identifier',
-                name: 'ua',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        },
-
-        'a\\u': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'Identifier',
-                name: 'au',
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            },
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            }
-        }
-
-    },
-
-    'If Statement': {
-
-        'if (morning) goodMorning()': {
-            type: 'IfStatement',
-            test: {
-                type: 'Identifier',
-                name: 'morning',
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            consequent: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'goodMorning',
-                        range: [13, 24],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [13, 26],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                range: [13, 26],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 26 }
-                }
-            },
-            alternate: null,
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            }
-        },
-
-        'if (morning) (function(){})': {
-            type: 'IfStatement',
-            test: {
-                type: 'Identifier',
-                name: 'morning',
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            consequent: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: null,
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [24, 26],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 26 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [14, 26],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                range: [13, 27],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 27 }
-                }
-            },
-            alternate: null,
-            range: [0, 27],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 27 }
-            }
-        },
-
-        'if (morning) var x = 0;': {
-            type: 'IfStatement',
-            test: {
-                type: 'Identifier',
-                name: 'morning',
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            consequent: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [17, 18],
-                        loc: {
-                            start: { line: 1, column: 17 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [21, 22],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    range: [17, 22],
-                    loc: {
-                        start: { line: 1, column: 17 },
-                        end: { line: 1, column: 22 }
-                    }
-                }],
-                kind: 'var',
-                range: [13, 23],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 23 }
-                }
-            },
-            alternate: null,
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            }
-        },
-
-        'if (morning) function a(){}': {
-            type: 'IfStatement',
-            test: {
-                type: 'Identifier',
-                name: 'morning',
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            consequent: {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'a',
-                    range: [22, 23],
-                    loc: {
-                        start: { line: 1, column: 22 },
-                        end: { line: 1, column: 23 }
-                    }
-                },
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [25, 27],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [13, 27],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 27 }
-                }
-            },
-            alternate: null,
-            range: [0, 27],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 27 }
-            }
-        },
-
-        'if (morning) goodMorning(); else goodDay()': {
-            type: 'IfStatement',
-            test: {
-                type: 'Identifier',
-                name: 'morning',
-                range: [4, 11],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            consequent: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'goodMorning',
-                        range: [13, 24],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [13, 26],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                range: [13, 27],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 27 }
-                }
-            },
-            alternate: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'goodDay',
-                        range: [33, 40],
-                        loc: {
-                            start: { line: 1, column: 33 },
-                            end: { line: 1, column: 40 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [33, 42],
-                    loc: {
-                        start: { line: 1, column: 33 },
-                        end: { line: 1, column: 42 }
-                    }
-                },
-                range: [33, 42],
-                loc: {
-                    start: { line: 1, column: 33 },
-                    end: { line: 1, column: 42 }
-                }
-            },
-            range: [0, 42],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 42 }
-            }
-        }
-
-    },
-
-    'Iteration Statements': {
-
-        'do keep(); while (true)': {
-            type: 'DoWhileStatement',
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'keep',
-                        range: [3, 7],
-                        loc: {
-                            start: { line: 1, column: 3 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [3, 9],
-                    loc: {
-                        start: { line: 1, column: 3 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [3, 10],
-                loc: {
-                    start: { line: 1, column: 3 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [18, 22],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            }
-        },
-
-        'do keep(); while (true);': {
-            type: 'DoWhileStatement',
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'keep',
-                        range: [3, 7],
-                        loc: {
-                            start: { line: 1, column: 3 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [3, 9],
-                    loc: {
-                        start: { line: 1, column: 3 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [3, 10],
-                loc: {
-                    start: { line: 1, column: 3 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [18, 22],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'do { x++; y--; } while (x < 10)': {
-            type: 'DoWhileStatement',
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'UpdateExpression',
-                        operator: '++',
-                        argument: {
-                            type: 'Identifier',
-                            name: 'x',
-                            range: [5, 6],
-                            loc: {
-                                start: { line: 1, column: 5 },
-                                end: { line: 1, column: 6 }
-                            }
-                        },
-                        prefix: false,
-                        range: [5, 8],
-                        loc: {
-                            start: { line: 1, column: 5 },
-                            end: { line: 1, column: 8 }
-                        }
-                    },
-                    range: [5, 9],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 9 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'UpdateExpression',
-                        operator: '--',
-                        argument: {
-                            type: 'Identifier',
-                            name: 'y',
-                            range: [10, 11],
-                            loc: {
-                                start: { line: 1, column: 10 },
-                                end: { line: 1, column: 11 }
-                            }
-                        },
-                        prefix: false,
-                        range: [10, 13],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 13 }
-                        }
-                    },
-                    range: [10, 14],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 14 }
-                    }
-                }],
-                range: [3, 16],
-                loc: {
-                    start: { line: 1, column: 3 },
-                    end: { line: 1, column: 16 }
-                }
-            },
-            test: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [24, 25],
-                    loc: {
-                        start: { line: 1, column: 24 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 10,
-                    raw: '10',
-                    range: [28, 30],
-                    loc: {
-                        start: { line: 1, column: 28 },
-                        end: { line: 1, column: 30 }
-                    }
-                },
-                range: [24, 30],
-                loc: {
-                    start: { line: 1, column: 24 },
-                    end: { line: 1, column: 30 }
-                }
-            },
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            }
-        },
-
-        '{ do { } while (false) false }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'DoWhileStatement',
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [5, 8],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                test: {
-                    type: 'Literal',
-                    value: false,
-                    raw: 'false',
-                    range: [16, 21],
-                    loc: {
-                        start: { line: 1, column: 16 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [2, 22],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 1, column: 22 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: false,
-                    raw: 'false',
-                    range: [23, 28],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 28 }
-                    }
-                },
-                range: [23, 29],
-                loc: {
-                    start: { line: 1, column: 23 },
-                    end: { line: 1, column: 29 }
-                }
-            }],
-            range: [0, 30],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 30 }
-            }
-        },
-
-        'while (true) doSomething()': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'doSomething',
-                        range: [13, 24],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [13, 26],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                range: [13, 26],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 26 }
-                }
-            },
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            }
-        },
-
-        'while (x < 10) { x++; y--; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [7, 8],
-                    loc: {
-                        start: { line: 1, column: 7 },
-                        end: { line: 1, column: 8 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 10,
-                    raw: '10',
-                    range: [11, 13],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [7, 13],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'UpdateExpression',
-                        operator: '++',
-                        argument: {
-                            type: 'Identifier',
-                            name: 'x',
-                            range: [17, 18],
-                            loc: {
-                                start: { line: 1, column: 17 },
-                                end: { line: 1, column: 18 }
-                            }
-                        },
-                        prefix: false,
-                        range: [17, 20],
-                        loc: {
-                            start: { line: 1, column: 17 },
-                            end: { line: 1, column: 20 }
-                        }
-                    },
-                    range: [17, 21],
-                    loc: {
-                        start: { line: 1, column: 17 },
-                        end: { line: 1, column: 21 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'UpdateExpression',
-                        operator: '--',
-                        argument: {
-                            type: 'Identifier',
-                            name: 'y',
-                            range: [22, 23],
-                            loc: {
-                                start: { line: 1, column: 22 },
-                                end: { line: 1, column: 23 }
-                            }
-                        },
-                        prefix: false,
-                        range: [22, 25],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    range: [22, 26],
-                    loc: {
-                        start: { line: 1, column: 22 },
-                        end: { line: 1, column: 26 }
-                    }
-                }],
-                range: [15, 28],
-                loc: {
-                    start: { line: 1, column: 15 },
-                    end: { line: 1, column: 28 }
-                }
-            },
-            range: [0, 28],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 28 }
-            }
-        },
-
-        'for(;;);': {
-            type: 'ForStatement',
-            init: null,
-            test: null,
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [7, 8],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 8 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'for(;;){}': {
-            type: 'ForStatement',
-            init: null,
-            test: null,
-            update: null,
-            body: {
-                type: 'BlockStatement',
-                body: [],
-                range: [7, 9],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        },
-
-        'for(x = 0;;);': {
-            type: 'ForStatement',
-            init: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 0,
-                    raw: '0',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [4, 9],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            test: null,
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [12, 13],
-                loc: {
-                    start: { line: 1, column: 12 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'for(var x = 0;;);': {
-            type: 'ForStatement',
-            init: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [12, 13],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 13 }
-                        }
-                    },
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                }],
-                kind: 'var',
-                range: [4, 13],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            test: null,
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [16, 17],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        'for(let x = 0;;);': {
-            type: 'ForStatement',
-            init: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [12, 13],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 13 }
-                        }
-                    },
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                }],
-                kind: 'let',
-                range: [4, 13],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            test: null,
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [16, 17],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            }
-        },
-
-        'for(var x = 0, y = 1;;);': {
-            type: 'ForStatement',
-            init: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [8, 9],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 9 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [12, 13],
-                        loc: {
-                            start: { line: 1, column: 12 },
-                            end: { line: 1, column: 13 }
-                        }
-                    },
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [15, 16],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 16 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [19, 20],
-                        loc: {
-                            start: { line: 1, column: 19 },
-                            end: { line: 1, column: 20 }
-                        }
-                    },
-                    range: [15, 20],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 20 }
-                    }
-                }],
-                kind: 'var',
-                range: [4, 20],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 20 }
-                }
-            },
-            test: null,
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [23, 24],
-                loc: {
-                    start: { line: 1, column: 23 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'for(x = 0; x < 42;);': {
-            type: 'ForStatement',
-            init: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 0,
-                    raw: '0',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [4, 9],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            test: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [11, 12],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [15, 17],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [11, 17],
-                loc: {
-                    start: { line: 1, column: 11 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            update: null,
-            body: {
-                type: 'EmptyStatement',
-                range: [19, 20],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 20 }
-                }
-            },
-            range: [0, 20],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 20 }
-            }
-        },
-
-        'for(x = 0; x < 42; x++);': {
-            type: 'ForStatement',
-            init: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 0,
-                    raw: '0',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [4, 9],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            test: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [11, 12],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [15, 17],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [11, 17],
-                loc: {
-                    start: { line: 1, column: 11 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            update: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [19, 20],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                prefix: false,
-                range: [19, 22],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            body: {
-                type: 'EmptyStatement',
-                range: [23, 24],
-                loc: {
-                    start: { line: 1, column: 23 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'for(x = 0; x < 42; x++) process(x);': {
-            type: 'ForStatement',
-            init: {
-                type: 'AssignmentExpression',
-                operator: '=',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 0,
-                    raw: '0',
-                    range: [8, 9],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                range: [4, 9],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            test: {
-                type: 'BinaryExpression',
-                operator: '<',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [11, 12],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                right: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [15, 17],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                range: [11, 17],
-                loc: {
-                    start: { line: 1, column: 11 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            update: {
-                type: 'UpdateExpression',
-                operator: '++',
-                argument: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [19, 20],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                prefix: false,
-                range: [19, 22],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [24, 31],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [32, 33],
-                        loc: {
-                            start: { line: 1, column: 32 },
-                            end: { line: 1, column: 33 }
-                        }
-                    }],
-                    range: [24, 34],
-                    loc: {
-                        start: { line: 1, column: 24 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                range: [24, 35],
-                loc: {
-                    start: { line: 1, column: 24 },
-                    end: { line: 1, column: 35 }
-                }
-            },
-            range: [0, 35],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 35 }
-            }
-        },
-
-        'for(x in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'Identifier',
-                name: 'x',
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [9, 13],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [15, 22],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [23, 24],
-                        loc: {
-                            start: { line: 1, column: 23 },
-                            end: { line: 1, column: 24 }
-                        }
-                    }],
-                    range: [15, 25],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                range: [15, 26],
-                loc: {
-                    start: { line: 1, column: 15 },
-                    end: { line: 1, column: 26 }
-                }
-            },
-            each: false,
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            }
-        },
-
-        'for (var x in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    init: null,
-                    range: [9, 10],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 10 }
-                    }
-                }],
-                kind: 'var',
-                range: [5, 10],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [14, 18],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [20, 27],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [28, 29],
-                        loc: {
-                            start: { line: 1, column: 28 },
-                            end: { line: 1, column: 29 }
-                        }
-                    }],
-                    range: [20, 30],
-                    loc: {
-                        start: { line: 1, column: 20 },
-                        end: { line: 1, column: 30 }
-                    }
-                },
-                range: [20, 31],
-                loc: {
-                    start: { line: 1, column: 20 },
-                    end: { line: 1, column: 31 }
-                }
-            },
-            each: false,
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            }
-        },
-
-        'for (var x = 42 in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [13, 15],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    range: [9, 15],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 15 }
-                    }
-                }],
-                kind: 'var',
-                range: [5, 15],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [19, 23],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 23 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [25, 32],
-                        loc: {
-                            start: { line: 1, column: 25 },
-                            end: { line: 1, column: 32 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [33, 34],
-                        loc: {
-                            start: { line: 1, column: 33 },
-                            end: { line: 1, column: 34 }
-                        }
-                    }],
-                    range: [25, 35],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 35 }
-                    }
-                },
-                range: [25, 36],
-                loc: {
-                    start: { line: 1, column: 25 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            each: false,
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'for (let x in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    init: null,
-                    range: [9, 10],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 10 }
-                    }
-                }],
-                kind: 'let',
-                range: [5, 10],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 10 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [14, 18],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [20, 27],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [28, 29],
-                        loc: {
-                            start: { line: 1, column: 28 },
-                            end: { line: 1, column: 29 }
-                        }
-                    }],
-                    range: [20, 30],
-                    loc: {
-                        start: { line: 1, column: 20 },
-                        end: { line: 1, column: 30 }
-                    }
-                },
-                range: [20, 31],
-                loc: {
-                    start: { line: 1, column: 20 },
-                    end: { line: 1, column: 31 }
-                }
-            },
-            each: false,
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            }
-        },
-
-        'for (let x = 42 in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 42,
-                        raw: '42',
-                        range: [13, 15],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    range: [9, 15],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 15 }
-                    }
-                }],
-                kind: 'let',
-                range: [5, 15],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 15 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [19, 23],
-                loc: {
-                    start: { line: 1, column: 19 },
-                    end: { line: 1, column: 23 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [25, 32],
-                        loc: {
-                            start: { line: 1, column: 25 },
-                            end: { line: 1, column: 32 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [33, 34],
-                        loc: {
-                            start: { line: 1, column: 33 },
-                            end: { line: 1, column: 34 }
-                        }
-                    }],
-                    range: [25, 35],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 35 }
-                    }
-                },
-                range: [25, 36],
-                loc: {
-                    start: { line: 1, column: 25 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            each: false,
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'for (var i = function() { return 10 in [] } in list) process(x);': {
-            type: 'ForInStatement',
-            left: {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'i',
-                        range: [9, 10],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    init: {
-                        type: 'FunctionExpression',
-                        id: null,
-                        params: [],
-                        defaults: [],
-                        body: {
-                            type: 'BlockStatement',
-                            body: [{
-                                type: 'ReturnStatement',
-                                argument: {
-                                    type: 'BinaryExpression',
-                                    operator: 'in',
-                                    left: {
-                                        type: 'Literal',
-                                        value: 10,
-                                        raw: '10',
-                                        range: [33, 35],
-                                        loc: {
-                                            start: { line: 1, column: 33 },
-                                            end: { line: 1, column: 35 }
-                                        }
-                                    },
-                                    right: {
-                                        type: 'ArrayExpression',
-                                        elements: [],
-                                        range: [39, 41],
-                                        loc: {
-                                            start: { line: 1, column: 39 },
-                                            end: { line: 1, column: 41 }
-                                        }
-                                    },
-                                    range: [33, 41],
-                                    loc: {
-                                        start: { line: 1, column: 33 },
-                                        end: { line: 1, column: 41 }
-                                    }
-                                },
-                                range: [26, 42],
-                                loc: {
-                                    start: { line: 1, column: 26 },
-                                    end: { line: 1, column: 42 }
-                                }
-                            }],
-                            range: [24, 43],
-                            loc: {
-                                start: { line: 1, column: 24 },
-                                end: { line: 1, column: 43 }
-                            }
-                        },
-                        rest: null,
-                        generator: false,
-                        expression: false,
-                        range: [13, 43],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 43 }
-                        }
-                    },
-                    range: [9, 43],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 43 }
-                    }
-                }],
-                kind: 'var',
-                range: [5, 43],
-                loc: {
-                    start: { line: 1, column: 5 },
-                    end: { line: 1, column: 43 }
-                }
-            },
-            right: {
-                type: 'Identifier',
-                name: 'list',
-                range: [47, 51],
-                loc: {
-                    start: { line: 1, column: 47 },
-                    end: { line: 1, column: 51 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'Identifier',
-                        name: 'process',
-                        range: [53, 60],
-                        loc: {
-                            start: { line: 1, column: 53 },
-                            end: { line: 1, column: 60 }
-                        }
-                    },
-                    'arguments': [{
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [61, 62],
-                        loc: {
-                            start: { line: 1, column: 61 },
-                            end: { line: 1, column: 62 }
-                        }
-                    }],
-                    range: [53, 63],
-                    loc: {
-                        start: { line: 1, column: 53 },
-                        end: { line: 1, column: 63 }
-                    }
-                },
-                range: [53, 64],
-                loc: {
-                    start: { line: 1, column: 53 },
-                    end: { line: 1, column: 64 }
-                }
-            },
-            each: false,
-            range: [0, 64],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 64 }
-            }
-        }
-
-    },
-
-    'continue statement': {
-
-        'while (true) { continue; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [
-                    {
-                        type: 'ContinueStatement',
-                        label: null,
-                        range: [15, 24],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 24 }
-                        }
-                    }
-                ],
-                range: [13, 26],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 26 }
-                }
-            },
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            }
-        },
-
-        'while (true) { continue }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [
-                    {
-                        type: 'ContinueStatement',
-                        label: null,
-                        range: [15, 24],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 24 }
-                        }
-                    }
-                ],
-                range: [13, 25],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 25 }
-                }
-            },
-            range: [0, 25],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 25 }
-            }
-        },
-
-        'done: while (true) { continue done }': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'done',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            body: {
-                type: 'WhileStatement',
-                test: {
-                    type: 'Literal',
-                    value: true,
-                    raw: 'true',
-                    range: [13, 17],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ContinueStatement',
-                            label: {
-                                type: 'Identifier',
-                                name: 'done',
-                                range: [30, 34],
-                                loc: {
-                                    start: { line: 1, column: 30 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            range: [21, 35],
-                            loc: {
-                                start: { line: 1, column: 21 },
-                                end: { line: 1, column: 35 }
-                            }
-                        }
-                    ],
-                    range: [19, 36],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [6, 36],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 36 }
-                }
-            },
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            }
-        },
-
-        'done: while (true) { continue done; }': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'done',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            body: {
-                type: 'WhileStatement',
-                test: {
-                    type: 'Literal',
-                    value: true,
-                    raw: 'true',
-                    range: [13, 17],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ContinueStatement',
-                            label: {
-                                type: 'Identifier',
-                                name: 'done',
-                                range: [30, 34],
-                                loc: {
-                                    start: { line: 1, column: 30 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            range: [21, 35],
-                            loc: {
-                                start: { line: 1, column: 21 },
-                                end: { line: 1, column: 35 }
-                            }
-                        }
-                    ],
-                    range: [19, 37],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 37 }
-                    }
-                },
-                range: [6, 37],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 37 }
-                }
-            },
-            range: [0, 37],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 37 }
-            }
-        }
-
-    },
-
-    'break statement': {
-
-        'while (true) { break }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [
-                    {
-                        type: 'BreakStatement',
-                        label: null,
-                        range: [15, 21],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 21 }
-                        }
-                    }
-                ],
-                range: [13, 22],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        'done: while (true) { break done }': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'done',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            body: {
-                type: 'WhileStatement',
-                test: {
-                    type: 'Literal',
-                    value: true,
-                    raw: 'true',
-                    range: [13, 17],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'BreakStatement',
-                            label: {
-                                type: 'Identifier',
-                                name: 'done',
-                                range: [27, 31],
-                                loc: {
-                                    start: { line: 1, column: 27 },
-                                    end: { line: 1, column: 31 }
-                                }
-                            },
-                            range: [21, 32],
-                            loc: {
-                                start: { line: 1, column: 21 },
-                                end: { line: 1, column: 32 }
-                            }
-                        }
-                    ],
-                    range: [19, 33],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 33 }
-                    }
-                },
-                range: [6, 33],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 33 }
-                }
-            },
-            range: [0, 33],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 33 }
-            }
-        },
-
-        'done: while (true) { break done; }': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'done',
-                range: [0, 4],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 4 }
-                }
-            },
-            body: {
-                type: 'WhileStatement',
-                test: {
-                    type: 'Literal',
-                    value: true,
-                    raw: 'true',
-                    range: [13, 17],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 17 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'BreakStatement',
-                            label: {
-                                type: 'Identifier',
-                                name: 'done',
-                                range: [27, 31],
-                                loc: {
-                                    start: { line: 1, column: 27 },
-                                    end: { line: 1, column: 31 }
-                                }
-                            },
-                            range: [21, 32],
-                            loc: {
-                                start: { line: 1, column: 21 },
-                                end: { line: 1, column: 32 }
-                            }
-                        }
-                    ],
-                    range: [19, 34],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                range: [6, 34],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 34 }
-                }
-            },
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        }
-
-    },
-
-    'return statement': {
-
-        '(function(){ return })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: null,
-                            range: [13, 20],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 20 }
-                            }
-                        }
-                    ],
-                    range: [11, 21],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 21],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 21 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        },
-
-        '(function(){ return; })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: null,
-                            range: [13, 20],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 20 }
-                            }
-                        }
-                    ],
-                    range: [11, 22],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 22],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            }
-        },
-
-        '(function(){ return x; })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [20, 21],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 21 }
-                                }
-                            },
-                            range: [13, 22],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 22 }
-                            }
-                        }
-                    ],
-                    range: [11, 24],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 24],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            range: [0, 25],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 25 }
-            }
-        },
-
-        '(function(){ return x * y })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: {
-                                type: 'BinaryExpression',
-                                operator: '*',
-                                left: {
-                                    type: 'Identifier',
-                                    name: 'x',
-                                    range: [20, 21],
-                                    loc: {
-                                        start: { line: 1, column: 20 },
-                                        end: { line: 1, column: 21 }
-                                    }
-                                },
-                                right: {
-                                    type: 'Identifier',
-                                    name: 'y',
-                                    range: [24, 25],
-                                    loc: {
-                                        start: { line: 1, column: 24 },
-                                        end: { line: 1, column: 25 }
-                                    }
-                                },
-                                range: [20, 25],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 25 }
-                                }
-                            },
-                            range: [13, 26],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 26 }
-                            }
-                        }
-                    ],
-                    range: [11, 27],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 27],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 27 }
-                }
-            },
-            range: [0, 28],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 28 }
-            }
-        }
-    },
-
-    'with statement': {
-
-        'with (x) foo = bar': {
-            type: 'WithStatement',
-            object: {
-                type: 'Identifier',
-                name: 'x',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [9, 12],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 12 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [15, 18],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    range: [9, 18],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                range: [9, 18],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            range: [0, 18],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 18 }
-            }
-        },
-
-        'with (x) foo = bar;': {
-            type: 'WithStatement',
-            object: {
-                type: 'Identifier',
-                name: 'x',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            body: {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [9, 12],
-                        loc: {
-                            start: { line: 1, column: 9 },
-                            end: { line: 1, column: 12 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'bar',
-                        range: [15, 18],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    range: [9, 18],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                range: [9, 19],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 19 }
-                }
-            },
-            range: [0, 19],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 19 }
-            }
-        },
-
-        'with (x) { foo = bar }': {
-            type: 'WithStatement',
-            object: {
-                type: 'Identifier',
-                name: 'x',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'AssignmentExpression',
-                        operator: '=',
-                        left: {
-                            type: 'Identifier',
-                            name: 'foo',
-                            range: [11, 14],
-                            loc: {
-                                start: { line: 1, column: 11 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        right: {
-                            type: 'Identifier',
-                            name: 'bar',
-                            range: [17, 20],
-                            loc: {
-                                start: { line: 1, column: 17 },
-                                end: { line: 1, column: 20 }
-                            }
-                        },
-                        range: [11, 20],
-                        loc: {
-                            start: { line: 1, column: 11 },
-                            end: { line: 1, column: 20 }
-                        }
-                    },
-                    range: [11, 21],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 21 }
-                    }
-                }],
-                range: [9, 22],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 22 }
-                }
-            },
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            }
-        }
-
-    },
-
-    'switch statement': {
-
-        'switch (x) {}': {
-            type: 'SwitchStatement',
-            discriminant: {
-                type: 'Identifier',
-                name: 'x',
-                range: [8, 9],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 9 }
-                }
-            },
-            cases:[],
-            range: [0, 13],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 13 }
-            }
-        },
-
-        'switch (answer) { case 42: hi(); break; }': {
-            type: 'SwitchStatement',
-            discriminant: {
-                type: 'Identifier',
-                name: 'answer',
-                range: [8, 14],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            cases: [{
-                type: 'SwitchCase',
-                test: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [23, 25],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                consequent: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'hi',
-                            range: [27, 29],
-                            loc: {
-                                start: { line: 1, column: 27 },
-                                end: { line: 1, column: 29 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [27, 31],
-                        loc: {
-                            start: { line: 1, column: 27 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    range: [27, 32],
-                    loc: {
-                        start: { line: 1, column: 27 },
-                        end: { line: 1, column: 32 }
-                    }
-                }, {
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [33, 39],
-                    loc: {
-                        start: { line: 1, column: 33 },
-                        end: { line: 1, column: 39 }
-                    }
-                }],
-                range: [18, 39],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 39 }
-                }
-            }],
-            range: [0, 41],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 41 }
-            }
-        },
-
-        'switch (answer) { case 42: hi(); break; default: break }': {
-            type: 'SwitchStatement',
-            discriminant: {
-                type: 'Identifier',
-                name: 'answer',
-                range: [8, 14],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            cases: [{
-                type: 'SwitchCase',
-                test: {
-                    type: 'Literal',
-                    value: 42,
-                    raw: '42',
-                    range: [23, 25],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                consequent: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'hi',
-                            range: [27, 29],
-                            loc: {
-                                start: { line: 1, column: 27 },
-                                end: { line: 1, column: 29 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [27, 31],
-                        loc: {
-                            start: { line: 1, column: 27 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    range: [27, 32],
-                    loc: {
-                        start: { line: 1, column: 27 },
-                        end: { line: 1, column: 32 }
-                    }
-                }, {
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [33, 39],
-                    loc: {
-                        start: { line: 1, column: 33 },
-                        end: { line: 1, column: 39 }
-                    }
-                }],
-                range: [18, 39],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 39 }
-                }
-            }, {
-                type: 'SwitchCase',
-                test: null,
-                consequent: [{
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [49, 55],
-                    loc: {
-                        start: { line: 1, column: 49 },
-                        end: { line: 1, column: 55 }
-                    }
-                }],
-                range: [40, 55],
-                loc: {
-                    start: { line: 1, column: 40 },
-                    end: { line: 1, column: 55 }
-                }
-            }],
-            range: [0, 56],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 56 }
-            }
-        }
-
-    },
-
-    'Labelled Statements': {
-
-        'start: for (;;) break start': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'start',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            body: {
-                type: 'ForStatement',
-                init: null,
-                test: null,
-                update: null,
-                body: {
-                    type: 'BreakStatement',
-                    label: {
-                        type: 'Identifier',
-                        name: 'start',
-                        range: [22, 27],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    range: [16, 27],
-                    loc: {
-                        start: { line: 1, column: 16 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                range: [7, 27],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 27 }
-                }
-            },
-            range: [0, 27],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 27 }
-            }
-        },
-
-        'start: while (true) break start': {
-            type: 'LabeledStatement',
-            label: {
-                type: 'Identifier',
-                name: 'start',
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            },
-            body: {
-                type: 'WhileStatement',
-                test: {
-                    type: 'Literal',
-                    value: true,
-                    raw: 'true',
-                    range: [14, 18],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                body: {
-                    type: 'BreakStatement',
-                    label: {
-                        type: 'Identifier',
-                        name: 'start',
-                        range: [26, 31],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    range: [20, 31],
-                    loc: {
-                        start: { line: 1, column: 20 },
-                        end: { line: 1, column: 31 }
-                    }
-                },
-                range: [7, 31],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 31 }
-                }
-            },
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            }
-        }
-
-    },
-
-    'throw statement': {
-
-        'throw x;': {
-            type: 'ThrowStatement',
-            argument: {
-                type: 'Identifier',
-                name: 'x',
-                range: [6, 7],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            range: [0, 8],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 8 }
-            }
-        },
-
-        'throw x * y': {
-            type: 'ThrowStatement',
-            argument: {
-                type: 'BinaryExpression',
-                operator: '*',
-                left: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [6, 7],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 7 }
-                    }
-                },
-                right: {
-                    type: 'Identifier',
-                    name: 'y',
-                    range: [10, 11],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 11 }
-                    }
-                },
-                range: [6, 11],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            range: [0, 11],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 11 }
-            }
-        },
-
-        'throw { message: "Error" }': {
-            type: 'ThrowStatement',
-            argument: {
-                type: 'ObjectExpression',
-                properties: [{
-                    type: 'Property',
-                    key: {
-                        type: 'Identifier',
-                        name: 'message',
-                        range: [8, 15],
-                        loc: {
-                            start: { line: 1, column: 8 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    value: {
-                        type: 'Literal',
-                        value: 'Error',
-                        raw: '"Error"',
-                        range: [17, 24],
-                        loc: {
-                            start: { line: 1, column: 17 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    kind: 'init',
-                    range: [8, 24],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 24 }
-                    }
-                }],
-                range: [6, 26],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 26 }
-                }
-            },
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            }
-        }
-
-    },
-
-    'try statement': {
-
-        'try { } catch (e) { }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [],
-                range: [4, 7],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'e',
-                    range: [15, 16],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [18, 21],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 21 }
-                    }
-                },
-                range: [8, 21],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            finalizer: null,
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            }
-        },
-
-        'try { } catch (eval) { }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [],
-                range: [4, 7],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [15, 19],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 19 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [21, 24],
-                    loc: {
-                        start: { line: 1, column: 21 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                range: [8, 24],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 24 }
-                }
-            }],
-            finalizer: null,
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'try { } catch (arguments) { }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [],
-                range: [4, 7],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [15, 24],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [26, 29],
-                    loc: {
-                        start: { line: 1, column: 26 },
-                        end: { line: 1, column: 29 }
-                    }
-                },
-                range: [8, 29],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 29 }
-                }
-            }],
-            finalizer: null,
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 29 }
-            }
-        },
-
-        'try { } catch (e) { say(e) }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [],
-                range: [4, 7],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'e',
-                    range: [15, 16],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'say',
-                                range: [20, 23],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 23 }
-                                }
-                            },
-                            'arguments': [{
-                                type: 'Identifier',
-                                name: 'e',
-                                range: [24, 25],
-                                loc: {
-                                    start: { line: 1, column: 24 },
-                                    end: { line: 1, column: 25 }
-                                }
-                            }],
-                            range: [20, 26],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 26 }
-                            }
-                        },
-                        range: [20, 27],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 27 }
-                        }
-                    }],
-                    range: [18, 28],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 28 }
-                    }
-                },
-                range: [8, 28],
-                loc: {
-                    start: { line: 1, column: 8 },
-                    end: { line: 1, column: 28 }
-                }
-            }],
-            finalizer: null,
-            range: [0, 28],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 28 }
-            }
-        },
-
-        'try { } finally { cleanup(stuff) }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [],
-                range: [4, 7],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 7 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [],
-            finalizer: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'cleanup',
-                            range: [18, 25],
-                            loc: {
-                                start: { line: 1, column: 18 },
-                                end: { line: 1, column: 25 }
-                            }
-                        },
-                        'arguments': [{
-                            type: 'Identifier',
-                            name: 'stuff',
-                            range: [26, 31],
-                            loc: {
-                                start: { line: 1, column: 26 },
-                                end: { line: 1, column: 31 }
-                            }
-                        }],
-                        range: [18, 32],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 32 }
-                        }
-                    },
-                    range: [18, 33],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 33 }
-                    }
-                }],
-                range: [16, 34],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 34 }
-                }
-            },
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        },
-
-        'try { doThat(); } catch (e) { say(e) }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'doThat',
-                            range: [6, 12],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [6, 14],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    range: [6, 15],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 15 }
-                    }
-                }],
-                range: [4, 17],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'e',
-                    range: [25, 26],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'say',
-                                range: [30, 33],
-                                loc: {
-                                    start: { line: 1, column: 30 },
-                                    end: { line: 1, column: 33 }
-                                }
-                            },
-                            'arguments': [{
-                                type: 'Identifier',
-                                name: 'e',
-                                range: [34, 35],
-                                loc: {
-                                    start: { line: 1, column: 34 },
-                                    end: { line: 1, column: 35 }
-                                }
-                            }],
-                            range: [30, 36],
-                            loc: {
-                                start: { line: 1, column: 30 },
-                                end: { line: 1, column: 36 }
-                            }
-                        },
-                        range: [30, 37],
-                        loc: {
-                            start: { line: 1, column: 30 },
-                            end: { line: 1, column: 37 }
-                        }
-                    }],
-                    range: [28, 38],
-                    loc: {
-                        start: { line: 1, column: 28 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                range: [18, 38],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 38 }
-                }
-            }],
-            finalizer: null,
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            }
-        },
-
-        'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
-            type: 'TryStatement',
-            block: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'doThat',
-                            range: [6, 12],
-                            loc: {
-                                start: { line: 1, column: 6 },
-                                end: { line: 1, column: 12 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [6, 14],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    range: [6, 15],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 15 }
-                    }
-                }],
-                range: [4, 17],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 17 }
-                }
-            },
-            guardedHandlers: [],
-            handlers: [{
-                type: 'CatchClause',
-                param: {
-                    type: 'Identifier',
-                    name: 'e',
-                    range: [25, 26],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 26 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'CallExpression',
-                            callee: {
-                                type: 'Identifier',
-                                name: 'say',
-                                range: [30, 33],
-                                loc: {
-                                    start: { line: 1, column: 30 },
-                                    end: { line: 1, column: 33 }
-                                }
-                            },
-                            'arguments': [{
-                                type: 'Identifier',
-                                name: 'e',
-                                range: [34, 35],
-                                loc: {
-                                    start: { line: 1, column: 34 },
-                                    end: { line: 1, column: 35 }
-                                }
-                            }],
-                            range: [30, 36],
-                            loc: {
-                                start: { line: 1, column: 30 },
-                                end: { line: 1, column: 36 }
-                            }
-                        },
-                        range: [30, 37],
-                        loc: {
-                            start: { line: 1, column: 30 },
-                            end: { line: 1, column: 37 }
-                        }
-                    }],
-                    range: [28, 38],
-                    loc: {
-                        start: { line: 1, column: 28 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                range: [18, 38],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 38 }
-                }
-            }],
-            finalizer: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'cleanup',
-                            range: [49, 56],
-                            loc: {
-                                start: { line: 1, column: 49 },
-                                end: { line: 1, column: 56 }
-                            }
-                        },
-                        'arguments': [{
-                            type: 'Identifier',
-                            name: 'stuff',
-                            range: [57, 62],
-                            loc: {
-                                start: { line: 1, column: 57 },
-                                end: { line: 1, column: 62 }
-                            }
-                        }],
-                        range: [49, 63],
-                        loc: {
-                            start: { line: 1, column: 49 },
-                            end: { line: 1, column: 63 }
-                        }
-                    },
-                    range: [49, 64],
-                    loc: {
-                        start: { line: 1, column: 49 },
-                        end: { line: 1, column: 64 }
-                    }
-                }],
-                range: [47, 65],
-                loc: {
-                    start: { line: 1, column: 47 },
-                    end: { line: 1, column: 65 }
-                }
-            },
-            range: [0, 65],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 65 }
-            }
-        }
-
-    },
-
-    'debugger statement': {
-
-        'debugger;': {
-            type: 'DebuggerStatement',
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 9 }
-            }
-        }
-
-    },
-
-    'Function Definition': {
-
-        'function hello() { sayHi(); }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'hello',
-                range: [9, 14],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            params: [],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'sayHi',
-                            range: [19, 24],
-                            loc: {
-                                start: { line: 1, column: 19 },
-                                end: { line: 1, column: 24 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [19, 26],
-                        loc: {
-                            start: { line: 1, column: 19 },
-                            end: { line: 1, column: 26 }
-                        }
-                    },
-                    range: [19, 27],
-                    loc: {
-                        start: { line: 1, column: 19 },
-                        end: { line: 1, column: 27 }
-                    }
-                }],
-                range: [17, 29],
-                loc: {
-                    start: { line: 1, column: 17 },
-                    end: { line: 1, column: 29 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 29 }
-            }
-        },
-
-        'function eval() { }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'eval',
-                range: [9, 13],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            params: [],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [],
-                range: [16, 19],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 19 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 19],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 19 }
-            }
-        },
-
-        'function arguments() { }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'arguments',
-                range: [9, 18],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 18 }
-                }
-            },
-            params: [],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [],
-                range: [21, 24],
-                loc: {
-                    start: { line: 1, column: 21 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            }
-        },
-
-        'function test(t, t) { }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'test',
-                range: [9, 13],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            params: [{
-                type: 'Identifier',
-                name: 't',
-                range: [14, 15],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 15 }
-                }
-            }, {
-                type: 'Identifier',
-                name: 't',
-                range: [17, 18],
-                loc: {
-                    start: { line: 1, column: 17 },
-                    end: { line: 1, column: 18 }
-                }
-            }],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [],
-                range: [20, 23],
-                loc: {
-                    start: { line: 1, column: 20 },
-                    end: { line: 1, column: 23 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            }
-        },
-
-        '(function test(t, t) { })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: {
-                    type: 'Identifier',
-                    name: 'test',
-                    range: [10, 14],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                params: [{
-                    type: 'Identifier',
-                    name: 't',
-                    range: [15, 16],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 16 }
-                    }
-                }, {
-                    type: 'Identifier',
-                    name: 't',
-                    range: [18, 19],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 19 }
-                    }
-                }],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [21, 24],
-                    loc: {
-                        start: { line: 1, column: 21 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 24],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 24 }
-                }
-            },
-            range: [0, 25],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 25 }
-            }
-        },
-
-        'function eval() { function inner() { "use strict" } }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'eval',
-                range: [9, 13],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            params: [],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'FunctionDeclaration',
-                    id: {
-                        type: 'Identifier',
-                        name: 'inner',
-                        range: [27, 32],
-                        loc: {
-                            start: { line: 1, column: 27 },
-                            end: { line: 1, column: 32 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [{
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'Literal',
-                                value: 'use strict',
-                                raw: '\"use strict\"',
-                                range: [37, 49],
-                                loc: {
-                                    start: { line: 1, column: 37 },
-                                    end: { line: 1, column: 49 }
-                                }
-                            },
-                            range: [37, 50],
-                            loc: {
-                                start: { line: 1, column: 37 },
-                                end: { line: 1, column: 50 }
-                            }
-                        }],
-                        range: [35, 51],
-                        loc: {
-                            start: { line: 1, column: 35 },
-                            end: { line: 1, column: 51 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [18, 51],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 51 }
-                    }
-                }],
-                range: [16, 53],
-                loc: {
-                    start: { line: 1, column: 16 },
-                    end: { line: 1, column: 53 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 53],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 53 }
-            }
-        },
-
-        'function hello(a) { sayHi(); }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'hello',
-                range: [9, 14],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            params: [{
-                type: 'Identifier',
-                name: 'a',
-                range: [15, 16],
-                loc: {
-                    start: { line: 1, column: 15 },
-                    end: { line: 1, column: 16 }
-                }
-            }],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'sayHi',
-                            range: [20, 25],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 25 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [20, 27],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    range: [20, 28],
-                    loc: {
-                        start: { line: 1, column: 20 },
-                        end: { line: 1, column: 28 }
-                    }
-                }],
-                range: [18, 30],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 30 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 30],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 30 }
-            }
-        },
-
-        'function hello(a, b) { sayHi(); }': {
-            type: 'FunctionDeclaration',
-            id: {
-                type: 'Identifier',
-                name: 'hello',
-                range: [9, 14],
-                loc: {
-                    start: { line: 1, column: 9 },
-                    end: { line: 1, column: 14 }
-                }
-            },
-            params: [{
-                type: 'Identifier',
-                name: 'a',
-                range: [15, 16],
-                loc: {
-                    start: { line: 1, column: 15 },
-                    end: { line: 1, column: 16 }
-                }
-            }, {
-                type: 'Identifier',
-                name: 'b',
-                range: [18, 19],
-                loc: {
-                    start: { line: 1, column: 18 },
-                    end: { line: 1, column: 19 }
-                }
-            }],
-            defaults: [],
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'sayHi',
-                            range: [23, 28],
-                            loc: {
-                                start: { line: 1, column: 23 },
-                                end: { line: 1, column: 28 }
-                            }
-                        },
-                        'arguments': [],
-                        range: [23, 30],
-                        loc: {
-                            start: { line: 1, column: 23 },
-                            end: { line: 1, column: 30 }
-                        }
-                    },
-                    range: [23, 31],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 31 }
-                    }
-                }],
-                range: [21, 33],
-                loc: {
-                    start: { line: 1, column: 21 },
-                    end: { line: 1, column: 33 }
-                }
-            },
-            rest: null,
-            generator: false,
-            expression: false,
-            range: [0, 33],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 33 }
-            }
-        },
-
-        'var hi = function() { sayHi() };': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'hi',
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                init: {
-                    type: 'FunctionExpression',
-                    id: null,
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [{
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'CallExpression',
-                                callee: {
-                                    type: 'Identifier',
-                                    name: 'sayHi',
-                                    range: [22, 27],
-                                    loc: {
-                                        start: { line: 1, column: 22 },
-                                        end: { line: 1, column: 27 }
-                                    }
-                                },
-                                'arguments': [],
-                                range: [22, 29],
-                                loc: {
-                                    start: { line: 1, column: 22 },
-                                    end: { line: 1, column: 29 }
-                                }
-                            },
-                            range: [22, 30],
-                            loc: {
-                                start: { line: 1, column: 22 },
-                                end: { line: 1, column: 30 }
-                            }
-                        }],
-                        range: [20, 31],
-                        loc: {
-                            start: { line: 1, column: 20 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [9, 31],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 31 }
-                    }
-                },
-                range: [4, 31],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 31 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 32],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 32 }
-            }
-        },
-
-        'var hi = function eval() { };': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'hi',
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                init: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [18, 22],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [25, 28],
-                        loc: {
-                            start: { line: 1, column: 25 },
-                            end: { line: 1, column: 28 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [9, 28],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 28 }
-                    }
-                },
-                range: [4, 28],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 28 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 29 }
-            }
-        },
-
-        'var hi = function arguments() { };': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'hi',
-                    range: [4, 6],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                init: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [18, 27],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [30, 33],
-                        loc: {
-                            start: { line: 1, column: 30 },
-                            end: { line: 1, column: 33 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [9, 33],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 33 }
-                    }
-                },
-                range: [4, 33],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 33 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            }
-        },
-
-        'var hello = function hi() { sayHi() };': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'hello',
-                    range: [4, 9],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 9 }
-                    }
-                },
-                init: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'hi',
-                        range: [21, 23],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 23 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [{
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'CallExpression',
-                                callee: {
-                                    type: 'Identifier',
-                                    name: 'sayHi',
-                                    range: [28, 33],
-                                    loc: {
-                                        start: { line: 1, column: 28 },
-                                        end: { line: 1, column: 33 }
-                                    }
-                                },
-                                'arguments': [],
-                                range: [28, 35],
-                                loc: {
-                                    start: { line: 1, column: 28 },
-                                    end: { line: 1, column: 35 }
-                                }
-                            },
-                            range: [28, 36],
-                            loc: {
-                                start: { line: 1, column: 28 },
-                                end: { line: 1, column: 36 }
-                            }
-                        }],
-                        range: [26, 37],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 37 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [12, 37],
-                    loc: {
-                        start: { line: 1, column: 12 },
-                        end: { line: 1, column: 37 }
-                    }
-                },
-                range: [4, 37],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 37 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            }
-        },
-
-        '(function(){})': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [11, 13],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 13],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 1, column: 13 }
-                }
-            },
-            range: [0, 14],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 14 }
-            }
-        }
-
-    },
-
-    'Automatic semicolon insertion': {
-
-        '{ x\n++y }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [2, 3],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                range: [2, 4],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 0 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '++',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 2, column: 2 },
-                            end: { line: 2, column: 3 }
-                        }
-                    },
-                    prefix: true,
-                    range: [4, 7],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 3 }
-                    }
-                },
-                range: [4, 8],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 4 }
-                }
-            }],
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 5 }
-            }
-        },
-
-        '{ x\n--y }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [2, 3],
-                    loc: {
-                        start: { line: 1, column: 2 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                range: [2, 4],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 0 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '--',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 2, column: 2 },
-                            end: { line: 2, column: 3 }
-                        }
-                    },
-                    prefix: true,
-                    range: [4, 7],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 3 }
-                    }
-                },
-                range: [4, 8],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 4 }
-                }
-            }],
-            range: [0, 9],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 5 }
-            }
-        },
-
-        'var x /* comment */;': {
-            type: 'VariableDeclaration',
-            declarations: [{
-                type: 'VariableDeclarator',
-                id: {
-                    type: 'Identifier',
-                    name: 'x',
-                    range: [4, 5],
-                    loc: {
-                        start: { line: 1, column: 4 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                init: null,
-                range: [4, 5],
-                loc: {
-                    start: { line: 1, column: 4 },
-                    end: { line: 1, column: 5 }
-                }
-            }],
-            kind: 'var',
-            range: [0, 20],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 20 }
-            }
-        },
-
-        '{ var x = 14, y = 3\nz; }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [6, 7],
-                        loc: {
-                            start: { line: 1, column: 6 },
-                            end: { line: 1, column: 7 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 14,
-                        raw: '14',
-                        range: [10, 12],
-                        loc: {
-                            start: { line: 1, column: 10 },
-                            end: { line: 1, column: 12 }
-                        }
-                    },
-                    range: [6, 12],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 12 }
-                    }
-                }, {
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'y',
-                        range: [14, 15],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    init: {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    range: [14, 19],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 19 }
-                    }
-                }],
-                kind: 'var',
-                range: [2, 20],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 0 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'z',
-                    range: [20, 21],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 1 }
-                    }
-                },
-                range: [20, 22],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 2 }
-                }
-            }],
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 4 }
-            }
-        },
-
-        'while (true) { continue\nthere; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ContinueStatement',
-                    label: null,
-                    range: [15, 23],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 23 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [24, 29],
-                        loc: {
-                            start: { line: 2, column: 0 },
-                            end: { line: 2, column: 5 }
-                        }
-                    },
-                    range: [24, 30],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 6 }
-                    }
-                }],
-                range: [13, 32],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 8 }
-                }
-            },
-            range: [0, 32],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        'while (true) { continue // Comment\nthere; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ContinueStatement',
-                    label: null,
-                    range: [15, 23],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 23 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [35, 40],
-                        loc: {
-                            start: { line: 2, column: 0 },
-                            end: { line: 2, column: 5 }
-                        }
-                    },
-                    range: [35, 41],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 6 }
-                    }
-                }],
-                range: [13, 43],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 8 }
-                }
-            },
-            range: [0, 43],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        'while (true) { continue /* Multiline\nComment */there; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'ContinueStatement',
-                    label: null,
-                    range: [15, 23],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 23 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [47, 52],
-                        loc: {
-                            start: { line: 2, column: 10 },
-                            end: { line: 2, column: 15 }
-                        }
-                    },
-                    range: [47, 53],
-                    loc: {
-                        start: { line: 2, column: 10 },
-                        end: { line: 2, column: 16 }
-                    }
-                }],
-                range: [13, 55],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 18 }
-                }
-            },
-            range: [0, 55],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 18 }
-            }
-        },
-
-        'while (true) { break\nthere; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [15, 20],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 20 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [21, 26],
-                        loc: {
-                            start: { line: 2, column: 0 },
-                            end: { line: 2, column: 5 }
-                        }
-                    },
-                    range: [21, 27],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 6 }
-                    }
-                }],
-                range: [13, 29],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 8 }
-                }
-            },
-            range: [0, 29],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        'while (true) { break // Comment\nthere; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [15, 20],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 20 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [32, 37],
-                        loc: {
-                            start: { line: 2, column: 0 },
-                            end: { line: 2, column: 5 }
-                        }
-                    },
-                    range: [32, 38],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 6 }
-                    }
-                }],
-                range: [13, 40],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 8 }
-                }
-            },
-            range: [0, 40],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        'while (true) { break /* Multiline\nComment */there; }': {
-            type: 'WhileStatement',
-            test: {
-                type: 'Literal',
-                value: true,
-                raw: 'true',
-                range: [7, 11],
-                loc: {
-                    start: { line: 1, column: 7 },
-                    end: { line: 1, column: 11 }
-                }
-            },
-            body: {
-                type: 'BlockStatement',
-                body: [{
-                    type: 'BreakStatement',
-                    label: null,
-                    range: [15, 20],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 20 }
-                    }
-                }, {
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'there',
-                        range: [44, 49],
-                        loc: {
-                            start: { line: 2, column: 10 },
-                            end: { line: 2, column: 15 }
-                        }
-                    },
-                    range: [44, 50],
-                    loc: {
-                        start: { line: 2, column: 10 },
-                        end: { line: 2, column: 16 }
-                    }
-                }],
-                range: [13, 52],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 2, column: 18 }
-                }
-            },
-            range: [0, 52],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 18 }
-            }
-        },
-
-        '(function(){ return\nx; })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: null,
-                            range: [13, 19],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 19 }
-                            }
-                        },
-                        {
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [20, 21],
-                                loc: {
-                                    start: { line: 2, column: 0 },
-                                    end: { line: 2, column: 1 }
-                                }
-                            },
-                            range: [20, 22],
-                            loc: {
-                                start: { line: 2, column: 0 },
-                                end: { line: 2, column: 2 }
-                            }
-                        }
-                    ],
-                    range: [11, 24],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 2, column: 4 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 24],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 2, column: 4 }
-                }
-            },
-            range: [0, 25],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 5 }
-            }
-        },
-
-        '(function(){ return // Comment\nx; })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: null,
-                            range: [13, 19],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 19 }
-                            }
-                        },
-                        {
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [31, 32],
-                                loc: {
-                                    start: { line: 2, column: 0 },
-                                    end: { line: 2, column: 1 }
-                                }
-                            },
-                            range: [31, 33],
-                            loc: {
-                                start: { line: 2, column: 0 },
-                                end: { line: 2, column: 2 }
-                            }
-                        }
-                    ],
-                    range: [11, 35],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 2, column: 4 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 35],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 2, column: 4 }
-                }
-            },
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 5 }
-            }
-        },
-
-        '(function(){ return/* Multiline\nComment */x; })': {
-            type: 'ExpressionStatement',
-            expression: {
-                type: 'FunctionExpression',
-                id: null,
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [
-                        {
-                            type: 'ReturnStatement',
-                            argument: null,
-                            range: [13, 19],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 19 }
-                            }
-                        },
-                        {
-                            type: 'ExpressionStatement',
-                            expression: {
-                                type: 'Identifier',
-                                name: 'x',
-                                range: [42, 43],
-                                loc: {
-                                    start: { line: 2, column: 10 },
-                                    end: { line: 2, column: 11 }
-                                }
-                            },
-                            range: [42, 44],
-                            loc: {
-                                start: { line: 2, column: 10 },
-                                end: { line: 2, column: 12 }
-                            }
-                        }
-                    ],
-                    range: [11, 46],
-                    loc: {
-                        start: { line: 1, column: 11 },
-                        end: { line: 2, column: 14 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [1, 46],
-                loc: {
-                    start: { line: 1, column: 1 },
-                    end: { line: 2, column: 14 }
-                }
-            },
-            range: [0, 47],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 15 }
-            }
-        },
-
-        '{ throw error\nerror; }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ThrowStatement',
-                argument: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [2, 14],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 0 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [14, 19],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 5 }
-                    }
-                },
-                range: [14, 20],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        '{ throw error// Comment\nerror; }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ThrowStatement',
-                argument: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [2, 24],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 0 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [24, 29],
-                    loc: {
-                        start: { line: 2, column: 0 },
-                        end: { line: 2, column: 5 }
-                    }
-                },
-                range: [24, 30],
-                loc: {
-                    start: { line: 2, column: 0 },
-                    end: { line: 2, column: 6 }
-                }
-            }],
-            range: [0, 32],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 8 }
-            }
-        },
-
-        '{ throw error/* Multiline\nComment */error; }': {
-            type: 'BlockStatement',
-            body: [{
-                type: 'ThrowStatement',
-                argument: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [8, 13],
-                    loc: {
-                        start: { line: 1, column: 8 },
-                        end: { line: 1, column: 13 }
-                    }
-                },
-                range: [2, 36],
-                loc: {
-                    start: { line: 1, column: 2 },
-                    end: { line: 2, column: 10 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Identifier',
-                    name: 'error',
-                    range: [36, 41],
-                    loc: {
-                        start: { line: 2, column: 10 },
-                        end: { line: 2, column: 15 }
-                    }
-                },
-                range: [36, 42],
-                loc: {
-                    start: { line: 2, column: 10 },
-                    end: { line: 2, column: 16 }
-                }
-            }],
-            range: [0, 44],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 2, column: 18 }
-            }
-        }
-
-    },
-
-    'Source elements': {
-
-        '': {
-            type: 'Program',
-            body: [],
-            range: [0, 0],
-            loc: {
-                start: { line: 0, column: 0 },
-                end: { line: 0, column: 0 }
-            },
-            tokens: []
-        }
-    },
-
-    'Invalid syntax': {
-
-        '{': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '}': {
-            index: 0,
-            lineNumber: 1,
-            column: 1,
-            message: 'Error: Line 1: Unexpected token }'
-        },
-
-        '3ea': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3in []': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3e': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3e+': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3e-': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3x': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3x0': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '0x': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '09': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '018': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '01a': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '3in[]': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '0x3in[]': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '"Hello\nWorld"': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'x\\': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'x\\u005c': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'x\\u002a': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'var x = /(s/g': {
-            index: 13,
-            lineNumber: 1,
-            column: 14,
-            message: 'Error: Line 1: Invalid regular expression'
-        },
-
-        '/': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Invalid regular expression: missing /'
-        },
-
-        '/test': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Invalid regular expression: missing /'
-        },
-
-        'var x = /[a-z]/\\ux': {
-            index: 18,
-            lineNumber: 1,
-            column: 19,
-            message: 'Error: Line 1: Invalid regular expression'
-        },
-
-        '3 = 4': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        'func() = 4': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '(1 + 1) = 10': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '1++': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '1--': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '++1': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '--1': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        'for((1 + 1) in list) process(x);': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Invalid left-hand side in for-in'
-        },
-
-        '[': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '[,': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '1 + {': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '1 + { t:t ': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '1 + { t:t,': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'var x = /\n/': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Invalid regular expression: missing /'
-        },
-
-        'var x = "\n': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'var if = 42': {
-            index: 4,
-            lineNumber: 1,
-            column: 5,
-            message: 'Error: Line 1: Unexpected token if'
-        },
-
-        'i + 2 = 42': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '+i = 42': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Invalid left-hand side in assignment'
-        },
-
-        '1 + (': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        '\n\n\n{': {
-            index: 4,
-            lineNumber: 4,
-            column: 2,
-            message: 'Error: Line 4: Unexpected end of input'
-        },
-
-        '\n/* Some multiline\ncomment */\n)': {
-            index: 30,
-            lineNumber: 4,
-            column: 1,
-            message: 'Error: Line 4: Unexpected token )'
-        },
-
-        '{ set 1 }': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Unexpected number'
-        },
-
-        '{ get 2 }': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Unexpected number'
-        },
-
-        '({ set: s(if) { } })': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Unexpected token if'
-        },
-
-        '({ set s(.) { } })': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token .'
-        },
-
-        '({ set s() { } })': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token )'
-        },
-
-        '({ set: s() { } })': {
-            index: 12,
-            lineNumber: 1,
-            column: 13,
-            message: 'Error: Line 1: Unexpected token {'
-        },
-
-        '({ set: s(a, b) { } })': {
-            index: 16,
-            lineNumber: 1,
-            column: 17,
-            message: 'Error: Line 1: Unexpected token {'
-        },
-
-        '({ get: g(d) { } })': {
-            index: 13,
-            lineNumber: 1,
-            column: 14,
-            message: 'Error: Line 1: Unexpected token {'
-        },
-
-        '({ get i() { }, i: 42 })': {
-            index: 21,
-            lineNumber: 1,
-            column: 22,
-            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-        },
-
-        '({ i: 42, get i() { } })': {
-            index: 21,
-            lineNumber: 1,
-            column: 22,
-            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-        },
-
-        '({ set i(x) { }, i: 42 })': {
-            index: 22,
-            lineNumber: 1,
-            column: 23,
-            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-        },
-
-        '({ i: 42, set i(x) { } })': {
-            index: 22,
-            lineNumber: 1,
-            column: 23,
-            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-        },
-
-        '({ get i() { }, get i() { } })': {
-            index: 27,
-            lineNumber: 1,
-            column: 28,
-            message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
-        },
-
-        '({ set i(x) { }, set i(x) { } })': {
-            index: 29,
-            lineNumber: 1,
-            column: 30,
-            message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
-        },
-
-        'function t(if) { }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Unexpected token if'
-        },
-
-        'function t(true) { }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Unexpected token true'
-        },
-
-        'function t(false) { }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Unexpected token false'
-        },
-
-        'function t(null) { }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Unexpected token null'
-        },
-
-        'function null() { }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token null'
-        },
-
-        'function true() { }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token true'
-        },
-
-        'function false() { }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token false'
-        },
-
-        'function if() { }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token if'
-        },
-
-        'a b;': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected identifier'
-        },
-
-        'if.a;': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token .'
-        },
-
-        'a if;': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token if'
-        },
-
-        'a class;': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected reserved word'
-        },
-
-        'break\n': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Illegal break statement'
-        },
-
-        'break 1;': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Unexpected number'
-        },
-
-        'continue\n': {
-            index: 8,
-            lineNumber: 1,
-            column: 9,
-            message: 'Error: Line 1: Illegal continue statement'
-        },
-
-        'continue 2;': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected number'
-        },
-
-        'throw': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'throw;': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Unexpected token ;'
-        },
-
-        'throw\n': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Illegal newline after throw'
-        },
-
-        'for (var i, i2 in {});': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Unexpected token in'
-        },
-
-        'for ((i in {}));': {
-            index: 14,
-            lineNumber: 1,
-            column: 15,
-            message: 'Error: Line 1: Unexpected token )'
-        },
-
-        'for (i + 1 in {});': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Invalid left-hand side in for-in'
-        },
-
-        'for (+i in {});': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Invalid left-hand side in for-in'
-        },
-
-        'if(false)': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'if(false) doThis(); else': {
-            index: 24,
-            lineNumber: 1,
-            column: 25,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'do': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'while(false)': {
-            index: 12,
-            lineNumber: 1,
-            column: 13,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'for(;;)': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'with(x)': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'try { }': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Missing catch or finally after try'
-        },
-
-        'try {} catch (42) {} ': {
-            index: 14,
-            lineNumber: 1,
-            column: 15,
-            message: 'Error: Line 1: Unexpected number'
-        },
-
-        'try {} catch (answer()) {} ': {
-            index: 20,
-            lineNumber: 1,
-            column: 21,
-            message: 'Error: Line 1: Unexpected token ('
-        },
-
-        'try {} catch (-x) {} ': {
-            index: 14,
-            lineNumber: 1,
-            column: 15,
-            message: 'Error: Line 1: Unexpected token -'
-        },
-
-
-        '\u203F = 10': {
-            index: 0,
-            lineNumber: 1,
-            column: 1,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'const x = 12, y;': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Unexpected token ;'
-        },
-
-        'const x, y = 12;': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ,'
-        },
-
-        'const x;': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ;'
-        },
-
-        'if(true) let a = 1;': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token let'
-        },
-
-        'if(true) const a = 1;': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token const'
-        },
-
-        'switch (c) { default: default: }': {
-            index: 30,
-            lineNumber: 1,
-            column: 31,
-            message: 'Error: Line 1: More than one default clause in switch statement'
-        },
-
-        'new X()."s"': {
-            index: 8,
-            lineNumber: 1,
-            column: 9,
-            message: 'Error: Line 1: Unexpected string'
-        },
-
-        '/*': {
-            index: 2,
-            lineNumber: 1,
-            column: 3,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '/*\n\n\n': {
-            index: 5,
-            lineNumber: 4,
-            column: 1,
-            message: 'Error: Line 4: Unexpected token ILLEGAL'
-        },
-
-        '/**': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '/*\n\n*': {
-            index: 5,
-            lineNumber: 3,
-            column: 2,
-            message: 'Error: Line 3: Unexpected token ILLEGAL'
-        },
-
-        '/*hello': {
-            index: 7,
-            lineNumber: 1,
-            column: 8,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '/*hello  *': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '\n]': {
-            index: 1,
-            lineNumber: 2,
-            column: 1,
-            message: 'Error: Line 2: Unexpected token ]'
-        },
-
-        '\r]': {
-            index: 1,
-            lineNumber: 2,
-            column: 1,
-            message: 'Error: Line 2: Unexpected token ]'
-        },
-
-        '\r\n]': {
-            index: 2,
-            lineNumber: 2,
-            column: 1,
-            message: 'Error: Line 2: Unexpected token ]'
-        },
-
-        '\n\r]': {
-            index: 2,
-            lineNumber: 3,
-            column: 1,
-            message: 'Error: Line 3: Unexpected token ]'
-        },
-
-        '//\r\n]': {
-            index: 4,
-            lineNumber: 2,
-            column: 1,
-            message: 'Error: Line 2: Unexpected token ]'
-        },
-
-        '//\n\r]': {
-            index: 4,
-            lineNumber: 3,
-            column: 1,
-            message: 'Error: Line 3: Unexpected token ]'
-        },
-
-        '/a\\\n/': {
-            index: 4,
-            lineNumber: 1,
-            column: 5,
-            message: 'Error: Line 1: Invalid regular expression: missing /'
-        },
-        
-        '//\r \n]': {
-            index: 5,
-            lineNumber: 3,
-            column: 1,
-            message: 'Error: Line 3: Unexpected token ]'
-        },
-
-        '/*\r\n*/]': {
-            index: 6,
-            lineNumber: 2,
-            column: 3,
-            message: 'Error: Line 2: Unexpected token ]'
-        },
-
-        '/*\n\r*/]': {
-            index: 6,
-            lineNumber: 3,
-            column: 3,
-            message: 'Error: Line 3: Unexpected token ]'
-        },
-
-        '/*\r \n*/]': {
-            index: 7,
-            lineNumber: 3,
-            column: 3,
-            message: 'Error: Line 3: Unexpected token ]'
-        },
-
-        '\\\\': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '\\u005c': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-
-        '\\x': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '\\u0000': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '\u200C = []': {
-            index: 0,
-            lineNumber: 1,
-            column: 1,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '\u200D = []': {
-            index: 0,
-            lineNumber: 1,
-            column: 1,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '"\\': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        '"\\u': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected token ILLEGAL'
-        },
-
-        'try { } catch() {}': {
-            index: 14,
-            lineNumber: 1,
-            column: 15,
-            message: 'Error: Line 1: Unexpected token )'
-        },
-
-        'return': {
-            index: 6,
-            lineNumber: 1,
-            column: 7,
-            message: 'Error: Line 1: Illegal return statement'
-        },
-
-        'break': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Illegal break statement'
-        },
-
-        'continue': {
-            index: 8,
-            lineNumber: 1,
-            column: 9,
-            message: 'Error: Line 1: Illegal continue statement'
-        },
-
-        'switch (x) { default: continue; }': {
-            index: 31,
-            lineNumber: 1,
-            column: 32,
-            message: 'Error: Line 1: Illegal continue statement'
-        },
-
-        'do { x } *': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Unexpected token *'
-        },
-
-        'while (true) { break x; }': {
-            index: 22,
-            lineNumber: 1,
-            column: 23,
-            message: 'Error: Line 1: Undefined label \'x\''
-        },
-
-        'while (true) { continue x; }': {
-            index: 25,
-            lineNumber: 1,
-            column: 26,
-            message: 'Error: Line 1: Undefined label \'x\''
-        },
-
-        'x: while (true) { (function () { break x; }); }': {
-            index: 40,
-            lineNumber: 1,
-            column: 41,
-            message: 'Error: Line 1: Undefined label \'x\''
-        },
-
-        'x: while (true) { (function () { continue x; }); }': {
-            index: 43,
-            lineNumber: 1,
-            column: 44,
-            message: 'Error: Line 1: Undefined label \'x\''
-        },
-
-        'x: while (true) { (function () { break; }); }': {
-            index: 39,
-            lineNumber: 1,
-            column: 40,
-            message: 'Error: Line 1: Illegal break statement'
-        },
-
-        'x: while (true) { (function () { continue; }); }': {
-            index: 42,
-            lineNumber: 1,
-            column: 43,
-            message: 'Error: Line 1: Illegal continue statement'
-        },
-
-        'x: while (true) { x: while (true) { } }': {
-            index: 20,
-            lineNumber: 1,
-            column: 21,
-            message: 'Error: Line 1: Label \'x\' has already been declared'
-        },
-
-        '(function () { \'use strict\'; delete i; }())': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
-        },
-
-        '(function () { \'use strict\'; with (i); }())': {
-            index: 28,
-            lineNumber: 1,
-            column: 29,
-            message: 'Error: Line 1: Strict mode code may not include a with statement'
-        },
-
-        'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
-            index: 47,
-            lineNumber: 1,
-            column: 48,
-            message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': {
-            index: 73,
-            lineNumber: 1,
-            column: 74,
-            message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; var eval = 10; }': {
-            index: 40,
-            lineNumber: 1,
-            column: 41,
-            message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; var arguments = 10; }': {
-            index: 45,
-            lineNumber: 1,
-            column: 46,
-            message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; try { } catch (eval) { } }': {
-            index: 51,
-            lineNumber: 1,
-            column: 52,
-            message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; try { } catch (arguments) { } }': {
-            index: 56,
-            lineNumber: 1,
-            column: 57,
-            message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; eval = 10; }': {
-            index: 32,
-            lineNumber: 1,
-            column: 33,
-            message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; arguments = 10; }': {
-            index: 32,
-            lineNumber: 1,
-            column: 33,
-            message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ++eval; }': {
-            index: 38,
-            lineNumber: 1,
-            column: 39,
-            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; --eval; }': {
-            index: 38,
-            lineNumber: 1,
-            column: 39,
-            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ++arguments; }': {
-            index: 43,
-            lineNumber: 1,
-            column: 44,
-            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; --arguments; }': {
-            index: 43,
-            lineNumber: 1,
-            column: 44,
-            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; eval++; }': {
-            index: 36,
-            lineNumber: 1,
-            column: 37,
-            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; eval--; }': {
-            index: 36,
-            lineNumber: 1,
-            column: 37,
-            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; arguments++; }': {
-            index: 41,
-            lineNumber: 1,
-            column: 42,
-            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; arguments--; }': {
-            index: 41,
-            lineNumber: 1,
-            column: 42,
-            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-        },
-
-        'function hello() {\'use strict\'; function eval() { } }': {
-            index: 41,
-            lineNumber: 1,
-            column: 42,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; function arguments() { } }': {
-            index: 41,
-            lineNumber: 1,
-            column: 42,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function eval() {\'use strict\'; }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function arguments() {\'use strict\'; }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; (function eval() { }()) }': {
-            index: 42,
-            lineNumber: 1,
-            column: 43,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; (function arguments() { }()) }': {
-            index: 42,
-            lineNumber: 1,
-            column: 43,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        '(function eval() {\'use strict\'; })()': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        '(function arguments() {\'use strict\'; })()': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ({ s: function eval() { } }); }': {
-            index: 47,
-            lineNumber: 1,
-            column: 48,
-            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-        },
-
-        '(function package() {\'use strict\'; })()': {
-            index: 10,
-            lineNumber: 1,
-            column: 11,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': {
-            index: 48,
-            lineNumber: 1,
-            column: 49,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ({ set s(eval) { } }); }': {
-            index: 41,
-            lineNumber: 1,
-            column: 42,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': {
-            index: 49,
-            lineNumber: 1,
-            column: 50,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello(eval) {\'use strict\';}': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello(arguments) {\'use strict\';}': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() { \'use strict\'; function inner(eval) {} }': {
-            index: 48,
-            lineNumber: 1,
-            column: 49,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function hello() { \'use strict\'; function inner(arguments) {} }': {
-            index: 48,
-            lineNumber: 1,
-            column: 49,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        ' "\\1"; \'use strict\';': {
-            index: 1,
-            lineNumber: 1,
-            column: 2,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { \'use strict\'; "\\1"; }': {
-            index: 33,
-            lineNumber: 1,
-            column: 34,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { \'use strict\'; 021; }': {
-            index: 33,
-            lineNumber: 1,
-            column: 34,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { \'use strict\'; ({ "\\1": 42 }); }': {
-            index: 36,
-            lineNumber: 1,
-            column: 37,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { \'use strict\'; ({ 021: 42 }); }': {
-            index: 36,
-            lineNumber: 1,
-            column: 37,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { "octal directive\\1"; "use strict"; }': {
-            index: 19,
-            lineNumber: 1,
-            column: 20,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': {
-            index: 19,
-            lineNumber: 1,
-            column: 20,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': {
-            index: 52,
-            lineNumber: 1,
-            column: 53,
-            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-        },
-
-        'function hello() { "use strict"; var implements; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var interface; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var package; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var private; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var protected; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var public; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var static; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var yield; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello() { "use strict"; var let; }': {
-            index: 37,
-            lineNumber: 1,
-            column: 38,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function hello(static) { "use strict"; }': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function static() { "use strict"; }': {
-            index: 9,
-            lineNumber: 1,
-            column: 10,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'var yield': {
-            index: 4,
-            lineNumber: 1,
-            column: 5,
-            message: 'Error: Line 1: Unexpected token yield'
-        },
-
-        'var let': {
-            index: 4,
-            lineNumber: 1,
-            column: 5,
-            message: 'Error: Line 1: Unexpected token let'
-        },
-
-        '"use strict"; function static() { }': {
-            index: 23,
-            lineNumber: 1,
-            column: 24,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function a(t, t) { "use strict"; }': {
-            index: 14,
-            lineNumber: 1,
-            column: 15,
-            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-        },
-
-        'function a(eval) { "use strict"; }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        'function a(package) { "use strict"; }': {
-            index: 11,
-            lineNumber: 1,
-            column: 12,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'function a() { "use strict"; function b(t, t) { }; }': {
-            index: 43,
-            lineNumber: 1,
-            column: 44,
-            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-        },
-
-        '(function a(t, t) { "use strict"; })': {
-            index: 15,
-            lineNumber: 1,
-            column: 16,
-            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-        },
-
-        'function a() { "use strict"; (function b(t, t) { }); }': {
-            index: 44,
-            lineNumber: 1,
-            column: 45,
-            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-        },
-
-        '(function a(eval) { "use strict"; })': {
-            index: 12,
-            lineNumber: 1,
-            column: 13,
-            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-        },
-
-        '(function a(package) { "use strict"; })': {
-            index: 12,
-            lineNumber: 1,
-            column: 13,
-            message: 'Error: Line 1: Use of future reserved word in strict mode'
-        },
-
-        'var': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'let': {
-            index: 3,
-            lineNumber: 1,
-            column: 4,
-            message: 'Error: Line 1: Unexpected end of input'
-        },
-
-        'const': {
-            index: 5,
-            lineNumber: 1,
-            column: 6,
-            message: 'Error: Line 1: Unexpected end of input'
-        }
-
-    },
-
-    'API': {
-        'parse()': {
-            call: 'parse',
-            args: [],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'undefined'
-                    }
-                }]
-            }
-        },
-
-        'parse(null)': {
-            call: 'parse',
-            args: [null],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Literal',
-                        value: null
-                    }
-                }]
-            }
-        },
-
-        'parse(42)': {
-            call: 'parse',
-            args: [42],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Literal',
-                        value: 42
-                    }
-                }]
-            }
-        },
-
-        'parse(true)': {
-            call: 'parse',
-            args: [true],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Literal',
-                        value: true
-                    }
-                }]
-            }
-        },
-
-        'parse(undefined)': {
-            call: 'parse',
-            args: [void 0],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'undefined'
-                    }
-                }]
-            }
-        },
-
-        'parse(new String("test"))': {
-            call: 'parse',
-            args: [new String('test')],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Identifier',
-                        name: 'test'
-                    }
-                }]
-            }
-        },
-
-        'parse(new Number(42))': {
-            call: 'parse',
-            args: [new Number(42)],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Literal',
-                        value: 42
-                    }
-                }]
-            }
-        },
-
-        'parse(new Boolean(true))': {
-            call: 'parse',
-            args: [new Boolean(true)],
-            result: {
-                type: 'Program',
-                body: [{
-                    type: 'ExpressionStatement',
-                    expression: {
-                        type: 'Literal',
-                        value: true
-                    }
-                }]
-            }
-        },
-
-        'Syntax': {
-            property: 'Syntax',
-            result: {
-                AssignmentExpression: 'AssignmentExpression',
-                ArrayExpression: 'ArrayExpression',
-                BlockStatement: 'BlockStatement',
-                BinaryExpression: 'BinaryExpression',
-                BreakStatement: 'BreakStatement',
-                CallExpression: 'CallExpression',
-                CatchClause: 'CatchClause',
-                ConditionalExpression: 'ConditionalExpression',
-                ContinueStatement: 'ContinueStatement',
-                DoWhileStatement: 'DoWhileStatement',
-                DebuggerStatement: 'DebuggerStatement',
-                EmptyStatement: 'EmptyStatement',
-                ExpressionStatement: 'ExpressionStatement',
-                ForStatement: 'ForStatement',
-                ForInStatement: 'ForInStatement',
-                FunctionDeclaration: 'FunctionDeclaration',
-                FunctionExpression: 'FunctionExpression',
-                Identifier: 'Identifier',
-                IfStatement: 'IfStatement',
-                Literal: 'Literal',
-                LabeledStatement: 'LabeledStatement',
-                LogicalExpression: 'LogicalExpression',
-                MemberExpression: 'MemberExpression',
-                NewExpression: 'NewExpression',
-                ObjectExpression: 'ObjectExpression',
-                Program: 'Program',
-                Property: 'Property',
-                ReturnStatement: 'ReturnStatement',
-                SequenceExpression: 'SequenceExpression',
-                SwitchStatement: 'SwitchStatement',
-                SwitchCase: 'SwitchCase',
-                ThisExpression: 'ThisExpression',
-                ThrowStatement: 'ThrowStatement',
-                TryStatement: 'TryStatement',
-                UnaryExpression: 'UnaryExpression',
-                UpdateExpression: 'UpdateExpression',
-                VariableDeclaration: 'VariableDeclaration',
-                VariableDeclarator: 'VariableDeclarator',
-                WhileStatement: 'WhileStatement',
-                WithStatement: 'WithStatement'
-            }
-        }
-
-    },
-
-    'Tolerant parse': {
-        'return': {
-            type: 'Program',
-            body: [{
-                type: 'ReturnStatement',
-                'argument': null,
-                range: [0, 6],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 6 }
-                }
-            }],
-            range: [0, 6],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 6 }
-            },
-            errors: [{
-                index: 6,
-                lineNumber: 1,
-                column: 7,
-                message: 'Error: Line 1: Illegal return statement'
-            }]
-        },
-
-        '(function () { \'use strict\'; with (i); }())': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'FunctionExpression',
-                        id: null,
-                        params: [],
-                        defaults: [],
-                        body: {
-                            type: 'BlockStatement',
-                            body: [{
-                                type: 'ExpressionStatement',
-                                expression: {
-                                    type: 'Literal',
-                                    value: 'use strict',
-                                    raw: '\'use strict\'',
-                                    range: [15, 27],
-                                    loc: {
-                                        start: { line: 1, column: 15 },
-                                        end: { line: 1, column: 27 }
-                                    }
-                                },
-                                range: [15, 28],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 28 }
-                                }
-                            }, {
-                                type: 'WithStatement',
-                                object: {
-                                    type: 'Identifier',
-                                    name: 'i',
-                                    range: [35, 36],
-                                    loc: {
-                                        start: { line: 1, column: 35 },
-                                        end: { line: 1, column: 36 }
-                                    }
-                                },
-                                body: {
-                                    type: 'EmptyStatement',
-                                    range: [37, 38],
-                                    loc: {
-                                        start: { line: 1, column: 37 },
-                                        end: { line: 1, column: 38 }
-                                    }
-                                },
-                                range: [29, 38],
-                                loc: {
-                                    start: { line: 1, column: 29 },
-                                    end: { line: 1, column: 38 }
-                                }
-                            }],
-                            range: [13, 40],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 40 }
-                            }
-                        },
-                        rest: null,
-                        generator: false,
-                        expression: false,
-                        range: [1, 40],
-                        loc: {
-                            start: { line: 1, column: 1 },
-                            end: { line: 1, column: 40 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [1, 42],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 42 }
-                    }
-                },
-                range: [0, 43],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 43 }
-                }
-            }],
-            range: [0, 43],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 43 }
-            },
-            errors: [{
-                index: 29,
-                lineNumber: 1,
-                column: 30,
-                message: 'Error: Line 1: Strict mode code may not include a with statement'
-            }]
-        },
-
-        '(function () { \'use strict\'; 021 }())': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'CallExpression',
-                    callee: {
-                        type: 'FunctionExpression',
-                        id: null,
-                        params: [],
-                        defaults: [],
-                        body: {
-                            type: 'BlockStatement',
-                            body: [{
-                                type: 'ExpressionStatement',
-                                expression: {
-                                    type: 'Literal',
-                                    value: 'use strict',
-                                    raw: '\'use strict\'',
-                                    range: [15, 27],
-                                    loc: {
-                                        start: { line: 1, column: 15 },
-                                        end: { line: 1, column: 27 }
-                                    }
-                                },
-                                range: [15, 28],
-                                loc: {
-                                    start: { line: 1, column: 15 },
-                                    end: { line: 1, column: 28 }
-                                }
-                            }, {
-                                type: 'ExpressionStatement',
-                                expression: {
-                                    type: 'Literal',
-                                    value: 17,
-                                    raw: "021",
-                                    range: [29, 32],
-                                    loc: {
-                                        start: { line: 1, column: 29 },
-                                        end: { line: 1, column: 32 }
-                                    }
-                                },
-                                range: [29, 33],
-                                loc: {
-                                    start: { line: 1, column: 29 },
-                                    end: { line: 1, column: 33 }
-                                }
-                            }],
-                            range: [13, 34],
-                            loc: {
-                                start: { line: 1, column: 13 },
-                                end: { line: 1, column: 34 }
-                            }
-                        },
-                        rest: null,
-                        generator: false,
-                        expression: false,
-                        range: [1, 34],
-                        loc: {
-                            start: { line: 1, column: 1 },
-                            end: { line: 1, column: 34 }
-                        }
-                    },
-                    'arguments': [],
-                    range: [1, 36],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [0, 37],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 37 }
-                }
-            }],
-            range: [0, 37],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 37 }
-            },
-            errors: [{
-                index: 29,
-                lineNumber: 1,
-                column: 30,
-                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-            }]
-        },
-
-        '"use strict"; delete x': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UnaryExpression',
-                    operator: 'delete',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [21, 22],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    prefix: true,
-                    range: [14, 22],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                range: [14, 22],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 22 }
-                }
-            }],
-            range: [0, 22],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 22 }
-            },
-            errors: [{
-                index: 22,
-                lineNumber: 1,
-                column: 23,
-                message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
-            }]
-        },
-
-        '"use strict"; try {} catch (eval) {}': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'TryStatement',
-                block: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [18, 20],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                guardedHandlers: [],
-                handlers: [{
-                    type: 'CatchClause',
-                    param: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [28, 32],
-                        loc: {
-                            start: { line: 1, column: 28 },
-                            end: { line: 1, column: 32 }
-                        }
-                    },
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [34, 36],
-                        loc: {
-                            start: { line: 1, column: 34 },
-                            end: { line: 1, column: 36 }
-                        }
-                    },
-                    range: [21, 36],
-                    loc: {
-                        start: { line: 1, column: 21 },
-                        end: { line: 1, column: 36 }
-                    }
-                }],
-                finalizer: null,
-                range: [14, 36],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 36 }
-                }
-            }],
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            },
-            errors: [{
-                index: 32,
-                lineNumber: 1,
-                column: 33,
-                message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; try {} catch (arguments) {}': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'TryStatement',
-                block: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [18, 20],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                guardedHandlers: [],
-                handlers: [{
-                    type: 'CatchClause',
-                    param: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [28, 37],
-                        loc: {
-                            start: { line: 1, column: 28 },
-                            end: { line: 1, column: 37 }
-                        }
-                    },
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [39, 41],
-                        loc: {
-                            start: { line: 1, column: 39 },
-                            end: { line: 1, column: 41 }
-                        }
-                    },
-                    range: [21, 41],
-                    loc: {
-                        start: { line: 1, column: 21 },
-                        end: { line: 1, column: 41 }
-                    }
-                }],
-                finalizer: null,
-                range: [14, 41],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 41 }
-                }
-            }],
-            range: [0, 41],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 41 }
-            },
-            errors: [{
-                index: 37,
-                lineNumber: 1,
-                column: 38,
-                message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; var eval;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [18, 22],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    init: null,
-                    range: [18, 22],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 22 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 23],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 23 }
-                }
-            }],
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            },
-            errors: [{
-                index: 22,
-                lineNumber: 1,
-                column: 23,
-                message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; var arguments;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [18, 27],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    init: null,
-                    range: [18, 27],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 27 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 28],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 28 }
-                }
-            }],
-            range: [0, 28],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 28 }
-            },
-            errors: [{
-                index: 27,
-                lineNumber: 1,
-                column: 28,
-                message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; eval = 0;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [14, 18],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [21, 22],
-                        loc: {
-                            start: { line: 1, column: 21 },
-                            end: { line: 1, column: 22 }
-                        }
-                    },
-                    range: [14, 22],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 22 }
-                    }
-                },
-                range: [14, 23],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 23 }
-                }
-            }],
-            range: [0, 23],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 23 }
-            },
-            errors: [{
-                index: 14,
-                lineNumber: 1,
-                column: 15,
-                message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; eval++;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '++',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [14, 18],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 18 }
-                        }
-                    },
-                    prefix: false,
-                    range: [14, 20],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                range: [14, 21],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            },
-            errors: [{
-                index: 18,
-                lineNumber: 1,
-                column: 19,
-                message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-            }]
-        },
-
-        '"use strict"; --eval;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '--',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [16, 20],
-                        loc: {
-                            start: { line: 1, column: 16 },
-                            end: { line: 1, column: 20 }
-                        }
-                    },
-                    prefix: true,
-                    range: [14, 20],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 20 }
-                    }
-                },
-                range: [14, 21],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 21 }
-                }
-            }],
-            range: [0, 21],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 21 }
-            },
-            errors: [{
-                index: 20,
-                lineNumber: 1,
-                column: 21,
-                message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-            }]
-        },
-
-        '"use strict"; arguments = 0;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [14, 23],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 23 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 0,
-                        raw: '0',
-                        range: [26, 27],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 27 }
-                        }
-                    },
-                    range: [14, 27],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                range: [14, 28],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 28 }
-                }
-            }],
-            range: [0, 28],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 28 }
-            },
-            errors: [{
-                index: 14,
-                lineNumber: 1,
-                column: 15,
-                message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; arguments--;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '--',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [14, 23],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 23 }
-                        }
-                    },
-                    prefix: false,
-                    range: [14, 25],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                range: [14, 26],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 26 }
-                }
-            }],
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            },
-            errors: [{
-                index: 23,
-                lineNumber: 1,
-                column: 24,
-                message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
-            }]
-        },
-
-        '"use strict"; ++arguments;': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '++',
-                    argument: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [16, 25],
-                        loc: {
-                            start: { line: 1, column: 16 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    prefix: true,
-                    range: [14, 25],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 25 }
-                    }
-                },
-                range: [14, 26],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 26 }
-                }
-            }],
-            range: [0, 26],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 26 }
-            },
-            errors: [{
-                index: 25,
-                lineNumber: 1,
-                column: 26,
-                message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
-            }]
-        },
-
-
-        '"use strict";x={y:1,y:1}': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [13, 14],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 14 }
-                        }
-                    },
-                    right: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'y',
-                                range: [16, 17],
-                                loc: {
-                                    start: { line: 1, column: 16 },
-                                    end: { line: 1, column: 17 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 1,
-                                raw: '1',
-                                range: [18, 19],
-                                loc: {
-                                    start: { line: 1, column: 18 },
-                                    end: { line: 1, column: 19 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [16, 19],
-                            loc: {
-                                start: { line: 1, column: 16 },
-                                end: { line: 1, column: 19 }
-                            }
-                        }, {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'y',
-                                range: [20, 21],
-                                loc: {
-                                    start: { line: 1, column: 20 },
-                                    end: { line: 1, column: 21 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 1,
-                                raw: '1',
-                                range: [22, 23],
-                                loc: {
-                                    start: { line: 1, column: 22 },
-                                    end: { line: 1, column: 23 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [20, 23],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 23 }
-                            }
-                        }],
-                        range: [15, 24],
-                        loc: {
-                            start: { line: 1, column: 15 },
-                            end: { line: 1, column: 24 }
-                        }
-                    },
-                    range: [13, 24],
-                    loc: {
-                        start: { line: 1, column: 13 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                range: [13, 24],
-                loc: {
-                    start: { line: 1, column: 13 },
-                    end: { line: 1, column: 24 }
-                }
-            }],
-            range: [0, 24],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 24 }
-            },
-            errors: [{
-                index: 23,
-                lineNumber: 1,
-                column: 24,
-                message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; function eval() {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [23, 27],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 27 }
-                    }
-                },
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [30, 32],
-                    loc: {
-                        start: { line: 1, column: 30 },
-                        end: { line: 1, column: 32 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 32],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 32 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [32, 33],
-                loc: {
-                    start: { line: 1, column: 32 },
-                    end: { line: 1, column: 33 }
-                }
-            }],
-            range: [0, 33],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 33 }
-            },
-            errors: [{
-                index: 23,
-                lineNumber: 1,
-                column: 24,
-                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; function arguments() {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [23, 32],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 32 }
-                    }
-                },
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [35, 37],
-                    loc: {
-                        start: { line: 1, column: 35 },
-                        end: { line: 1, column: 37 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 37],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 37 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [37, 38],
-                loc: {
-                    start: { line: 1, column: 37 },
-                    end: { line: 1, column: 38 }
-                }
-            }],
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            },
-            errors: [{
-                index: 23,
-                lineNumber: 1,
-                column: 24,
-                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; function interface() {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'interface',
-                    range: [23, 32],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 32 }
-                    }
-                },
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [35, 37],
-                    loc: {
-                        start: { line: 1, column: 35 },
-                        end: { line: 1, column: 37 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 37],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 37 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [37, 38],
-                loc: {
-                    start: { line: 1, column: 37 },
-                    end: { line: 1, column: 38 }
-                }
-            }],
-            range: [0, 38],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 38 }
-            },
-            errors: [{
-                index: 23,
-                lineNumber: 1,
-                column: 24,
-                message: 'Error: Line 1: Use of future reserved word in strict mode'
-            }]
-        },
-
-        '"use strict"; (function eval() {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [24, 28],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 28 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [31, 33],
-                        loc: {
-                            start: { line: 1, column: 31 },
-                            end: { line: 1, column: 33 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 33],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 33 }
-                    }
-                },
-                range: [14, 35],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 35 }
-                }
-            }],
-            range: [0, 35],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 35 }
-            },
-            errors: [{
-                index: 24,
-                lineNumber: 1,
-                column: 25,
-                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; (function arguments() {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [24, 33],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 33 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [36, 38],
-                        loc: {
-                            start: { line: 1, column: 36 },
-                            end: { line: 1, column: 38 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 38],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                range: [14, 40],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 40 }
-                }
-            }],
-            range: [0, 40],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 40 }
-            },
-            errors: [{
-                index: 24,
-                lineNumber: 1,
-                column: 25,
-                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
-            }]
-        },
-
-        '"use strict"; (function interface() {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'interface',
-                        range: [24, 33],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 33 }
-                        }
-                    },
-                    params: [],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [36, 38],
-                        loc: {
-                            start: { line: 1, column: 36 },
-                            end: { line: 1, column: 38 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 38],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                range: [14, 40],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 40 }
-                }
-            }],
-            range: [0, 40],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 40 }
-            },
-            errors: [{
-                index: 24,
-                lineNumber: 1,
-                column: 25,
-                message: 'Error: Line 1: Use of future reserved word in strict mode'
-            }]
-        },
-
-        '"use strict"; function f(eval) {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'f',
-                    range: [23, 24],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                params: [{
-                    type: 'Identifier',
-                    name: 'eval',
-                    range: [25, 29],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 29 }
-                    }
-                }],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [31, 33],
-                    loc: {
-                        start: { line: 1, column: 31 },
-                        end: { line: 1, column: 33 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 33],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 33 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [33, 34],
-                loc: {
-                    start: { line: 1, column: 33 },
-                    end: { line: 1, column: 34 }
-                }
-            }],
-            range: [0, 34],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 34 }
-            },
-            errors: [{
-                index: 25,
-                lineNumber: 1,
-                column: 26,
-                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; function f(arguments) {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'f',
-                    range: [23, 24],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                params: [{
-                    type: 'Identifier',
-                    name: 'arguments',
-                    range: [25, 34],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 34 }
-                    }
-                }],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [36, 38],
-                    loc: {
-                        start: { line: 1, column: 36 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 38],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 38 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [38, 39],
-                loc: {
-                    start: { line: 1, column: 38 },
-                    end: { line: 1, column: 39 }
-                }
-            }],
-            range: [0, 39],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 39 }
-            },
-            errors: [{
-                index: 25,
-                lineNumber: 1,
-                column: 26,
-                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; function f(foo,  foo) {};': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'f',
-                    range: [23, 24],
-                    loc: {
-                        start: { line: 1, column: 23 },
-                        end: { line: 1, column: 24 }
-                    }
-                },
-                params: [{
-                    type: 'Identifier',
-                    name: 'foo',
-                    range: [25, 28],
-                    loc: {
-                        start: { line: 1, column: 25 },
-                        end: { line: 1, column: 28 }
-                    }
-                }, {
-                    type: 'Identifier',
-                    name: 'foo',
-                    range: [31, 34],
-                    loc: {
-                        start: { line: 1, column: 31 },
-                        end: { line: 1, column: 34 }
-                    }
-                }],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [36, 38],
-                    loc: {
-                        start: { line: 1, column: 36 },
-                        end: { line: 1, column: 38 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [14, 38],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 38 }
-                }
-            }, {
-                type: 'EmptyStatement',
-                range: [38, 39],
-                loc: {
-                    start: { line: 1, column: 38 },
-                    end: { line: 1, column: 39 }
-                }
-            }],
-            range: [0, 39],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 39 }
-            },
-            errors: [{
-                index: 31,
-                lineNumber: 1,
-                column: 32,
-                message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-            }]
-        },
-
-        '"use strict"; (function f(eval) {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'f',
-                        range: [24, 25],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    params: [{
-                        type: 'Identifier',
-                        name: 'eval',
-                        range: [26, 30],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 30 }
-                        }
-                    }],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [32, 34],
-                        loc: {
-                            start: { line: 1, column: 32 },
-                            end: { line: 1, column: 34 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 34],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 34 }
-                    }
-                },
-                range: [14, 36],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 36 }
-                }
-            }],
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            },
-            errors: [{
-                index: 26,
-                lineNumber: 1,
-                column: 27,
-                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-
-        '"use strict"; (function f(arguments) {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'f',
-                        range: [24, 25],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    params: [{
-                        type: 'Identifier',
-                        name: 'arguments',
-                        range: [26, 35],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 35 }
-                        }
-                    }],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [37, 39],
-                        loc: {
-                            start: { line: 1, column: 37 },
-                            end: { line: 1, column: 39 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 39],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 39 }
-                    }
-                },
-                range: [14, 41],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 41 }
-                }
-            }],
-            range: [0, 41],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 41 }
-            },
-            errors: [{
-                index: 26,
-                lineNumber: 1,
-                column: 27,
-                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        '"use strict"; (function f(foo,  foo) {});': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'FunctionExpression',
-                    id: {
-                        type: 'Identifier',
-                        name: 'f',
-                        range: [24, 25],
-                        loc: {
-                            start: { line: 1, column: 24 },
-                            end: { line: 1, column: 25 }
-                        }
-                    },
-                    params: [{
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [26, 29],
-                        loc: {
-                            start: { line: 1, column: 26 },
-                            end: { line: 1, column: 29 }
-                        }
-                    }, {
-                        type: 'Identifier',
-                        name: 'foo',
-                        range: [32, 35],
-                        loc: {
-                            start: { line: 1, column: 32 },
-                            end: { line: 1, column: 35 }
-                        }
-                    }],
-                    defaults: [],
-                    body: {
-                        type: 'BlockStatement',
-                        body: [],
-                        range: [37, 39],
-                        loc: {
-                            start: { line: 1, column: 37 },
-                            end: { line: 1, column: 39 }
-                        }
-                    },
-                    rest: null,
-                    generator: false,
-                    expression: false,
-                    range: [15, 39],
-                    loc: {
-                        start: { line: 1, column: 15 },
-                        end: { line: 1, column: 39 }
-                    }
-                },
-                range: [14, 41],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 41 }
-                }
-            }],
-            range: [0, 41],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 41 }
-            },
-            errors: [{
-                index: 32,
-                lineNumber: 1,
-                column: 33,
-                message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
-            }]
-        },
-
-        '"use strict"; x = { set f(eval) {} }' : {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [14, 15],
-                        loc: {
-                            start: { line: 1, column: 14 },
-                            end: { line: 1, column: 15 }
-                        }
-                    },
-                    right: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'f',
-                                range: [24, 25],
-                                loc: {
-                                    start: { line: 1, column: 24 },
-                                    end: { line: 1, column: 25 }
-                                }
-                            },
-                            value : {
-                                type: 'FunctionExpression',
-                                id: null,
-                                params: [{
-                                    type: 'Identifier',
-                                    name: 'eval',
-                                    range: [26, 30],
-                                    loc: {
-                                        start: { line: 1, column: 26 },
-                                        end: { line: 1, column: 30 }
-                                    }
-                                }],
-                                defaults: [],
-                                body: {
-                                    type: 'BlockStatement',
-                                    body: [],
-                                    range: [32, 34],
-                                    loc: {
-                                        start: { line: 1, column: 32 },
-                                        end: { line: 1, column: 34 }
-                                    }
-                                },
-                                rest: null,
-                                generator: false,
-                                expression: false,
-                                range: [32, 34],
-                                loc: {
-                                    start: { line: 1, column: 32 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            kind: 'set',
-                            range: [20, 34],
-                            loc: {
-                                start: { line: 1, column: 20 },
-                                end: { line: 1, column: 34 }
-                            }
-                        }],
-                        range: [18, 36],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 36 }
-                        }
-                    },
-                    range: [14, 36],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 36 }
-                    }
-                },
-                range: [14, 36],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 36 }
-                }
-            }],
-            range: [0, 36],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 36 }
-            },
-            errors: [{
-                index: 26,
-                lineNumber: 1,
-                column: 27,
-                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
-            }]
-        },
-
-        'function hello() { "octal directive\\1"; "use strict"; }': {
-            type: 'Program',
-            body: [{
-                type: 'FunctionDeclaration',
-                id: {
-                    type: 'Identifier',
-                    name: 'hello',
-                    range: [9, 14],
-                    loc: {
-                        start: { line: 1, column: 9 },
-                        end: { line: 1, column: 14 }
-                    }
-                },
-                params: [],
-                defaults: [],
-                body: {
-                    type: 'BlockStatement',
-                    body: [{
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'Literal',
-                            value: 'octal directive\u0001',
-                            raw: '"octal directive\\1"',
-                            range: [19, 38],
-                            loc: {
-                                start: { line: 1, column: 19 },
-                                end: { line: 1, column: 38 }
-                            }
-                        },
-                        range: [19, 39],
-                        loc: {
-                            start: { line: 1, column: 19 },
-                            end: { line: 1, column: 39 }
-                        }
-                    }, {
-                        type: 'ExpressionStatement',
-                        expression: {
-                            type: 'Literal',
-                            value: 'use strict',
-                            raw: '"use strict"',
-                            range: [40, 52],
-                            loc: {
-                                start: { line: 1, column: 40 },
-                                end: { line: 1, column: 52 }
-                            }
-                        },
-                        range: [40, 53],
-                        loc: {
-                            start: { line: 1, column: 40 },
-                            end: { line: 1, column: 53 }
-                        }
-                    }],
-                    range: [17, 55],
-                    loc: {
-                        start: { line: 1, column: 17 },
-                        end: { line: 1, column: 55 }
-                    }
-                },
-                rest: null,
-                generator: false,
-                expression: false,
-                range: [0, 55],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 55 }
-                }
-            }],
-            range: [0, 55],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 55 }
-            },
-            errors: [{
-                index: 19,
-                lineNumber: 1,
-                column: 20,
-                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-            }]
-        },
-
-        '"\\1"; \'use strict\';': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: '\u0001',
-                    raw: '"\\1"',
-                    range: [0, 4],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 4 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            }, {
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '\'use strict\'',
-                    range: [6, 18],
-                    loc: {
-                        start: { line: 1, column: 6 },
-                        end: { line: 1, column: 18 }
-                    }
-                },
-                range: [6, 19],
-                loc: {
-                    start: { line: 1, column: 6 },
-                    end: { line: 1, column: 19 }
-                }
-            }],
-            range: [0, 19],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 19 }
-            },
-            errors: [{
-                index: 0,
-                lineNumber: 1,
-                column: 1,
-                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-            }]
-        },
-
-        '"use strict"; var x = { 014: 3}': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    init: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Literal',
-                                value: 12,
-                                raw: '014',
-                                range: [24, 27],
-                                loc: {
-                                    start: { line: 1, column: 24 },
-                                    end: { line: 1, column: 27 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 3,
-                                raw: '3',
-                                range: [29, 30],
-                                loc: {
-                                    start: { line: 1, column: 29 },
-                                    end: { line: 1, column: 30 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [24, 30],
-                            loc: {
-                                start: { line: 1, column: 24 },
-                                end: { line: 1, column: 30 }
-                            }
-                        }],
-                        range: [22, 31],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 31 }
-                        }
-                    },
-                    range: [18, 31],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 31 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 31],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 31 }
-                }
-            }],
-            range: [0, 31],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 31 }
-            },
-            errors: [{
-                index: 24,
-                lineNumber: 1,
-                column: 25,
-                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
-            }]
-        },
-
-        '"use strict"; var x = { get i() {}, get i() {} }': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    init: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [28, 29],
-                                loc: {
-                                    start: { line: 1, column: 28 },
-                                    end: { line: 1, column: 29 }
-                                }
-                            },
-                            value: {
-                                type: 'FunctionExpression',
-                                id: null,
-                                params: [],
-                                defaults: [],
-                                body: {
-                                    type: 'BlockStatement',
-                                    body: [],
-                                    range: [32, 34],
-                                    loc: {
-                                        start: { line: 1, column: 32 },
-                                        end: { line: 1, column: 34 }
-                                    }
-                                },
-                                rest: null,
-                                generator: false,
-                                expression: false,
-                                range: [32, 34],
-                                loc: {
-                                    start: { line: 1, column: 32 },
-                                    end: { line: 1, column: 34 }
-                                }
-                            },
-                            kind: 'get',
-                            range: [24, 34],
-                            loc: {
-                                start: { line: 1, column: 24 },
-                                end: { line: 1, column: 34 }
-                            }
-                        }, {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [40, 41],
-                                loc: {
-                                    start: { line: 1, column: 40 },
-                                    end: { line: 1, column: 41 }
-                                }
-                            },
-                            value: {
-                                type: 'FunctionExpression',
-                                id: null,
-                                params: [],
-                                defaults: [],
-                                body: {
-                                    type: 'BlockStatement',
-                                    body: [],
-                                    range: [44, 46],
-                                    loc: {
-                                        start: { line: 1, column: 44 },
-                                        end: { line: 1, column: 46 }
-                                    }
-                                },
-                                rest: null,
-                                generator: false,
-                                expression: false,
-                                range: [44, 46],
-                                loc: {
-                                    start: { line: 1, column: 44 },
-                                    end: { line: 1, column: 46 }
-                                }
-                            },
-                            kind: 'get',
-                            range: [36, 46],
-                            loc: {
-                                start: { line: 1, column: 36 },
-                                end: { line: 1, column: 46 }
-                            }
-                        }],
-                        range: [22, 48],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 48 }
-                        }
-                    },
-                    range: [18, 48],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 48 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 48],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 48 }
-                }
-            }],
-            range: [0, 48],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 48 }
-            },
-            errors: [{
-                index: 46,
-                lineNumber: 1,
-                column: 47,
-                message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
-            }]
-        },
-
-        '"use strict"; var x = { i: 42, get i() {} }': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    init: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [24, 25],
-                                loc: {
-                                    start: { line: 1, column: 24 },
-                                    end: { line: 1, column: 25 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 42,
-                                raw: '42',
-                                range: [27, 29],
-                                loc: {
-                                    start: { line: 1, column: 27 },
-                                    end: { line: 1, column: 29 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [24, 29],
-                            loc: {
-                                start: { line: 1, column: 24 },
-                                end: { line: 1, column: 29 }
-                            }
-                        }, {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [35, 36],
-                                loc: {
-                                    start: { line: 1, column: 35 },
-                                    end: { line: 1, column: 36 }
-                                }
-                            },
-                            value: {
-                                type: 'FunctionExpression',
-                                id: null,
-                                params: [],
-                                defaults: [],
-                                body: {
-                                    type: 'BlockStatement',
-                                    body: [],
-                                    range: [39, 41],
-                                    loc: {
-                                        start: { line: 1, column: 39 },
-                                        end: { line: 1, column: 41 }
-                                    }
-                                },
-                                rest: null,
-                                generator: false,
-                                expression: false,
-                                range: [39, 41],
-                                loc: {
-                                    start: { line: 1, column: 39 },
-                                    end: { line: 1, column: 41 }
-                                }
-                            },
-                            kind: 'get',
-                            range: [31, 41],
-                            loc: {
-                                start: { line: 1, column: 31 },
-                                end: { line: 1, column: 41 }
-                            }
-                        }],
-                        range: [22, 43],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 43 }
-                        }
-                    },
-                    range: [18, 43],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 43 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 43],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 43 }
-                }
-            }],
-            range: [0, 43],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 43 }
-            },
-            errors: [{
-                index: 41,
-                lineNumber: 1,
-                column: 42,
-                message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-            }]
-        },
-
-        '"use strict"; var x = { set i(x) {}, i: 42 }': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'Literal',
-                    value: 'use strict',
-                    raw: '"use strict"',
-                    range: [0, 12],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                range: [0, 13],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 13 }
-                }
-            }, {
-                type: 'VariableDeclaration',
-                declarations: [{
-                    type: 'VariableDeclarator',
-                    id: {
-                        type: 'Identifier',
-                        name: 'x',
-                        range: [18, 19],
-                        loc: {
-                            start: { line: 1, column: 18 },
-                            end: { line: 1, column: 19 }
-                        }
-                    },
-                    init: {
-                        type: 'ObjectExpression',
-                        properties: [{
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [28, 29],
-                                loc: {
-                                    start: { line: 1, column: 28 },
-                                    end: { line: 1, column: 29 }
-                                }
-                            },
-                            value: {
-                                type: 'FunctionExpression',
-                                id: null,
-                                params: [{
-                                    type: 'Identifier',
-                                    name: 'x',
-                                    range: [30, 31],
-                                    loc: {
-                                        start: { line: 1, column: 30 },
-                                        end: { line: 1, column: 31 }
-                                    }
-                                }],
-                                defaults: [],
-                                body: {
-                                    type: 'BlockStatement',
-                                    body: [],
-                                    range: [33, 35],
-                                    loc: {
-                                        start: { line: 1, column: 33 },
-                                        end: { line: 1, column: 35 }
-                                    }
-                                },
-                                rest: null,
-                                generator: false,
-                                expression: false,
-                                range: [33, 35],
-                                loc: {
-                                    start: { line: 1, column: 33 },
-                                    end: { line: 1, column: 35 }
-                                }
-                            },
-                            kind: 'set',
-                            range: [24, 35],
-                            loc: {
-                                start: { line: 1, column: 24 },
-                                end: { line: 1, column: 35 }
-                            }
-                        }, {
-                            type: 'Property',
-                            key: {
-                                type: 'Identifier',
-                                name: 'i',
-                                range: [37, 38],
-                                loc: {
-                                    start: { line: 1, column: 37 },
-                                    end: { line: 1, column: 38 }
-                                }
-                            },
-                            value: {
-                                type: 'Literal',
-                                value: 42,
-                                raw: '42',
-                                range: [40, 42],
-                                loc: {
-                                    start: { line: 1, column: 40 },
-                                    end: { line: 1, column: 42 }
-                                }
-                            },
-                            kind: 'init',
-                            range: [37, 42],
-                            loc: {
-                                start: { line: 1, column: 37 },
-                                end: { line: 1, column: 42 }
-                            }
-                        }],
-                        range: [22, 44],
-                        loc: {
-                            start: { line: 1, column: 22 },
-                            end: { line: 1, column: 44 }
-                        }
-                    },
-                    range: [18, 44],
-                    loc: {
-                        start: { line: 1, column: 18 },
-                        end: { line: 1, column: 44 }
-                    }
-                }],
-                kind: 'var',
-                range: [14, 44],
-                loc: {
-                    start: { line: 1, column: 14 },
-                    end: { line: 1, column: 44 }
-                }
-            }],
-            range: [0, 44],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 44 }
-            },
-            errors: [{
-                index: 42,
-                lineNumber: 1,
-                column: 43,
-                message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
-            }]
-
-
-        },
-
-        '({ set s() { } })': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'ObjectExpression',
-                    properties: [{
-                        type: 'Property',
-                        key: {
-                            type: 'Identifier',
-                            name: 's',
-                            range: [7, 8],
-                            loc: {
-                                start: { line: 1, column: 7 },
-                                end: { line: 1, column: 8 }
-                            }
-                        },
-                        value: {
-                            type: 'FunctionExpression',
-                            id: null,
-                            params: [],
-                            defaults: [],
-                            body: {
-                                type: 'BlockStatement',
-                                body: [],
-                                range: [11, 14],
-                                loc: {
-                                    start: { line: 1, column: 11 },
-                                    end: { line: 1, column: 14 }
-                                }
-                            },
-                            rest: null,
-                            generator: false,
-                            expression: false,
-                            range: [11, 14],
-                            loc: {
-                                start: { line: 1, column: 11 },
-                                end: { line: 1, column: 14 }
-                            }
-                        },
-                        kind: 'set',
-                        range: [3, 14],
-                        loc: {
-                            start: { line: 1, column: 3 },
-                            end: { line: 1, column: 14 }
-                        }
-                    }],
-                    range: [1, 16],
-                    loc: {
-                        start: { line: 1, column: 1 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                range: [0, 17],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 17 }
-                }
-            }],
-            range: [0, 17],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 17 }
-            },
-            errors: [{
-                index: 9,
-                lineNumber: 1,
-                column: 10,
-                message: 'Error: Line 1: Unexpected token )'
-            }]
-        },
-
-        'foo("bar") = baz': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'CallExpression',
-                        callee: {
-                            type: 'Identifier',
-                            name: 'foo',
-                            range: [0, 3],
-                            loc: {
-                                start: { line: 1, column: 0 },
-                                end: { line: 1, column: 3 }
-                            }
-                        },
-                        'arguments': [{
-                            type: 'Literal',
-                            value: 'bar',
-                            raw: '"bar"',
-                            range: [4, 9],
-                            loc: {
-                                start: { line: 1, column: 4 },
-                                end: { line: 1, column: 9 }
-                            }
-                        }],
-                        range: [0, 10],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 10 }
-                        }
-                    },
-                    right: {
-                        type: 'Identifier',
-                        name: 'baz',
-                        range: [13, 16],
-                        loc: {
-                            start: { line: 1, column: 13 },
-                            end: { line: 1, column: 16 }
-                        }
-                    },
-                    range: [0, 16],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }],
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            },
-            errors: [{
-                index: 10,
-                lineNumber: 1,
-                column: 11,
-                message: 'Error: Line 1: Invalid left-hand side in assignment'
-            }]
-        },
-
-        '1 = 2': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'AssignmentExpression',
-                    operator: '=',
-                    left: {
-                        type: 'Literal',
-                        value: 1,
-                        raw: '1',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    right: {
-                        type: 'Literal',
-                        value: 2,
-                        raw: '2',
-                        range: [4, 5],
-                        loc: {
-                            start: { line: 1, column: 4 },
-                            end: { line: 1, column: 5 }
-                        }
-                    },
-                    range: [0, 5],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 5 }
-                    }
-                },
-                range: [0, 5],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 5 }
-                }
-            }],
-            range: [0, 5],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 5 }
-            },
-            errors: [{
-                index: 1,
-                lineNumber: 1,
-                column: 2,
-                message: 'Error: Line 1: Invalid left-hand side in assignment'
-            }]
-        },
-
-        '3++': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '++',
-                    argument: {
-                        type: 'Literal',
-                        value: 3,
-                        raw: '3',
-                        range: [0, 1],
-                        loc: {
-                            start: { line: 1, column: 0 },
-                            end: { line: 1, column: 1 }
-                        }
-                    },
-                    prefix: false,
-                    range: [0, 3],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }],
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            },
-            errors: [{
-                index: 1,
-                lineNumber: 1,
-                column: 2,
-                message: 'Error: Line 1: Invalid left-hand side in assignment'
-            }]
-        },
-
-        '--4': {
-            type: 'Program',
-            body: [{
-                type: 'ExpressionStatement',
-                expression: {
-                    type: 'UpdateExpression',
-                    operator: '--',
-                    argument: {
-                        type: 'Literal',
-                        value: 4,
-                        raw: '4',
-                        range: [2, 3],
-                        loc: {
-                            start: { line: 1, column: 2 },
-                            end: { line: 1, column: 3 }
-                        }
-                    },
-                    prefix: true,
-                    range: [0, 3],
-                    loc: {
-                        start: { line: 1, column: 0 },
-                        end: { line: 1, column: 3 }
-                    }
-                },
-                range: [0, 3],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 3 }
-                }
-            }],
-            range: [0, 3],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 3 }
-            },
-            errors: [{
-                index: 3,
-                lineNumber: 1,
-                column: 4,
-                message: 'Error: Line 1: Invalid left-hand side in assignment'
-            }]
-        },
-
-        'for (5 in []) {}': {
-            type: 'Program',
-            body: [{
-                type: 'ForInStatement',
-                left: {
-                    type: 'Literal',
-                    value: 5,
-                    raw: '5',
-                    range: [5, 6],
-                    loc: {
-                        start: { line: 1, column: 5 },
-                        end: { line: 1, column: 6 }
-                    }
-                },
-                right: {
-                    type: 'ArrayExpression',
-                    elements: [],
-                    range: [10, 12],
-                    loc: {
-                        start: { line: 1, column: 10 },
-                        end: { line: 1, column: 12 }
-                    }
-                },
-                body: {
-                    type: 'BlockStatement',
-                    body: [],
-                    range: [14, 16],
-                    loc: {
-                        start: { line: 1, column: 14 },
-                        end: { line: 1, column: 16 }
-                    }
-                },
-                each: false,
-                range: [0, 16],
-                loc: {
-                    start: { line: 1, column: 0 },
-                    end: { line: 1, column: 16 }
-                }
-            }],
-            range: [0, 16],
-            loc: {
-                start: { line: 1, column: 0 },
-                end: { line: 1, column: 16 }
-            },
-            errors: [{
-                index: 6,
-                lineNumber: 1,
-                column: 7,
-                message: 'Error: Line 1: Invalid left-hand side in for-in'
-            }]
-        }
-
-
-    }
-};
-

+ 0 - 16
ParticleFilter/node_modules/ast-transform/node_modules/estraverse/.jshintrc

@@ -1,16 +0,0 @@
-{
-  "curly": true,
-  "eqeqeq": true,
-  "immed": true,
-  "eqnull": true,
-  "latedef": true,
-  "noarg": true,
-  "noempty": true,
-  "quotmark": "single",
-  "undef": true,
-  "unused": true,
-  "strict": true,
-  "trailing": true,
-
-  "node": true
-}

+ 0 - 19
ParticleFilter/node_modules/ast-transform/node_modules/estraverse/LICENSE.BSD

@@ -1,19 +0,0 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 70
ParticleFilter/node_modules/ast-transform/node_modules/estraverse/README.md

@@ -1,70 +0,0 @@
-### Estraverse [![Build Status](https://secure.travis-ci.org/Constellation/estraverse.png)](http://travis-ci.org/Constellation/estraverse)
-
-Estraverse ([estraverse](http://github.com/Constellation/estraverse)) is
-[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
-traversal functions from [esmangle project](http://github.com/Constellation/esmangle).
-
-### Example Usage
-
-The following code will output all variables declared at the root of a file.
-
-```javascript
-estraverse.traverse(ast, {
-    enter: function (node, parent) {
-        if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration')
-            return estraverse.VisitorOption.Skip;
-    },
-    leave: function (node, parent) {
-        if (node.type == 'VariableDeclarator')
-          console.log(node.id.name);
-    }
-});
-```
-
-We can use `this.skip` and `this.break` functions instead of using Skip and Break.
-
-```javascript
-estraverse.traverse(ast, {
-    enter: function (node) {
-        this.break();
-    }
-});
-```
-
-And estraverse provides `estraverse.replace` function. When returning node from `enter`/`leave`, current node is replaced with it.
-
-```javascript
-result = estraverse.replace(tree, {
-    enter: function (node) {
-        // Replace it with replaced.
-        if (node.type === 'Literal')
-            return replaced;
-    }
-});
-```
-
-### License
-
-Copyright (C) 2012-2013 [Yusuke Suzuki](http://github.com/Constellation)
- (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 689
ParticleFilter/node_modules/ast-transform/node_modules/estraverse/estraverse.js

@@ -1,689 +0,0 @@
-/*
-  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
-  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/*jslint vars:false, bitwise:true*/
-/*jshint indent:4*/
-/*global exports:true, define:true*/
-(function (root, factory) {
-    'use strict';
-
-    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
-    // and plain browser loading,
-    if (typeof define === 'function' && define.amd) {
-        define(['exports'], factory);
-    } else if (typeof exports !== 'undefined') {
-        factory(exports);
-    } else {
-        factory((root.estraverse = {}));
-    }
-}(this, function (exports) {
-    'use strict';
-
-    var Syntax,
-        isArray,
-        VisitorOption,
-        VisitorKeys,
-        BREAK,
-        SKIP;
-
-    Syntax = {
-        AssignmentExpression: 'AssignmentExpression',
-        ArrayExpression: 'ArrayExpression',
-        ArrayPattern: 'ArrayPattern',
-        ArrowFunctionExpression: 'ArrowFunctionExpression',
-        BlockStatement: 'BlockStatement',
-        BinaryExpression: 'BinaryExpression',
-        BreakStatement: 'BreakStatement',
-        CallExpression: 'CallExpression',
-        CatchClause: 'CatchClause',
-        ClassBody: 'ClassBody',
-        ClassDeclaration: 'ClassDeclaration',
-        ClassExpression: 'ClassExpression',
-        ConditionalExpression: 'ConditionalExpression',
-        ContinueStatement: 'ContinueStatement',
-        DebuggerStatement: 'DebuggerStatement',
-        DirectiveStatement: 'DirectiveStatement',
-        DoWhileStatement: 'DoWhileStatement',
-        EmptyStatement: 'EmptyStatement',
-        ExpressionStatement: 'ExpressionStatement',
-        ForStatement: 'ForStatement',
-        ForInStatement: 'ForInStatement',
-        FunctionDeclaration: 'FunctionDeclaration',
-        FunctionExpression: 'FunctionExpression',
-        Identifier: 'Identifier',
-        IfStatement: 'IfStatement',
-        Literal: 'Literal',
-        LabeledStatement: 'LabeledStatement',
-        LogicalExpression: 'LogicalExpression',
-        MemberExpression: 'MemberExpression',
-        MethodDefinition: 'MethodDefinition',
-        NewExpression: 'NewExpression',
-        ObjectExpression: 'ObjectExpression',
-        ObjectPattern: 'ObjectPattern',
-        Program: 'Program',
-        Property: 'Property',
-        ReturnStatement: 'ReturnStatement',
-        SequenceExpression: 'SequenceExpression',
-        SwitchStatement: 'SwitchStatement',
-        SwitchCase: 'SwitchCase',
-        ThisExpression: 'ThisExpression',
-        ThrowStatement: 'ThrowStatement',
-        TryStatement: 'TryStatement',
-        UnaryExpression: 'UnaryExpression',
-        UpdateExpression: 'UpdateExpression',
-        VariableDeclaration: 'VariableDeclaration',
-        VariableDeclarator: 'VariableDeclarator',
-        WhileStatement: 'WhileStatement',
-        WithStatement: 'WithStatement',
-        YieldExpression: 'YieldExpression'
-    };
-
-    function ignoreJSHintError() { }
-
-    isArray = Array.isArray;
-    if (!isArray) {
-        isArray = function isArray(array) {
-            return Object.prototype.toString.call(array) === '[object Array]';
-        };
-    }
-
-    function deepCopy(obj) {
-        var ret = {}, key, val;
-        for (key in obj) {
-            if (obj.hasOwnProperty(key)) {
-                val = obj[key];
-                if (typeof val === 'object' && val !== null) {
-                    ret[key] = deepCopy(val);
-                } else {
-                    ret[key] = val;
-                }
-            }
-        }
-        return ret;
-    }
-
-    function shallowCopy(obj) {
-        var ret = {}, key;
-        for (key in obj) {
-            if (obj.hasOwnProperty(key)) {
-                ret[key] = obj[key];
-            }
-        }
-        return ret;
-    }
-    ignoreJSHintError(shallowCopy);
-
-    // based on LLVM libc++ upper_bound / lower_bound
-    // MIT License
-
-    function upperBound(array, func) {
-        var diff, len, i, current;
-
-        len = array.length;
-        i = 0;
-
-        while (len) {
-            diff = len >>> 1;
-            current = i + diff;
-            if (func(array[current])) {
-                len = diff;
-            } else {
-                i = current + 1;
-                len -= diff + 1;
-            }
-        }
-        return i;
-    }
-
-    function lowerBound(array, func) {
-        var diff, len, i, current;
-
-        len = array.length;
-        i = 0;
-
-        while (len) {
-            diff = len >>> 1;
-            current = i + diff;
-            if (func(array[current])) {
-                i = current + 1;
-                len -= diff + 1;
-            } else {
-                len = diff;
-            }
-        }
-        return i;
-    }
-    ignoreJSHintError(lowerBound);
-
-    VisitorKeys = {
-        AssignmentExpression: ['left', 'right'],
-        ArrayExpression: ['elements'],
-        ArrayPattern: ['elements'],
-        ArrowFunctionExpression: ['params', 'defaults', 'rest', 'body'],
-        BlockStatement: ['body'],
-        BinaryExpression: ['left', 'right'],
-        BreakStatement: ['label'],
-        CallExpression: ['callee', 'arguments'],
-        CatchClause: ['param', 'body'],
-        ClassBody: ['body'],
-        ClassDeclaration: ['id', 'body', 'superClass'],
-        ClassExpression: ['id', 'body', 'superClass'],
-        ConditionalExpression: ['test', 'consequent', 'alternate'],
-        ContinueStatement: ['label'],
-        DebuggerStatement: [],
-        DirectiveStatement: [],
-        DoWhileStatement: ['body', 'test'],
-        EmptyStatement: [],
-        ExpressionStatement: ['expression'],
-        ForStatement: ['init', 'test', 'update', 'body'],
-        ForInStatement: ['left', 'right', 'body'],
-        ForOfStatement: ['left', 'right', 'body'],
-        FunctionDeclaration: ['id', 'params', 'defaults', 'rest', 'body'],
-        FunctionExpression: ['id', 'params', 'defaults', 'rest', 'body'],
-        Identifier: [],
-        IfStatement: ['test', 'consequent', 'alternate'],
-        Literal: [],
-        LabeledStatement: ['label', 'body'],
-        LogicalExpression: ['left', 'right'],
-        MemberExpression: ['object', 'property'],
-        MethodDefinition: ['key', 'value'],
-        NewExpression: ['callee', 'arguments'],
-        ObjectExpression: ['properties'],
-        ObjectPattern: ['properties'],
-        Program: ['body'],
-        Property: ['key', 'value'],
-        ReturnStatement: ['argument'],
-        SequenceExpression: ['expressions'],
-        SwitchStatement: ['discriminant', 'cases'],
-        SwitchCase: ['test', 'consequent'],
-        ThisExpression: [],
-        ThrowStatement: ['argument'],
-        TryStatement: ['block', 'handlers', 'handler', 'guardedHandlers', 'finalizer'],
-        UnaryExpression: ['argument'],
-        UpdateExpression: ['argument'],
-        VariableDeclaration: ['declarations'],
-        VariableDeclarator: ['id', 'init'],
-        WhileStatement: ['test', 'body'],
-        WithStatement: ['object', 'body'],
-        YieldExpression: ['argument']
-    };
-
-    // unique id
-    BREAK = {};
-    SKIP = {};
-
-    VisitorOption = {
-        Break: BREAK,
-        Skip: SKIP
-    };
-
-    function Reference(parent, key) {
-        this.parent = parent;
-        this.key = key;
-    }
-
-    Reference.prototype.replace = function replace(node) {
-        this.parent[this.key] = node;
-    };
-
-    function Element(node, path, wrap, ref) {
-        this.node = node;
-        this.path = path;
-        this.wrap = wrap;
-        this.ref = ref;
-    }
-
-    function Controller() { }
-
-    // API:
-    // return property path array from root to current node
-    Controller.prototype.path = function path() {
-        var i, iz, j, jz, result, element;
-
-        function addToPath(result, path) {
-            if (isArray(path)) {
-                for (j = 0, jz = path.length; j < jz; ++j) {
-                    result.push(path[j]);
-                }
-            } else {
-                result.push(path);
-            }
-        }
-
-        // root node
-        if (!this.__current.path) {
-            return null;
-        }
-
-        // first node is sentinel, second node is root element
-        result = [];
-        for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {
-            element = this.__leavelist[i];
-            addToPath(result, element.path);
-        }
-        addToPath(result, this.__current.path);
-        return result;
-    };
-
-    // API:
-    // return array of parent elements
-    Controller.prototype.parents = function parents() {
-        var i, iz, result;
-
-        // first node is sentinel
-        result = [];
-        for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {
-            result.push(this.__leavelist[i].node);
-        }
-
-        return result;
-    };
-
-    // API:
-    // return current node
-    Controller.prototype.current = function current() {
-        return this.__current.node;
-    };
-
-    Controller.prototype.__execute = function __execute(callback, element) {
-        var previous, result;
-
-        result = undefined;
-
-        previous  = this.__current;
-        this.__current = element;
-        this.__state = null;
-        if (callback) {
-            result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);
-        }
-        this.__current = previous;
-
-        return result;
-    };
-
-    // API:
-    // notify control skip / break
-    Controller.prototype.notify = function notify(flag) {
-        this.__state = flag;
-    };
-
-    // API:
-    // skip child nodes of current node
-    Controller.prototype.skip = function () {
-        this.notify(SKIP);
-    };
-
-    // API:
-    // break traversals
-    Controller.prototype['break'] = function () {
-        this.notify(BREAK);
-    };
-
-    Controller.prototype.__initialize = function(root, visitor) {
-        this.visitor = visitor;
-        this.root = root;
-        this.__worklist = [];
-        this.__leavelist = [];
-        this.__current = null;
-        this.__state = null;
-    };
-
-    Controller.prototype.traverse = function traverse(root, visitor) {
-        var worklist,
-            leavelist,
-            element,
-            node,
-            nodeType,
-            ret,
-            key,
-            current,
-            current2,
-            candidates,
-            candidate,
-            sentinel;
-
-        this.__initialize(root, visitor);
-
-        sentinel = {};
-
-        // reference
-        worklist = this.__worklist;
-        leavelist = this.__leavelist;
-
-        // initialize
-        worklist.push(new Element(root, null, null, null));
-        leavelist.push(new Element(null, null, null, null));
-
-        while (worklist.length) {
-            element = worklist.pop();
-
-            if (element === sentinel) {
-                element = leavelist.pop();
-
-                ret = this.__execute(visitor.leave, element);
-
-                if (this.__state === BREAK || ret === BREAK) {
-                    return;
-                }
-                continue;
-            }
-
-            if (element.node) {
-
-                ret = this.__execute(visitor.enter, element);
-
-                if (this.__state === BREAK || ret === BREAK) {
-                    return;
-                }
-
-                worklist.push(sentinel);
-                leavelist.push(element);
-
-                if (this.__state === SKIP || ret === SKIP) {
-                    continue;
-                }
-
-                node = element.node;
-                nodeType = element.wrap || node.type;
-                candidates = VisitorKeys[nodeType];
-
-                current = candidates.length;
-                while ((current -= 1) >= 0) {
-                    key = candidates[current];
-                    candidate = node[key];
-                    if (!candidate) {
-                        continue;
-                    }
-
-                    if (!isArray(candidate)) {
-                        worklist.push(new Element(candidate, key, null, null));
-                        continue;
-                    }
-
-                    current2 = candidate.length;
-                    while ((current2 -= 1) >= 0) {
-                        if (!candidate[current2]) {
-                            continue;
-                        }
-                        if ((nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === candidates[current]) {
-                            element = new Element(candidate[current2], [key, current2], 'Property', null);
-                        } else {
-                            element = new Element(candidate[current2], [key, current2], null, null);
-                        }
-                        worklist.push(element);
-                    }
-                }
-            }
-        }
-    };
-
-    Controller.prototype.replace = function replace(root, visitor) {
-        var worklist,
-            leavelist,
-            node,
-            nodeType,
-            target,
-            element,
-            current,
-            current2,
-            candidates,
-            candidate,
-            sentinel,
-            outer,
-            key;
-
-        this.__initialize(root, visitor);
-
-        sentinel = {};
-
-        // reference
-        worklist = this.__worklist;
-        leavelist = this.__leavelist;
-
-        // initialize
-        outer = {
-            root: root
-        };
-        element = new Element(root, null, null, new Reference(outer, 'root'));
-        worklist.push(element);
-        leavelist.push(element);
-
-        while (worklist.length) {
-            element = worklist.pop();
-
-            if (element === sentinel) {
-                element = leavelist.pop();
-
-                target = this.__execute(visitor.leave, element);
-
-                // node may be replaced with null,
-                // so distinguish between undefined and null in this place
-                if (target !== undefined && target !== BREAK && target !== SKIP) {
-                    // replace
-                    element.ref.replace(target);
-                }
-
-                if (this.__state === BREAK || target === BREAK) {
-                    return outer.root;
-                }
-                continue;
-            }
-
-            target = this.__execute(visitor.enter, element);
-
-            // node may be replaced with null,
-            // so distinguish between undefined and null in this place
-            if (target !== undefined && target !== BREAK && target !== SKIP) {
-                // replace
-                element.ref.replace(target);
-                element.node = target;
-            }
-
-            if (this.__state === BREAK || target === BREAK) {
-                return outer.root;
-            }
-
-            // node may be null
-            node = element.node;
-            if (!node) {
-                continue;
-            }
-
-            worklist.push(sentinel);
-            leavelist.push(element);
-
-            if (this.__state === SKIP || target === SKIP) {
-                continue;
-            }
-
-            nodeType = element.wrap || node.type;
-            candidates = VisitorKeys[nodeType];
-
-            current = candidates.length;
-            while ((current -= 1) >= 0) {
-                key = candidates[current];
-                candidate = node[key];
-                if (!candidate) {
-                    continue;
-                }
-
-                if (!isArray(candidate)) {
-                    worklist.push(new Element(candidate, key, null, new Reference(node, key)));
-                    continue;
-                }
-
-                current2 = candidate.length;
-                while ((current2 -= 1) >= 0) {
-                    if (!candidate[current2]) {
-                        continue;
-                    }
-                    if (nodeType === Syntax.ObjectExpression && 'properties' === candidates[current]) {
-                        element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));
-                    } else {
-                        element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));
-                    }
-                    worklist.push(element);
-                }
-            }
-        }
-
-        return outer.root;
-    };
-
-    function traverse(root, visitor) {
-        var controller = new Controller();
-        return controller.traverse(root, visitor);
-    }
-
-    function replace(root, visitor) {
-        var controller = new Controller();
-        return controller.replace(root, visitor);
-    }
-
-    function extendCommentRange(comment, tokens) {
-        var target;
-
-        target = upperBound(tokens, function search(token) {
-            return token.range[0] > comment.range[0];
-        });
-
-        comment.extendedRange = [comment.range[0], comment.range[1]];
-
-        if (target !== tokens.length) {
-            comment.extendedRange[1] = tokens[target].range[0];
-        }
-
-        target -= 1;
-        if (target >= 0) {
-            comment.extendedRange[0] = tokens[target].range[1];
-        }
-
-        return comment;
-    }
-
-    function attachComments(tree, providedComments, tokens) {
-        // At first, we should calculate extended comment ranges.
-        var comments = [], comment, len, i, cursor;
-
-        if (!tree.range) {
-            throw new Error('attachComments needs range information');
-        }
-
-        // tokens array is empty, we attach comments to tree as 'leadingComments'
-        if (!tokens.length) {
-            if (providedComments.length) {
-                for (i = 0, len = providedComments.length; i < len; i += 1) {
-                    comment = deepCopy(providedComments[i]);
-                    comment.extendedRange = [0, tree.range[0]];
-                    comments.push(comment);
-                }
-                tree.leadingComments = comments;
-            }
-            return tree;
-        }
-
-        for (i = 0, len = providedComments.length; i < len; i += 1) {
-            comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));
-        }
-
-        // This is based on John Freeman's implementation.
-        cursor = 0;
-        traverse(tree, {
-            enter: function (node) {
-                var comment;
-
-                while (cursor < comments.length) {
-                    comment = comments[cursor];
-                    if (comment.extendedRange[1] > node.range[0]) {
-                        break;
-                    }
-
-                    if (comment.extendedRange[1] === node.range[0]) {
-                        if (!node.leadingComments) {
-                            node.leadingComments = [];
-                        }
-                        node.leadingComments.push(comment);
-                        comments.splice(cursor, 1);
-                    } else {
-                        cursor += 1;
-                    }
-                }
-
-                // already out of owned node
-                if (cursor === comments.length) {
-                    return VisitorOption.Break;
-                }
-
-                if (comments[cursor].extendedRange[0] > node.range[1]) {
-                    return VisitorOption.Skip;
-                }
-            }
-        });
-
-        cursor = 0;
-        traverse(tree, {
-            leave: function (node) {
-                var comment;
-
-                while (cursor < comments.length) {
-                    comment = comments[cursor];
-                    if (node.range[1] < comment.extendedRange[0]) {
-                        break;
-                    }
-
-                    if (node.range[1] === comment.extendedRange[0]) {
-                        if (!node.trailingComments) {
-                            node.trailingComments = [];
-                        }
-                        node.trailingComments.push(comment);
-                        comments.splice(cursor, 1);
-                    } else {
-                        cursor += 1;
-                    }
-                }
-
-                // already out of owned node
-                if (cursor === comments.length) {
-                    return VisitorOption.Break;
-                }
-
-                if (comments[cursor].extendedRange[0] > node.range[1]) {
-                    return VisitorOption.Skip;
-                }
-            }
-        });
-
-        return tree;
-    }
-
-    exports.version = '1.5.1-dev';
-    exports.Syntax = Syntax;
-    exports.traverse = traverse;
-    exports.replace = replace;
-    exports.attachComments = attachComments;
-    exports.VisitorKeys = VisitorKeys;
-    exports.VisitorOption = VisitorOption;
-    exports.Controller = Controller;
-}));
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 92
ParticleFilter/node_modules/ast-transform/node_modules/estraverse/package.json

@@ -1,92 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "estraverse",
-        "raw": "estraverse@~1.5.0",
-        "rawSpec": "~1.5.0",
-        "scope": null,
-        "spec": ">=1.5.0 <1.6.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen"
-    ]
-  ],
-  "_from": "estraverse@>=1.5.0 <1.6.0",
-  "_id": "estraverse@1.5.1",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/ast-transform/estraverse",
-  "_npmUser": {
-    "email": "utatane.tea@gmail.com",
-    "name": "constellation"
-  },
-  "_npmVersion": "1.4.3",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "estraverse",
-    "raw": "estraverse@~1.5.0",
-    "rawSpec": "~1.5.0",
-    "scope": null,
-    "spec": ">=1.5.0 <1.6.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform/escodegen"
-  ],
-  "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz",
-  "_shasum": "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71",
-  "_shrinkwrap": null,
-  "_spec": "estraverse@~1.5.0",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen",
-  "bugs": {
-    "url": "https://github.com/Constellation/estraverse/issues"
-  },
-  "dependencies": {},
-  "description": "ECMAScript JS AST traversal functions",
-  "devDependencies": {
-    "chai": "~1.7.2",
-    "coffee-script": "~1.6.3",
-    "jshint": "2.1.5",
-    "mocha": "~1.12.0",
-    "xyz": "^0.4.0"
-  },
-  "directories": {},
-  "dist": {
-    "shasum": "867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71",
-    "tarball": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz"
-  },
-  "engines": {
-    "node": ">=0.4.0"
-  },
-  "homepage": "https://github.com/Constellation/estraverse",
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://github.com/Constellation/estraverse/raw/master/LICENSE.BSD"
-    }
-  ],
-  "main": "estraverse.js",
-  "maintainers": [
-    {
-      "email": "utatane.tea@gmail.com",
-      "name": "constellation"
-    }
-  ],
-  "name": "estraverse",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/Constellation/estraverse.git"
-  },
-  "scripts": {
-    "lint": "jshint estraverse.js",
-    "release-major": "xyz --increment major",
-    "release-minor": "xyz --increment minor",
-    "release-patch": "xyz --increment patch",
-    "test": "npm run-script lint && npm run-script unit-test",
-    "unit-test": "mocha --compilers coffee:coffee-script"
-  },
-  "version": "1.5.1"
-}

+ 0 - 16
ParticleFilter/node_modules/ast-transform/node_modules/esutils/.jshintrc

@@ -1,16 +0,0 @@
-{
-  "curly": true,
-  "eqeqeq": true,
-  "immed": true,
-  "eqnull": true,
-  "latedef": true,
-  "noarg": true,
-  "noempty": true,
-  "quotmark": "single",
-  "undef": true,
-  "unused": true,
-  "strict": true,
-  "trailing": true,
-
-  "node": true
-}

+ 0 - 8
ParticleFilter/node_modules/ast-transform/node_modules/esutils/.travis.yml

@@ -1,8 +0,0 @@
-language: node_js
-node_js:
-    - "0.10"
-    - "0.11"
-
-matrix:
-    allow_failures:
-        - node_js: "0.11"

+ 0 - 80
ParticleFilter/node_modules/ast-transform/node_modules/esutils/README.md

@@ -1,80 +0,0 @@
-esutils ([esutils](http://github.com/Constellation/esutils)) is
-utility box for ECMAScript language tools.
-
-### Functions
-
-#### code.isDecimalDigit(code)
-
-Return true if provided code is decimal digit.
-
-#### code.isHexDigit(code)
-
-Return true if provided code is hexadecimal digit.
-
-#### code.isOctalDigit(code)
-
-Return true if provided code is octal digit.
-
-#### code.isWhiteSpace(code)
-
-Return true if provided code is white space. White space characters are formally defined in ECMA262.
-
-#### code.isLineTerminator(code)
-
-Return true if provided code is line terminator. Line terminator characters are formally defined in ECMA262.
-
-#### code.isIdentifierStart(code)
-
-Return true if provided code can be the first character of ECMA262 Identifier. They are formally defined in ECMA262.
-
-#### code.isIdentifierPart(code)
-
-Return true if provided code can be the trailing character of ECMA262 Identifier. They are formally defined in ECMA262.
-
-### keyword
-
-#### keyword.isKeywordES5(id, strict)
-
-Return true if provided identifier string is one of Keywords in ECMA262 5.1. They are formally defined in ECMA262.
-If strict flag is true, this function additionally checks whether id is keyword under strict mode.
-
-#### keyword.isKeywordES6(id, strict)
-
-Return true if provided identifier string is one of Keywords in ECMA262 6. They are formally defined in ECMA262.
-If strict flag is true, this function additionally checks whether id is keyword under strict mode.
-
-#### keyword.isRestrictedWord(id)
-
-Return true if provided identifier string is one of restricted words under strict mode: "eval" or "arguments".
-They are formally defined in ECMA262.
-
-#### keyword.isIdentifierName(id)
-
-Return true if provided identifier string can be IdentifierName.
-They are formally defined in ECMA262.
-
-### License
-
-Copyright (C) 2013 [Yusuke Suzuki](http://github.com/Constellation)
- (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

File diff suppressed because it is too large
+ 0 - 31
ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/code.js


+ 0 - 117
ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/keyword.js

@@ -1,117 +0,0 @@
-/*
-  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-(function () {
-    'use strict';
-
-    var code = require('./code');
-
-    function isStrictModeReservedWordES6(id) {
-        switch (id) {
-        case 'implements':
-        case 'interface':
-        case 'package':
-        case 'private':
-        case 'protected':
-        case 'public':
-        case 'static':
-        case 'let':
-            return true;
-        default:
-            return false;
-        }
-    }
-
-    function isKeywordES5(id, strict) {
-        // yield should not be treated as keyword under non-strict mode.
-        if (!strict && id === 'yield') {
-            return false;
-        }
-        return isKeywordES6(id, strict);
-    }
-
-    function isKeywordES6(id, strict) {
-        if (strict && isStrictModeReservedWordES6(id)) {
-            return true;
-        }
-
-        switch (id.length) {
-        case 2:
-            return (id === 'if') || (id === 'in') || (id === 'do');
-        case 3:
-            return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');
-        case 4:
-            return (id === 'this') || (id === 'else') || (id === 'case') ||
-                (id === 'void') || (id === 'with') || (id === 'enum');
-        case 5:
-            return (id === 'while') || (id === 'break') || (id === 'catch') ||
-                (id === 'throw') || (id === 'const') || (id === 'yield') ||
-                (id === 'class') || (id === 'super');
-        case 6:
-            return (id === 'return') || (id === 'typeof') || (id === 'delete') ||
-                (id === 'switch') || (id === 'export') || (id === 'import');
-        case 7:
-            return (id === 'default') || (id === 'finally') || (id === 'extends');
-        case 8:
-            return (id === 'function') || (id === 'continue') || (id === 'debugger');
-        case 10:
-            return (id === 'instanceof');
-        default:
-            return false;
-        }
-    }
-
-    function isRestrictedWord(id) {
-        return id === 'eval' || id === 'arguments';
-    }
-
-    function isIdentifierName(id) {
-        var i, iz, ch;
-
-        if (id.length === 0) {
-            return false;
-        }
-
-        ch = id.charCodeAt(0);
-        if (!code.isIdentifierStart(ch) || ch === 92) {  // \ (backslash)
-            return false;
-        }
-
-        for (i = 1, iz = id.length; i < iz; ++i) {
-            ch = id.charCodeAt(i);
-            if (!code.isIdentifierPart(ch) || ch === 92) {  // \ (backslash)
-                return false;
-            }
-        }
-        return true;
-    }
-
-    module.exports = {
-        isKeywordES5: isKeywordES5,
-        isKeywordES6: isKeywordES6,
-        isRestrictedWord: isRestrictedWord,
-        isIdentifierName: isIdentifierName
-    };
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 32
ParticleFilter/node_modules/ast-transform/node_modules/esutils/lib/utils.js

@@ -1,32 +0,0 @@
-/*
-  Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-(function () {
-    'use strict';
-
-    exports.code = require('./code');
-    exports.keyword = require('./keyword');
-}());
-/* vim: set sw=4 ts=4 et tw=80 : */

+ 0 - 90
ParticleFilter/node_modules/ast-transform/node_modules/esutils/package.json

@@ -1,90 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "esutils",
-        "raw": "esutils@~1.0.0",
-        "rawSpec": "~1.0.0",
-        "scope": null,
-        "spec": ">=1.0.0 <1.1.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen"
-    ]
-  ],
-  "_from": "esutils@>=1.0.0 <1.1.0",
-  "_id": "esutils@1.0.0",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/ast-transform/esutils",
-  "_npmUser": {
-    "email": "utatane.tea@gmail.com",
-    "name": "constellation"
-  },
-  "_npmVersion": "1.3.11",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "esutils",
-    "raw": "esutils@~1.0.0",
-    "rawSpec": "~1.0.0",
-    "scope": null,
-    "spec": ">=1.0.0 <1.1.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform/escodegen"
-  ],
-  "_resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz",
-  "_shasum": "8151d358e20c8acc7fb745e7472c0025fe496570",
-  "_shrinkwrap": null,
-  "_spec": "esutils@~1.0.0",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen",
-  "bugs": {
-    "url": "https://github.com/Constellation/esutils/issues"
-  },
-  "dependencies": {},
-  "description": "utility box for ECMAScript language tools",
-  "devDependencies": {
-    "chai": "~1.7.2",
-    "coffee-script": "~1.6.3",
-    "jshint": "2.1.5",
-    "mocha": "~1.12.0"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "dist": {
-    "shasum": "8151d358e20c8acc7fb745e7472c0025fe496570",
-    "tarball": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "homepage": "https://github.com/Constellation/esutils",
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://github.com/Constellation/esutils/raw/master/LICENSE.BSD"
-    }
-  ],
-  "main": "lib/utils.js",
-  "maintainers": [
-    {
-      "email": "utatane.tea@gmail.com",
-      "name": "constellation"
-    }
-  ],
-  "name": "esutils",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/Constellation/esutils.git"
-  },
-  "scripts": {
-    "lint": "jshint lib/*.js",
-    "test": "npm run-script lint && npm run-script unit-test",
-    "unit-test": "mocha --compilers coffee:coffee-script -R spec"
-  },
-  "version": "1.0.0"
-}

+ 0 - 167
ParticleFilter/node_modules/ast-transform/node_modules/esutils/test/code.coffee

@@ -1,167 +0,0 @@
-# Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-#   * Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#   * Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-'use strict'
-
-expect = require('chai').expect
-esutils = require '../'
-
-describe 'code', ->
-    describe 'isDecimalDigit', ->
-        it 'returns true if provided code is decimal digit', ->
-            for ch in [0..9]
-                expect(esutils.code.isDecimalDigit((ch + '').charCodeAt(0))).to.be.true
-
-        it 'returns false if provided code is not decimal digit', ->
-            for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)]
-                expect(esutils.code.isDecimalDigit(code)).to.be.false
-
-            for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)]
-                expect(esutils.code.isDecimalDigit(code)).to.be.false
-
-    describe 'isHexDigit', ->
-        it 'returns true if provided code is hexadecimal digit', ->
-            for ch in [0..9]
-                expect(esutils.code.isHexDigit((ch + '').charCodeAt(0))).to.be.true
-
-            for code in ['a'.charCodeAt(0)..'f'.charCodeAt(0)]
-                expect(esutils.code.isHexDigit(code)).to.be.true
-
-            for code in ['A'.charCodeAt(0)..'F'.charCodeAt(0)]
-                expect(esutils.code.isHexDigit(code)).to.be.true
-
-        it 'returns false if provided code is not hexadecimal digit', ->
-            for code in ['g'.charCodeAt(0)..'z'.charCodeAt(0)]
-                expect(esutils.code.isHexDigit(code)).to.be.false
-
-            for code in ['G'.charCodeAt(0)..'Z'.charCodeAt(0)]
-                expect(esutils.code.isHexDigit(code)).to.be.false
-
-    describe 'isOctalDigit', ->
-        it 'returns true if provided code is octal digit', ->
-            for ch in [0..7]
-                expect(esutils.code.isOctalDigit((ch + '').charCodeAt(0))).to.be.true
-
-        it 'returns false if provided code is not octal digit', ->
-            for ch in [8..9]
-                expect(esutils.code.isOctalDigit((ch + '').charCodeAt(0))).to.be.false
-
-            for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)]
-                expect(esutils.code.isOctalDigit(code)).to.be.false
-
-            for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)]
-                expect(esutils.code.isOctalDigit(code)).to.be.false
-
-    describe 'isWhiteSpace', ->
-        it 'returns true if provided code is white space', ->
-            codes = [
-                0x0009  # TAB
-                0x000B  # VT
-                0x000C  # FF
-                0x0020  # SP
-                0x00A0  # NBSP
-                0xFEFF  # BOM
-
-                # Zs
-                0x1680
-                0x180E
-                0x2000
-                0x2001
-                0x2002
-                0x2003
-                0x2004
-                0x2005
-                0x2006
-                0x2007
-                0x2008
-                0x2009
-                0x200A
-                0x202F
-                0x205F
-                0x3000
-            ]
-            for code in codes
-                expect(esutils.code.isWhiteSpace(code)).to.be.true
-
-        it 'returns false if provided code is not white space', ->
-            for ch in [0..9]
-                expect(esutils.code.isWhiteSpace((ch + '').charCodeAt(0))).to.be.false
-
-            for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)]
-                expect(esutils.code.isWhiteSpace(code)).to.be.false
-
-            for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)]
-                expect(esutils.code.isWhiteSpace(code)).to.be.false
-
-    describe 'isLineTerminator', ->
-        it 'returns true if provided code is line terminator', ->
-            codes = [
-                0x000A
-                0x000D
-                0x2028
-                0x2029
-            ]
-            for code in codes
-                expect(esutils.code.isLineTerminator(code)).to.be.true
-
-        it 'returns false if provided code is not line terminator', ->
-            for ch in [0..9]
-                expect(esutils.code.isLineTerminator((ch + '').charCodeAt(0))).to.be.false
-
-            for code in ['a'.charCodeAt(0)..'z'.charCodeAt(0)]
-                expect(esutils.code.isLineTerminator(code)).to.be.false
-
-            for code in ['A'.charCodeAt(0)..'Z'.charCodeAt(0)]
-                expect(esutils.code.isLineTerminator(code)).to.be.false
-
-    describe 'isIdentifierStart', ->
-        it 'returns true if provided code can be a start of Identifier', ->
-            characters = [
-                'a'
-                '$'
-                '_'
-                'ゆ'
-            ]
-            for code in characters.map((ch) -> ch.charCodeAt(0))
-                expect(esutils.code.isIdentifierStart(code)).to.be.true
-
-        it 'returns false if provided code cannot be a start of Identifier', ->
-            for ch in [0..9]
-                expect(esutils.code.isIdentifierStart((ch + '').charCodeAt(0))).to.be.false
-
-    describe 'isIdentifierPart', ->
-        it 'returns true if provided code can be a part of Identifier', ->
-            characters = [
-                'a'
-                '_'
-                '$'
-                'ゆ'
-            ]
-            for code in characters.map((ch) -> ch.charCodeAt(0))
-                expect(esutils.code.isIdentifierPart(code)).to.be.true
-
-            for ch in [0..9]
-                expect(esutils.code.isIdentifierPart((ch + '').charCodeAt(0))).to.be.true
-
-        it 'returns false if provided code cannot be a part of Identifier', ->
-            expect(esutils.code.isIdentifierPart('+'.charCodeAt(0))).to.be.false
-            expect(esutils.code.isIdentifierPart('-'.charCodeAt(0))).to.be.false

+ 0 - 204
ParticleFilter/node_modules/ast-transform/node_modules/esutils/test/keyword.coffee

@@ -1,204 +0,0 @@
-# Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-#   * Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#   * Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-'use strict'
-
-expect = require('chai').expect
-esutils = require '../'
-
-KW = [
-    'if'
-    'in'
-    'do'
-    'var'
-    'for'
-    'new'
-    'try'
-    'this'
-    'else'
-    'case'
-    'void'
-    'with'
-    'enum'
-    'while'
-    'break'
-    'catch'
-    'throw'
-    'const'
-    'class'
-    'super'
-    'return'
-    'typeof'
-    'delete'
-    'switch'
-    'export'
-    'import'
-    'default'
-    'finally'
-    'extends'
-    'function'
-    'continue'
-    'debugger'
-    'instanceof'
-]
-
-SRW = [
-    'implements'
-    'interface'
-    'package'
-    'private'
-    'protected'
-    'public'
-    'static'
-    'let'
-]
-
-describe 'keyword', ->
-    describe 'isKeywordES6', ->
-        it 'returns true if provided string is keyword under non-strict mode', ->
-            for word in KW
-                expect(esutils.keyword.isKeywordES6(word, no)).to.be.true
-
-            expect(esutils.keyword.isKeywordES6('yield', no)).to.be.true
-
-        it 'returns false if provided string is not keyword under non-strict mode', ->
-            words = [
-                'hello'
-                '20'
-                '$'
-                'ゆゆ式'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isKeywordES6(word, no)).to.be.false
-
-            for word in SRW
-                expect(esutils.keyword.isKeywordES6(word, no)).to.be.false
-
-        it 'returns true if provided string is keyword under strict mode', ->
-            for word in KW
-                expect(esutils.keyword.isKeywordES6(word, yes)).to.be.true
-
-            expect(esutils.keyword.isKeywordES6('yield', yes)).to.be.true
-
-            for word in SRW
-                expect(esutils.keyword.isKeywordES6(word, yes)).to.be.true
-
-
-        it 'returns false if provided string is not keyword under strict mode', ->
-            words = [
-                'hello'
-                '20'
-                '$'
-                'ゆゆ式'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isKeywordES6(word, yes)).to.be.false
-
-    describe 'isKeywordES5', ->
-        it 'returns true if provided string is keyword under non-strict mode', ->
-            for word in KW
-                expect(esutils.keyword.isKeywordES5(word, no)).to.be.true
-
-        it 'returns false if provided string is not keyword under non-strict mode', ->
-            words = [
-                'hello'
-                '20'
-                '$'
-                'ゆゆ式'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isKeywordES5(word, no)).to.be.false
-
-            for word in SRW
-                expect(esutils.keyword.isKeywordES5(word, no)).to.be.false
-
-            expect(esutils.keyword.isKeywordES5('yield', no)).to.be.false
-
-        it 'returns true if provided string is keyword under strict mode', ->
-            for word in KW
-                expect(esutils.keyword.isKeywordES5(word, yes)).to.be.true
-
-            expect(esutils.keyword.isKeywordES5('yield', yes)).to.be.true
-
-            for word in SRW
-                expect(esutils.keyword.isKeywordES5(word, yes)).to.be.true
-
-
-        it 'returns false if provided string is not keyword under strict mode', ->
-            words = [
-                'hello'
-                '20'
-                '$'
-                'ゆゆ式'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isKeywordES5(word, yes)).to.be.false
-
-    describe 'isRestrictedWord', ->
-        it 'returns true if provided string is "eval" or "arguments"', ->
-            expect(esutils.keyword.isRestrictedWord('eval')).to.be.true
-            expect(esutils.keyword.isRestrictedWord('arguments')).to.be.true
-
-        it 'returns false if provided string is not "eval" or "arguments"', ->
-            words = [
-                'hello'
-                '20'
-                '$'
-                'ゆゆ式'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isRestrictedWord(word)).to.be.false
-
-
-    describe 'isIdentifierName', ->
-        it 'returns false if provided string is empty', ->
-            expect(esutils.keyword.isIdentifierName('')).to.be.false
-
-        it 'returns true if provided string is IdentifierName', ->
-            words = [
-                'hello'
-                '$'
-                'ゆゆ式'
-                '$20'
-                'hello20'
-                '_'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isIdentifierName(word)).to.be.true
-
-
-        it 'returns false if provided string is not IdentifierName', ->
-            words = [
-                '+hello'
-                '0$'
-                '-ゆゆ式'
-                '#_'
-            ]
-
-            for word in words
-                expect(esutils.keyword.isIdentifierName(word)).to.be.false

+ 0 - 2
ParticleFilter/node_modules/ast-transform/node_modules/source-map/.npmignore

@@ -1,2 +0,0 @@
-dist/*
-node_modules/*

+ 0 - 4
ParticleFilter/node_modules/ast-transform/node_modules/source-map/.travis.yml

@@ -1,4 +0,0 @@
-language: node_js
-node_js:
-  - 0.8
-  - "0.10"

+ 0 - 194
ParticleFilter/node_modules/ast-transform/node_modules/source-map/CHANGELOG.md

@@ -1,194 +0,0 @@
-# Change Log
-
-## 0.1.43
-
-* Performance improvements for `SourceMapGenerator` and `SourceNode`. See issue
-  #148 for some discussion and issues #150, #151, and #152 for implementations.
-
-## 0.1.42
-
-* Fix an issue where `SourceNode`s from different versions of the source-map
-  library couldn't be used in conjunction with each other. See issue #142.
-
-## 0.1.41
-
-* Fix a bug with getting the source content of relative sources with a "./"
-  prefix. See issue #145 and [Bug 1090768](bugzil.la/1090768).
-
-* Add the `SourceMapConsumer.prototype.computeColumnSpans` method to compute the
-  column span of each mapping.
-
-* Add the `SourceMapConsumer.prototype.allGeneratedPositionsFor` method to find
-  all generated positions associated with a given original source and line.
-
-## 0.1.40
-
-* Performance improvements for parsing source maps in SourceMapConsumer.
-
-## 0.1.39
-
-* Fix a bug where setting a source's contents to null before any source content
-  had been set before threw a TypeError. See issue #131.
-
-## 0.1.38
-
-* Fix a bug where finding relative paths from an empty path were creating
-  absolute paths. See issue #129.
-
-## 0.1.37
-
-* Fix a bug where if the source root was an empty string, relative source paths
-  would turn into absolute source paths. Issue #124.
-
-## 0.1.36
-
-* Allow the `names` mapping property to be an empty string. Issue #121.
-
-## 0.1.35
-
-* A third optional parameter was added to `SourceNode.fromStringWithSourceMap`
-  to specify a path that relative sources in the second parameter should be
-  relative to. Issue #105.
-
-* If no file property is given to a `SourceMapGenerator`, then the resulting
-  source map will no longer have a `null` file property. The property will
-  simply not exist. Issue #104.
-
-* Fixed a bug where consecutive newlines were ignored in `SourceNode`s.
-  Issue #116.
-
-## 0.1.34
-
-* Make `SourceNode` work with windows style ("\r\n") newlines. Issue #103.
-
-* Fix bug involving source contents and the
-  `SourceMapGenerator.prototype.applySourceMap`. Issue #100.
-
-## 0.1.33
-
-* Fix some edge cases surrounding path joining and URL resolution.
-
-* Add a third parameter for relative path to
-  `SourceMapGenerator.prototype.applySourceMap`.
-
-* Fix issues with mappings and EOLs.
-
-## 0.1.32
-
-* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns
-  (issue 92).
-
-* Fixed test runner to actually report number of failed tests as its process
-  exit code.
-
-* Fixed a typo when reporting bad mappings (issue 87).
-
-## 0.1.31
-
-* Delay parsing the mappings in SourceMapConsumer until queried for a source
-  location.
-
-* Support Sass source maps (which at the time of writing deviate from the spec
-  in small ways) in SourceMapConsumer.
-
-## 0.1.30
-
-* Do not join source root with a source, when the source is a data URI.
-
-* Extend the test runner to allow running single specific test files at a time.
-
-* Performance improvements in `SourceNode.prototype.walk` and
-  `SourceMapConsumer.prototype.eachMapping`.
-
-* Source map browser builds will now work inside Workers.
-
-* Better error messages when attempting to add an invalid mapping to a
-  `SourceMapGenerator`.
-
-## 0.1.29
-
-* Allow duplicate entries in the `names` and `sources` arrays of source maps
-  (usually from TypeScript) we are parsing. Fixes github issue 72.
-
-## 0.1.28
-
-* Skip duplicate mappings when creating source maps from SourceNode; github
-  issue 75.
-
-## 0.1.27
-
-* Don't throw an error when the `file` property is missing in SourceMapConsumer,
-  we don't use it anyway.
-
-## 0.1.26
-
-* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70.
-
-## 0.1.25
-
-* Make compatible with browserify
-
-## 0.1.24
-
-* Fix issue with absolute paths and `file://` URIs. See
-  https://bugzilla.mozilla.org/show_bug.cgi?id=885597
-
-## 0.1.23
-
-* Fix issue with absolute paths and sourcesContent, github issue 64.
-
-## 0.1.22
-
-* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21.
-
-## 0.1.21
-
-* Fixed handling of sources that start with a slash so that they are relative to
-  the source root's host.
-
-## 0.1.20
-
-* Fixed github issue #43: absolute URLs aren't joined with the source root
-  anymore.
-
-## 0.1.19
-
-* Using Travis CI to run tests.
-
-## 0.1.18
-
-* Fixed a bug in the handling of sourceRoot.
-
-## 0.1.17
-
-* Added SourceNode.fromStringWithSourceMap.
-
-## 0.1.16
-
-* Added missing documentation.
-
-* Fixed the generating of empty mappings in SourceNode.
-
-## 0.1.15
-
-* Added SourceMapGenerator.applySourceMap.
-
-## 0.1.14
-
-* The sourceRoot is now handled consistently.
-
-## 0.1.13
-
-* Added SourceMapGenerator.fromSourceMap.
-
-## 0.1.12
-
-* SourceNode now generates empty mappings too.
-
-## 0.1.11
-
-* Added name support to SourceNode.
-
-## 0.1.10
-
-* Added sourcesContent support to the customer and generator.

+ 0 - 28
ParticleFilter/node_modules/ast-transform/node_modules/source-map/LICENSE

@@ -1,28 +0,0 @@
-
-Copyright (c) 2009-2011, Mozilla Foundation and contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-* Neither the names of the Mozilla Foundation nor the names of project
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 166
ParticleFilter/node_modules/ast-transform/node_modules/source-map/Makefile.dryice.js

@@ -1,166 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-var path = require('path');
-var fs = require('fs');
-var copy = require('dryice').copy;
-
-function removeAmdefine(src) {
-  src = String(src).replace(
-    /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g,
-    '');
-  src = src.replace(
-    /\b(define\(.*)('amdefine',?)/gm,
-    '$1');
-  return src;
-}
-removeAmdefine.onRead = true;
-
-function makeNonRelative(src) {
-  return src
-    .replace(/require\('.\//g, 'require(\'source-map/')
-    .replace(/\.\.\/\.\.\/lib\//g, '');
-}
-makeNonRelative.onRead = true;
-
-function buildBrowser() {
-  console.log('\nCreating dist/source-map.js');
-
-  var project = copy.createCommonJsProject({
-    roots: [ path.join(__dirname, 'lib') ]
-  });
-
-  copy({
-    source: [
-      'build/mini-require.js',
-      {
-        project: project,
-        require: [ 'source-map/source-map-generator',
-                   'source-map/source-map-consumer',
-                   'source-map/source-node']
-      },
-      'build/suffix-browser.js'
-    ],
-    filter: [
-      copy.filter.moduleDefines,
-      removeAmdefine
-    ],
-    dest: 'dist/source-map.js'
-  });
-}
-
-function buildBrowserMin() {
-  console.log('\nCreating dist/source-map.min.js');
-
-  copy({
-    source: 'dist/source-map.js',
-    filter: copy.filter.uglifyjs,
-    dest: 'dist/source-map.min.js'
-  });
-}
-
-function buildFirefox() {
-  console.log('\nCreating dist/SourceMap.jsm');
-
-  var project = copy.createCommonJsProject({
-    roots: [ path.join(__dirname, 'lib') ]
-  });
-
-  copy({
-    source: [
-      'build/prefix-source-map.jsm',
-      {
-        project: project,
-        require: [ 'source-map/source-map-consumer',
-                   'source-map/source-map-generator',
-                   'source-map/source-node' ]
-      },
-      'build/suffix-source-map.jsm'
-    ],
-    filter: [
-      copy.filter.moduleDefines,
-      removeAmdefine,
-      makeNonRelative
-    ],
-    dest: 'dist/SourceMap.jsm'
-  });
-
-  // Create dist/test/Utils.jsm
-  console.log('\nCreating dist/test/Utils.jsm');
-
-  project = copy.createCommonJsProject({
-    roots: [ __dirname, path.join(__dirname, 'lib') ]
-  });
-
-  copy({
-    source: [
-      'build/prefix-utils.jsm',
-      'build/assert-shim.js',
-      {
-        project: project,
-        require: [ 'test/source-map/util' ]
-      },
-      'build/suffix-utils.jsm'
-    ],
-    filter: [
-      copy.filter.moduleDefines,
-      removeAmdefine,
-      makeNonRelative
-    ],
-    dest: 'dist/test/Utils.jsm'
-  });
-
-  function isTestFile(f) {
-    return /^test\-.*?\.js/.test(f);
-  }
-
-  var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile);
-
-  testFiles.forEach(function (testFile) {
-    console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_')));
-
-    copy({
-      source: [
-        'build/test-prefix.js',
-        path.join('test', 'source-map', testFile),
-        'build/test-suffix.js'
-      ],
-      filter: [
-        removeAmdefine,
-        makeNonRelative,
-        function (input, source) {
-          return input.replace('define(',
-                               'define("'
-                               + path.join('test', 'source-map', testFile.replace(/\.js$/, ''))
-                               + '", ["require", "exports", "module"], ');
-        },
-        function (input, source) {
-          return input.replace('{THIS_MODULE}', function () {
-            return "test/source-map/" + testFile.replace(/\.js$/, '');
-          });
-        }
-      ],
-      dest: path.join('dist', 'test', testFile.replace(/\-/g, '_'))
-    });
-  });
-}
-
-function ensureDir(name) {
-  var dirExists = false;
-  try {
-    dirExists = fs.statSync(name).isDirectory();
-  } catch (err) {}
-
-  if (!dirExists) {
-    fs.mkdirSync(name, 0777);
-  }
-}
-
-ensureDir("dist");
-ensureDir("dist/test");
-buildFirefox();
-buildBrowser();
-buildBrowserMin();

+ 0 - 475
ParticleFilter/node_modules/ast-transform/node_modules/source-map/README.md

@@ -1,475 +0,0 @@
-# Source Map
-
-This is a library to generate and consume the source map format
-[described here][format].
-
-This library is written in the Asynchronous Module Definition format, and works
-in the following environments:
-
-* Modern Browsers supporting ECMAScript 5 (either after the build, or with an
-  AMD loader such as RequireJS)
-
-* Inside Firefox (as a JSM file, after the build)
-
-* With NodeJS versions 0.8.X and higher
-
-## Node
-
-    $ npm install source-map
-
-## Building from Source (for everywhere else)
-
-Install Node and then run
-
-    $ git clone https://fitzgen@github.com/mozilla/source-map.git
-    $ cd source-map
-    $ npm link .
-
-Next, run
-
-    $ node Makefile.dryice.js
-
-This should spew a bunch of stuff to stdout, and create the following files:
-
-* `dist/source-map.js` - The unminified browser version.
-
-* `dist/source-map.min.js` - The minified browser version.
-
-* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source.
-
-## Examples
-
-### Consuming a source map
-
-    var rawSourceMap = {
-      version: 3,
-      file: 'min.js',
-      names: ['bar', 'baz', 'n'],
-      sources: ['one.js', 'two.js'],
-      sourceRoot: 'http://example.com/www/js/',
-      mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
-    };
-
-    var smc = new SourceMapConsumer(rawSourceMap);
-
-    console.log(smc.sources);
-    // [ 'http://example.com/www/js/one.js',
-    //   'http://example.com/www/js/two.js' ]
-
-    console.log(smc.originalPositionFor({
-      line: 2,
-      column: 28
-    }));
-    // { source: 'http://example.com/www/js/two.js',
-    //   line: 2,
-    //   column: 10,
-    //   name: 'n' }
-
-    console.log(smc.generatedPositionFor({
-      source: 'http://example.com/www/js/two.js',
-      line: 2,
-      column: 10
-    }));
-    // { line: 2, column: 28 }
-
-    smc.eachMapping(function (m) {
-      // ...
-    });
-
-### Generating a source map
-
-In depth guide:
-[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)
-
-#### With SourceNode (high level API)
-
-    function compile(ast) {
-      switch (ast.type) {
-      case 'BinaryExpression':
-        return new SourceNode(
-          ast.location.line,
-          ast.location.column,
-          ast.location.source,
-          [compile(ast.left), " + ", compile(ast.right)]
-        );
-      case 'Literal':
-        return new SourceNode(
-          ast.location.line,
-          ast.location.column,
-          ast.location.source,
-          String(ast.value)
-        );
-      // ...
-      default:
-        throw new Error("Bad AST");
-      }
-    }
-
-    var ast = parse("40 + 2", "add.js");
-    console.log(compile(ast).toStringWithSourceMap({
-      file: 'add.js'
-    }));
-    // { code: '40 + 2',
-    //   map: [object SourceMapGenerator] }
-
-#### With SourceMapGenerator (low level API)
-
-    var map = new SourceMapGenerator({
-      file: "source-mapped.js"
-    });
-
-    map.addMapping({
-      generated: {
-        line: 10,
-        column: 35
-      },
-      source: "foo.js",
-      original: {
-        line: 33,
-        column: 2
-      },
-      name: "christopher"
-    });
-
-    console.log(map.toString());
-    // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}'
-
-## API
-
-Get a reference to the module:
-
-    // NodeJS
-    var sourceMap = require('source-map');
-
-    // Browser builds
-    var sourceMap = window.sourceMap;
-
-    // Inside Firefox
-    let sourceMap = {};
-    Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);
-
-### SourceMapConsumer
-
-A SourceMapConsumer instance represents a parsed source map which we can query
-for information about the original file positions by giving it a file position
-in the generated source.
-
-#### new SourceMapConsumer(rawSourceMap)
-
-The only parameter is the raw source map (either as a string which can be
-`JSON.parse`'d, or an object). According to the spec, source maps have the
-following attributes:
-
-* `version`: Which version of the source map spec this map is following.
-
-* `sources`: An array of URLs to the original source files.
-
-* `names`: An array of identifiers which can be referrenced by individual
-  mappings.
-
-* `sourceRoot`: Optional. The URL root from which all sources are relative.
-
-* `sourcesContent`: Optional. An array of contents of the original source files.
-
-* `mappings`: A string of base64 VLQs which contain the actual mappings.
-
-* `file`: Optional. The generated filename this source map is associated with.
-
-#### SourceMapConsumer.prototype.computeColumnSpans()
-
-Compute the last column for each generated mapping. The last column is
-inclusive.
-
-#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)
-
-Returns the original source, line, and column information for the generated
-source's line and column positions provided. The only argument is an object with
-the following properties:
-
-* `line`: The line number in the generated source.
-
-* `column`: The column number in the generated source.
-
-and an object is returned with the following properties:
-
-* `source`: The original source file, or null if this information is not
-  available.
-
-* `line`: The line number in the original source, or null if this information is
-  not available.
-
-* `column`: The column number in the original source, or null or null if this
-  information is not available.
-
-* `name`: The original identifier, or null if this information is not available.
-
-#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)
-
-Returns the generated line and column information for the original source,
-line, and column positions provided. The only argument is an object with
-the following properties:
-
-* `source`: The filename of the original source.
-
-* `line`: The line number in the original source.
-
-* `column`: The column number in the original source.
-
-and an object is returned with the following properties:
-
-* `line`: The line number in the generated source, or null.
-
-* `column`: The column number in the generated source, or null.
-
-#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)
-
-Returns all generated line and column information for the original source
-and line provided. The only argument is an object with the following
-properties:
-
-* `source`: The filename of the original source.
-
-* `line`: The line number in the original source.
-
-and an array of objects is returned, each with the following properties:
-
-* `line`: The line number in the generated source, or null.
-
-* `column`: The column number in the generated source, or null.
-
-#### SourceMapConsumer.prototype.sourceContentFor(source)
-
-Returns the original source content for the source provided. The only
-argument is the URL of the original source file.
-
-#### SourceMapConsumer.prototype.eachMapping(callback, context, order)
-
-Iterate over each mapping between an original source/line/column and a
-generated line/column in this source map.
-
-* `callback`: The function that is called with each mapping. Mappings have the
-  form `{ source, generatedLine, generatedColumn, originalLine, originalColumn,
-  name }`
-
-* `context`: Optional. If specified, this object will be the value of `this`
-  every time that `callback` is called.
-
-* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or
-  `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over
-  the mappings sorted by the generated file's line/column order or the
-  original's source/line/column order, respectively. Defaults to
-  `SourceMapConsumer.GENERATED_ORDER`.
-
-### SourceMapGenerator
-
-An instance of the SourceMapGenerator represents a source map which is being
-built incrementally.
-
-#### new SourceMapGenerator([startOfSourceMap])
-
-You may pass an object with the following properties:
-
-* `file`: The filename of the generated source that this source map is
-  associated with.
-
-* `sourceRoot`: A root for all relative URLs in this source map.
-
-* `skipValidation`: Optional. When `true`, disables validation of mappings as
-  they are added. This can improve performance but should be used with
-  discretion, as a last resort. Even then, one should avoid using this flag when
-  running tests, if possible.
-
-#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)
-
-Creates a new SourceMapGenerator based on a SourceMapConsumer
-
-* `sourceMapConsumer` The SourceMap.
-
-#### SourceMapGenerator.prototype.addMapping(mapping)
-
-Add a single mapping from original source line and column to the generated
-source's line and column for this source map being created. The mapping object
-should have the following properties:
-
-* `generated`: An object with the generated line and column positions.
-
-* `original`: An object with the original line and column positions.
-
-* `source`: The original source file (relative to the sourceRoot).
-
-* `name`: An optional original token name for this mapping.
-
-#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)
-
-Set the source content for an original source file.
-
-* `sourceFile` the URL of the original source file.
-
-* `sourceContent` the content of the source file.
-
-#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])
-
-Applies a SourceMap for a source file to the SourceMap.
-Each mapping to the supplied source file is rewritten using the
-supplied SourceMap. Note: The resolution for the resulting mappings
-is the minimium of this map and the supplied map.
-
-* `sourceMapConsumer`: The SourceMap to be applied.
-
-* `sourceFile`: Optional. The filename of the source file.
-  If omitted, sourceMapConsumer.file will be used, if it exists.
-  Otherwise an error will be thrown.
-
-* `sourceMapPath`: Optional. The dirname of the path to the SourceMap
-  to be applied. If relative, it is relative to the SourceMap.
-
-  This parameter is needed when the two SourceMaps aren't in the same
-  directory, and the SourceMap to be applied contains relative source
-  paths. If so, those relative source paths need to be rewritten
-  relative to the SourceMap.
-
-  If omitted, it is assumed that both SourceMaps are in the same directory,
-  thus not needing any rewriting. (Supplying `'.'` has the same effect.)
-
-#### SourceMapGenerator.prototype.toString()
-
-Renders the source map being generated to a string.
-
-### SourceNode
-
-SourceNodes provide a way to abstract over interpolating and/or concatenating
-snippets of generated JavaScript source code, while maintaining the line and
-column information associated between those snippets and the original source
-code. This is useful as the final intermediate representation a compiler might
-use before outputting the generated JS and source map.
-
-#### new SourceNode([line, column, source[, chunk[, name]]])
-
-* `line`: The original line number associated with this source node, or null if
-  it isn't associated with an original line.
-
-* `column`: The original column number associated with this source node, or null
-  if it isn't associated with an original column.
-
-* `source`: The original source's filename; null if no filename is provided.
-
-* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see
-  below.
-
-* `name`: Optional. The original identifier.
-
-#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])
-
-Creates a SourceNode from generated code and a SourceMapConsumer.
-
-* `code`: The generated code
-
-* `sourceMapConsumer` The SourceMap for the generated code
-
-* `relativePath` The optional path that relative sources in `sourceMapConsumer`
-  should be relative to.
-
-#### SourceNode.prototype.add(chunk)
-
-Add a chunk of generated JS to this source node.
-
-* `chunk`: A string snippet of generated JS code, another instance of
-   `SourceNode`, or an array where each member is one of those things.
-
-#### SourceNode.prototype.prepend(chunk)
-
-Prepend a chunk of generated JS to this source node.
-
-* `chunk`: A string snippet of generated JS code, another instance of
-   `SourceNode`, or an array where each member is one of those things.
-
-#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)
-
-Set the source content for a source file. This will be added to the
-`SourceMap` in the `sourcesContent` field.
-
-* `sourceFile`: The filename of the source file
-
-* `sourceContent`: The content of the source file
-
-#### SourceNode.prototype.walk(fn)
-
-Walk over the tree of JS snippets in this node and its children. The walking
-function is called once for each snippet of JS and is passed that snippet and
-the its original associated source's line/column location.
-
-* `fn`: The traversal function.
-
-#### SourceNode.prototype.walkSourceContents(fn)
-
-Walk over the tree of SourceNodes. The walking function is called for each
-source file content and is passed the filename and source content.
-
-* `fn`: The traversal function.
-
-#### SourceNode.prototype.join(sep)
-
-Like `Array.prototype.join` except for SourceNodes. Inserts the separator
-between each of this source node's children.
-
-* `sep`: The separator.
-
-#### SourceNode.prototype.replaceRight(pattern, replacement)
-
-Call `String.prototype.replace` on the very right-most source snippet. Useful
-for trimming whitespace from the end of a source node, etc.
-
-* `pattern`: The pattern to replace.
-
-* `replacement`: The thing to replace the pattern with.
-
-#### SourceNode.prototype.toString()
-
-Return the string representation of this source node. Walks over the tree and
-concatenates all the various snippets together to one string.
-
-#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])
-
-Returns the string representation of this tree of source nodes, plus a
-SourceMapGenerator which contains all the mappings between the generated and
-original sources.
-
-The arguments are the same as those to `new SourceMapGenerator`.
-
-## Tests
-
-[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map)
-
-Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`.
-
-To add new tests, create a new file named `test/test-<your new test name>.js`
-and export your test functions with names that start with "test", for example
-
-    exports["test doing the foo bar"] = function (assert, util) {
-      ...
-    };
-
-The new test will be located automatically when you run the suite.
-
-The `util` argument is the test utility module located at `test/source-map/util`.
-
-The `assert` argument is a cut down version of node's assert module. You have
-access to the following assertion functions:
-
-* `doesNotThrow`
-
-* `equal`
-
-* `ok`
-
-* `strictEqual`
-
-* `throws`
-
-(The reason for the restricted set of test functions is because we need the
-tests to run inside Firefox's test suite as well and so the assert module is
-shimmed in that environment. See `build/assert-shim.js`.)
-
-[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
-[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap
-[Dryice]: https://github.com/mozilla/dryice

+ 0 - 56
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/assert-shim.js

@@ -1,56 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-define('test/source-map/assert', ['exports'], function (exports) {
-
-  let do_throw = function (msg) {
-    throw new Error(msg);
-  };
-
-  exports.init = function (throw_fn) {
-    do_throw = throw_fn;
-  };
-
-  exports.doesNotThrow = function (fn) {
-    try {
-      fn();
-    }
-    catch (e) {
-      do_throw(e.message);
-    }
-  };
-
-  exports.equal = function (actual, expected, msg) {
-    msg = msg || String(actual) + ' != ' + String(expected);
-    if (actual != expected) {
-      do_throw(msg);
-    }
-  };
-
-  exports.ok = function (val, msg) {
-    msg = msg || String(val) + ' is falsey';
-    if (!Boolean(val)) {
-      do_throw(msg);
-    }
-  };
-
-  exports.strictEqual = function (actual, expected, msg) {
-    msg = msg || String(actual) + ' !== ' + String(expected);
-    if (actual !== expected) {
-      do_throw(msg);
-    }
-  };
-
-  exports.throws = function (fn) {
-    try {
-      fn();
-      do_throw('Expected an error to be thrown, but it wasn\'t.');
-    }
-    catch (e) {
-    }
-  };
-
-});

+ 0 - 152
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/mini-require.js

@@ -1,152 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-
-/**
- * Define a module along with a payload.
- * @param {string} moduleName Name for the payload
- * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec
- * @param {function} payload Function with (require, exports, module) params
- */
-function define(moduleName, deps, payload) {
-  if (typeof moduleName != "string") {
-    throw new TypeError('Expected string, got: ' + moduleName);
-  }
-
-  if (arguments.length == 2) {
-    payload = deps;
-  }
-
-  if (moduleName in define.modules) {
-    throw new Error("Module already defined: " + moduleName);
-  }
-  define.modules[moduleName] = payload;
-};
-
-/**
- * The global store of un-instantiated modules
- */
-define.modules = {};
-
-
-/**
- * We invoke require() in the context of a Domain so we can have multiple
- * sets of modules running separate from each other.
- * This contrasts with JSMs which are singletons, Domains allows us to
- * optionally load a CommonJS module twice with separate data each time.
- * Perhaps you want 2 command lines with a different set of commands in each,
- * for example.
- */
-function Domain() {
-  this.modules = {};
-  this._currentModule = null;
-}
-
-(function () {
-
-  /**
-   * Lookup module names and resolve them by calling the definition function if
-   * needed.
-   * There are 2 ways to call this, either with an array of dependencies and a
-   * callback to call when the dependencies are found (which can happen
-   * asynchronously in an in-page context) or with a single string an no callback
-   * where the dependency is resolved synchronously and returned.
-   * The API is designed to be compatible with the CommonJS AMD spec and
-   * RequireJS.
-   * @param {string[]|string} deps A name, or names for the payload
-   * @param {function|undefined} callback Function to call when the dependencies
-   * are resolved
-   * @return {undefined|object} The module required or undefined for
-   * array/callback method
-   */
-  Domain.prototype.require = function(deps, callback) {
-    if (Array.isArray(deps)) {
-      var params = deps.map(function(dep) {
-        return this.lookup(dep);
-      }, this);
-      if (callback) {
-        callback.apply(null, params);
-      }
-      return undefined;
-    }
-    else {
-      return this.lookup(deps);
-    }
-  };
-
-  function normalize(path) {
-    var bits = path.split('/');
-    var i = 1;
-    while (i < bits.length) {
-      if (bits[i] === '..') {
-        bits.splice(i-1, 1);
-      } else if (bits[i] === '.') {
-        bits.splice(i, 1);
-      } else {
-        i++;
-      }
-    }
-    return bits.join('/');
-  }
-
-  function join(a, b) {
-    a = a.trim();
-    b = b.trim();
-    if (/^\//.test(b)) {
-      return b;
-    } else {
-      return a.replace(/\/*$/, '/') + b;
-    }
-  }
-
-  function dirname(path) {
-    var bits = path.split('/');
-    bits.pop();
-    return bits.join('/');
-  }
-
-  /**
-   * Lookup module names and resolve them by calling the definition function if
-   * needed.
-   * @param {string} moduleName A name for the payload to lookup
-   * @return {object} The module specified by aModuleName or null if not found.
-   */
-  Domain.prototype.lookup = function(moduleName) {
-    if (/^\./.test(moduleName)) {
-      moduleName = normalize(join(dirname(this._currentModule), moduleName));
-    }
-
-    if (moduleName in this.modules) {
-      var module = this.modules[moduleName];
-      return module;
-    }
-
-    if (!(moduleName in define.modules)) {
-      throw new Error("Module not defined: " + moduleName);
-    }
-
-    var module = define.modules[moduleName];
-
-    if (typeof module == "function") {
-      var exports = {};
-      var previousModule = this._currentModule;
-      this._currentModule = moduleName;
-      module(this.require.bind(this), exports, { id: moduleName, uri: "" });
-      this._currentModule = previousModule;
-      module = exports;
-    }
-
-    // cache the resulting module object for next time
-    this.modules[moduleName] = module;
-
-    return module;
-  };
-
-}());
-
-define.Domain = Domain;
-define.globalDomain = new Domain();
-var require = define.globalDomain.require.bind(define.globalDomain);

+ 0 - 20
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/prefix-source-map.jsm

@@ -1,20 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-
-/*
- * WARNING!
- *
- * Do not edit this file directly, it is built from the sources at
- * https://github.com/mozilla/source-map/
- */
-
-///////////////////////////////////////////////////////////////////////////////
-
-
-this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ];
-
-Components.utils.import('resource://gre/modules/devtools/Require.jsm');

+ 0 - 18
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/prefix-utils.jsm

@@ -1,18 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-
-/*
- * WARNING!
- *
- * Do not edit this file directly, it is built from the sources at
- * https://github.com/mozilla/source-map/
- */
-
-Components.utils.import('resource://gre/modules/devtools/Require.jsm');
-Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm');
-
-this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ];

+ 0 - 8
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-browser.js

@@ -1,8 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-///////////////////////////////////////////////////////////////////////////////
-
-this.sourceMap = {
-  SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer,
-  SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator,
-  SourceNode: require('source-map/source-node').SourceNode
-};

+ 0 - 6
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-source-map.jsm

@@ -1,6 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-///////////////////////////////////////////////////////////////////////////////
-
-this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer;
-this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator;
-this.SourceNode = require('source-map/source-node').SourceNode;

+ 0 - 21
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/suffix-utils.jsm

@@ -1,21 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-function runSourceMapTests(modName, do_throw) {
-  let mod = require(modName);
-  let assert = require('test/source-map/assert');
-  let util = require('test/source-map/util');
-
-  assert.init(do_throw);
-
-  for (let k in mod) {
-    if (/^test/.test(k)) {
-      mod[k](assert, util);
-    }
-  }
-
-}
-this.runSourceMapTests = runSourceMapTests;

+ 0 - 8
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/test-prefix.js

@@ -1,8 +0,0 @@
-/*
- * WARNING!
- *
- * Do not edit this file directly, it is built from the sources at
- * https://github.com/mozilla/source-map/
- */
-
-Components.utils.import('resource://test/Utils.jsm');

+ 0 - 3
ParticleFilter/node_modules/ast-transform/node_modules/source-map/build/test-suffix.js

@@ -1,3 +0,0 @@
-function run_test() {
-  runSourceMapTests('{THIS_MODULE}', do_throw);
-}

+ 0 - 8
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map.js

@@ -1,8 +0,0 @@
-/*
- * Copyright 2009-2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE.txt or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator;
-exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer;
-exports.SourceNode = require('./source-map/source-node').SourceNode;

+ 0 - 97
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/array-set.js

@@ -1,97 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var util = require('./util');
-
-  /**
-   * A data structure which is a combination of an array and a set. Adding a new
-   * member is O(1), testing for membership is O(1), and finding the index of an
-   * element is O(1). Removing elements from the set is not supported. Only
-   * strings are supported for membership.
-   */
-  function ArraySet() {
-    this._array = [];
-    this._set = {};
-  }
-
-  /**
-   * Static method for creating ArraySet instances from an existing array.
-   */
-  ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
-    var set = new ArraySet();
-    for (var i = 0, len = aArray.length; i < len; i++) {
-      set.add(aArray[i], aAllowDuplicates);
-    }
-    return set;
-  };
-
-  /**
-   * Add the given string to this set.
-   *
-   * @param String aStr
-   */
-  ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
-    var isDuplicate = this.has(aStr);
-    var idx = this._array.length;
-    if (!isDuplicate || aAllowDuplicates) {
-      this._array.push(aStr);
-    }
-    if (!isDuplicate) {
-      this._set[util.toSetString(aStr)] = idx;
-    }
-  };
-
-  /**
-   * Is the given string a member of this set?
-   *
-   * @param String aStr
-   */
-  ArraySet.prototype.has = function ArraySet_has(aStr) {
-    return Object.prototype.hasOwnProperty.call(this._set,
-                                                util.toSetString(aStr));
-  };
-
-  /**
-   * What is the index of the given string in the array?
-   *
-   * @param String aStr
-   */
-  ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
-    if (this.has(aStr)) {
-      return this._set[util.toSetString(aStr)];
-    }
-    throw new Error('"' + aStr + '" is not in the set.');
-  };
-
-  /**
-   * What is the element at the given index?
-   *
-   * @param Number aIdx
-   */
-  ArraySet.prototype.at = function ArraySet_at(aIdx) {
-    if (aIdx >= 0 && aIdx < this._array.length) {
-      return this._array[aIdx];
-    }
-    throw new Error('No element indexed by ' + aIdx);
-  };
-
-  /**
-   * Returns the array representation of this set (which has the proper indices
-   * indicated by indexOf). Note that this is a copy of the internal array used
-   * for storing the members so that no one can mess with internal state.
-   */
-  ArraySet.prototype.toArray = function ArraySet_toArray() {
-    return this._array.slice();
-  };
-
-  exports.ArraySet = ArraySet;
-
-});

+ 0 - 142
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/base64-vlq.js

@@ -1,142 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- *
- * Based on the Base 64 VLQ implementation in Closure Compiler:
- * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
- *
- * Copyright 2011 The Closure Compiler Authors. All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above
- *    copyright notice, this list of conditions and the following
- *    disclaimer in the documentation and/or other materials provided
- *    with the distribution.
- *  * Neither the name of Google Inc. nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var base64 = require('./base64');
-
-  // A single base 64 digit can contain 6 bits of data. For the base 64 variable
-  // length quantities we use in the source map spec, the first bit is the sign,
-  // the next four bits are the actual value, and the 6th bit is the
-  // continuation bit. The continuation bit tells us whether there are more
-  // digits in this value following this digit.
-  //
-  //   Continuation
-  //   |    Sign
-  //   |    |
-  //   V    V
-  //   101011
-
-  var VLQ_BASE_SHIFT = 5;
-
-  // binary: 100000
-  var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
-
-  // binary: 011111
-  var VLQ_BASE_MASK = VLQ_BASE - 1;
-
-  // binary: 100000
-  var VLQ_CONTINUATION_BIT = VLQ_BASE;
-
-  /**
-   * Converts from a two-complement value to a value where the sign bit is
-   * placed in the least significant bit.  For example, as decimals:
-   *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
-   *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
-   */
-  function toVLQSigned(aValue) {
-    return aValue < 0
-      ? ((-aValue) << 1) + 1
-      : (aValue << 1) + 0;
-  }
-
-  /**
-   * Converts to a two-complement value from a value where the sign bit is
-   * placed in the least significant bit.  For example, as decimals:
-   *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1
-   *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2
-   */
-  function fromVLQSigned(aValue) {
-    var isNegative = (aValue & 1) === 1;
-    var shifted = aValue >> 1;
-    return isNegative
-      ? -shifted
-      : shifted;
-  }
-
-  /**
-   * Returns the base 64 VLQ encoded value.
-   */
-  exports.encode = function base64VLQ_encode(aValue) {
-    var encoded = "";
-    var digit;
-
-    var vlq = toVLQSigned(aValue);
-
-    do {
-      digit = vlq & VLQ_BASE_MASK;
-      vlq >>>= VLQ_BASE_SHIFT;
-      if (vlq > 0) {
-        // There are still more digits in this value, so we must make sure the
-        // continuation bit is marked.
-        digit |= VLQ_CONTINUATION_BIT;
-      }
-      encoded += base64.encode(digit);
-    } while (vlq > 0);
-
-    return encoded;
-  };
-
-  /**
-   * Decodes the next base 64 VLQ value from the given string and returns the
-   * value and the rest of the string via the out parameter.
-   */
-  exports.decode = function base64VLQ_decode(aStr, aOutParam) {
-    var i = 0;
-    var strLen = aStr.length;
-    var result = 0;
-    var shift = 0;
-    var continuation, digit;
-
-    do {
-      if (i >= strLen) {
-        throw new Error("Expected more digits in base 64 VLQ value.");
-      }
-      digit = base64.decode(aStr.charAt(i++));
-      continuation = !!(digit & VLQ_CONTINUATION_BIT);
-      digit &= VLQ_BASE_MASK;
-      result = result + (digit << shift);
-      shift += VLQ_BASE_SHIFT;
-    } while (continuation);
-
-    aOutParam.value = fromVLQSigned(result);
-    aOutParam.rest = aStr.slice(i);
-  };
-
-});

+ 0 - 42
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/base64.js

@@ -1,42 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var charToIntMap = {};
-  var intToCharMap = {};
-
-  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-    .split('')
-    .forEach(function (ch, index) {
-      charToIntMap[ch] = index;
-      intToCharMap[index] = ch;
-    });
-
-  /**
-   * Encode an integer in the range of 0 to 63 to a single base 64 digit.
-   */
-  exports.encode = function base64_encode(aNumber) {
-    if (aNumber in intToCharMap) {
-      return intToCharMap[aNumber];
-    }
-    throw new TypeError("Must be between 0 and 63: " + aNumber);
-  };
-
-  /**
-   * Decode a single base 64 digit to an integer.
-   */
-  exports.decode = function base64_decode(aChar) {
-    if (aChar in charToIntMap) {
-      return charToIntMap[aChar];
-    }
-    throw new TypeError("Not a valid base 64 digit: " + aChar);
-  };
-
-});

+ 0 - 80
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/binary-search.js

@@ -1,80 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  /**
-   * Recursive implementation of binary search.
-   *
-   * @param aLow Indices here and lower do not contain the needle.
-   * @param aHigh Indices here and higher do not contain the needle.
-   * @param aNeedle The element being searched for.
-   * @param aHaystack The non-empty array being searched.
-   * @param aCompare Function which takes two elements and returns -1, 0, or 1.
-   */
-  function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {
-    // This function terminates when one of the following is true:
-    //
-    //   1. We find the exact element we are looking for.
-    //
-    //   2. We did not find the exact element, but we can return the index of
-    //      the next closest element that is less than that element.
-    //
-    //   3. We did not find the exact element, and there is no next-closest
-    //      element which is less than the one we are searching for, so we
-    //      return -1.
-    var mid = Math.floor((aHigh - aLow) / 2) + aLow;
-    var cmp = aCompare(aNeedle, aHaystack[mid], true);
-    if (cmp === 0) {
-      // Found the element we are looking for.
-      return mid;
-    }
-    else if (cmp > 0) {
-      // aHaystack[mid] is greater than our needle.
-      if (aHigh - mid > 1) {
-        // The element is in the upper half.
-        return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);
-      }
-      // We did not find an exact match, return the next closest one
-      // (termination case 2).
-      return mid;
-    }
-    else {
-      // aHaystack[mid] is less than our needle.
-      if (mid - aLow > 1) {
-        // The element is in the lower half.
-        return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);
-      }
-      // The exact needle element was not found in this haystack. Determine if
-      // we are in termination case (2) or (3) and return the appropriate thing.
-      return aLow < 0 ? -1 : aLow;
-    }
-  }
-
-  /**
-   * This is an implementation of binary search which will always try and return
-   * the index of next lowest value checked if there is no exact hit. This is
-   * because mappings between original and generated line/col pairs are single
-   * points, and there is an implicit region between each of them, so a miss
-   * just means that you aren't on the very start of a region.
-   *
-   * @param aNeedle The element you are looking for.
-   * @param aHaystack The array that is being searched.
-   * @param aCompare A function which takes the needle and an element in the
-   *     array and returns -1, 0, or 1 depending on whether the needle is less
-   *     than, equal to, or greater than the element, respectively.
-   */
-  exports.search = function search(aNeedle, aHaystack, aCompare) {
-    if (aHaystack.length === 0) {
-      return -1;
-    }
-    return recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)
-  };
-
-});

+ 0 - 86
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/mapping-list.js

@@ -1,86 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2014 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var util = require('./util');
-
-  /**
-   * Determine whether mappingB is after mappingA with respect to generated
-   * position.
-   */
-  function generatedPositionAfter(mappingA, mappingB) {
-    // Optimized for most common case
-    var lineA = mappingA.generatedLine;
-    var lineB = mappingB.generatedLine;
-    var columnA = mappingA.generatedColumn;
-    var columnB = mappingB.generatedColumn;
-    return lineB > lineA || lineB == lineA && columnB >= columnA ||
-           util.compareByGeneratedPositions(mappingA, mappingB) <= 0;
-  }
-
-  /**
-   * A data structure to provide a sorted view of accumulated mappings in a
-   * performance conscious manner. It trades a neglibable overhead in general
-   * case for a large speedup in case of mappings being added in order.
-   */
-  function MappingList() {
-    this._array = [];
-    this._sorted = true;
-    // Serves as infimum
-    this._last = {generatedLine: -1, generatedColumn: 0};
-  }
-
-  /**
-   * Iterate through internal items. This method takes the same arguments that
-   * `Array.prototype.forEach` takes.
-   *
-   * NOTE: The order of the mappings is NOT guaranteed.
-   */
-  MappingList.prototype.unsortedForEach =
-    function MappingList_forEach(aCallback, aThisArg) {
-      this._array.forEach(aCallback, aThisArg);
-    };
-
-  /**
-   * Add the given source mapping.
-   *
-   * @param Object aMapping
-   */
-  MappingList.prototype.add = function MappingList_add(aMapping) {
-    var mapping;
-    if (generatedPositionAfter(this._last, aMapping)) {
-      this._last = aMapping;
-      this._array.push(aMapping);
-    } else {
-      this._sorted = false;
-      this._array.push(aMapping);
-    }
-  };
-
-  /**
-   * Returns the flat, sorted array of mappings. The mappings are sorted by
-   * generated position.
-   *
-   * WARNING: This method returns internal data without copying, for
-   * performance. The return value must NOT be mutated, and should be treated as
-   * an immutable borrow. If you want to take ownership, you must make your own
-   * copy.
-   */
-  MappingList.prototype.toArray = function MappingList_toArray() {
-    if (!this._sorted) {
-      this._array.sort(util.compareByGeneratedPositions);
-      this._sorted = true;
-    }
-    return this._array;
-  };
-
-  exports.MappingList = MappingList;
-
-});

+ 0 - 575
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-map-consumer.js

@@ -1,575 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var util = require('./util');
-  var binarySearch = require('./binary-search');
-  var ArraySet = require('./array-set').ArraySet;
-  var base64VLQ = require('./base64-vlq');
-
-  /**
-   * A SourceMapConsumer instance represents a parsed source map which we can
-   * query for information about the original file positions by giving it a file
-   * position in the generated source.
-   *
-   * The only parameter is the raw source map (either as a JSON string, or
-   * already parsed to an object). According to the spec, source maps have the
-   * following attributes:
-   *
-   *   - version: Which version of the source map spec this map is following.
-   *   - sources: An array of URLs to the original source files.
-   *   - names: An array of identifiers which can be referrenced by individual mappings.
-   *   - sourceRoot: Optional. The URL root from which all sources are relative.
-   *   - sourcesContent: Optional. An array of contents of the original source files.
-   *   - mappings: A string of base64 VLQs which contain the actual mappings.
-   *   - file: Optional. The generated file this source map is associated with.
-   *
-   * Here is an example source map, taken from the source map spec[0]:
-   *
-   *     {
-   *       version : 3,
-   *       file: "out.js",
-   *       sourceRoot : "",
-   *       sources: ["foo.js", "bar.js"],
-   *       names: ["src", "maps", "are", "fun"],
-   *       mappings: "AA,AB;;ABCDE;"
-   *     }
-   *
-   * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
-   */
-  function SourceMapConsumer(aSourceMap) {
-    var sourceMap = aSourceMap;
-    if (typeof aSourceMap === 'string') {
-      sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
-    }
-
-    var version = util.getArg(sourceMap, 'version');
-    var sources = util.getArg(sourceMap, 'sources');
-    // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
-    // requires the array) to play nice here.
-    var names = util.getArg(sourceMap, 'names', []);
-    var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
-    var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
-    var mappings = util.getArg(sourceMap, 'mappings');
-    var file = util.getArg(sourceMap, 'file', null);
-
-    // Once again, Sass deviates from the spec and supplies the version as a
-    // string rather than a number, so we use loose equality checking here.
-    if (version != this._version) {
-      throw new Error('Unsupported version: ' + version);
-    }
-
-    // Some source maps produce relative source paths like "./foo.js" instead of
-    // "foo.js".  Normalize these first so that future comparisons will succeed.
-    // See bugzil.la/1090768.
-    sources = sources.map(util.normalize);
-
-    // Pass `true` below to allow duplicate names and sources. While source maps
-    // are intended to be compressed and deduplicated, the TypeScript compiler
-    // sometimes generates source maps with duplicates in them. See Github issue
-    // #72 and bugzil.la/889492.
-    this._names = ArraySet.fromArray(names, true);
-    this._sources = ArraySet.fromArray(sources, true);
-
-    this.sourceRoot = sourceRoot;
-    this.sourcesContent = sourcesContent;
-    this._mappings = mappings;
-    this.file = file;
-  }
-
-  /**
-   * Create a SourceMapConsumer from a SourceMapGenerator.
-   *
-   * @param SourceMapGenerator aSourceMap
-   *        The source map that will be consumed.
-   * @returns SourceMapConsumer
-   */
-  SourceMapConsumer.fromSourceMap =
-    function SourceMapConsumer_fromSourceMap(aSourceMap) {
-      var smc = Object.create(SourceMapConsumer.prototype);
-
-      smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
-      smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
-      smc.sourceRoot = aSourceMap._sourceRoot;
-      smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
-                                                              smc.sourceRoot);
-      smc.file = aSourceMap._file;
-
-      smc.__generatedMappings = aSourceMap._mappings.toArray().slice();
-      smc.__originalMappings = aSourceMap._mappings.toArray().slice()
-        .sort(util.compareByOriginalPositions);
-
-      return smc;
-    };
-
-  /**
-   * The version of the source mapping spec that we are consuming.
-   */
-  SourceMapConsumer.prototype._version = 3;
-
-  /**
-   * The list of original sources.
-   */
-  Object.defineProperty(SourceMapConsumer.prototype, 'sources', {
-    get: function () {
-      return this._sources.toArray().map(function (s) {
-        return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
-      }, this);
-    }
-  });
-
-  // `__generatedMappings` and `__originalMappings` are arrays that hold the
-  // parsed mapping coordinates from the source map's "mappings" attribute. They
-  // are lazily instantiated, accessed via the `_generatedMappings` and
-  // `_originalMappings` getters respectively, and we only parse the mappings
-  // and create these arrays once queried for a source location. We jump through
-  // these hoops because there can be many thousands of mappings, and parsing
-  // them is expensive, so we only want to do it if we must.
-  //
-  // Each object in the arrays is of the form:
-  //
-  //     {
-  //       generatedLine: The line number in the generated code,
-  //       generatedColumn: The column number in the generated code,
-  //       source: The path to the original source file that generated this
-  //               chunk of code,
-  //       originalLine: The line number in the original source that
-  //                     corresponds to this chunk of generated code,
-  //       originalColumn: The column number in the original source that
-  //                       corresponds to this chunk of generated code,
-  //       name: The name of the original symbol which generated this chunk of
-  //             code.
-  //     }
-  //
-  // All properties except for `generatedLine` and `generatedColumn` can be
-  // `null`.
-  //
-  // `_generatedMappings` is ordered by the generated positions.
-  //
-  // `_originalMappings` is ordered by the original positions.
-
-  SourceMapConsumer.prototype.__generatedMappings = null;
-  Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
-    get: function () {
-      if (!this.__generatedMappings) {
-        this.__generatedMappings = [];
-        this.__originalMappings = [];
-        this._parseMappings(this._mappings, this.sourceRoot);
-      }
-
-      return this.__generatedMappings;
-    }
-  });
-
-  SourceMapConsumer.prototype.__originalMappings = null;
-  Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
-    get: function () {
-      if (!this.__originalMappings) {
-        this.__generatedMappings = [];
-        this.__originalMappings = [];
-        this._parseMappings(this._mappings, this.sourceRoot);
-      }
-
-      return this.__originalMappings;
-    }
-  });
-
-  SourceMapConsumer.prototype._nextCharIsMappingSeparator =
-    function SourceMapConsumer_nextCharIsMappingSeparator(aStr) {
-      var c = aStr.charAt(0);
-      return c === ";" || c === ",";
-    };
-
-  /**
-   * Parse the mappings in a string in to a data structure which we can easily
-   * query (the ordered arrays in the `this.__generatedMappings` and
-   * `this.__originalMappings` properties).
-   */
-  SourceMapConsumer.prototype._parseMappings =
-    function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
-      var generatedLine = 1;
-      var previousGeneratedColumn = 0;
-      var previousOriginalLine = 0;
-      var previousOriginalColumn = 0;
-      var previousSource = 0;
-      var previousName = 0;
-      var str = aStr;
-      var temp = {};
-      var mapping;
-
-      while (str.length > 0) {
-        if (str.charAt(0) === ';') {
-          generatedLine++;
-          str = str.slice(1);
-          previousGeneratedColumn = 0;
-        }
-        else if (str.charAt(0) === ',') {
-          str = str.slice(1);
-        }
-        else {
-          mapping = {};
-          mapping.generatedLine = generatedLine;
-
-          // Generated column.
-          base64VLQ.decode(str, temp);
-          mapping.generatedColumn = previousGeneratedColumn + temp.value;
-          previousGeneratedColumn = mapping.generatedColumn;
-          str = temp.rest;
-
-          if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
-            // Original source.
-            base64VLQ.decode(str, temp);
-            mapping.source = this._sources.at(previousSource + temp.value);
-            previousSource += temp.value;
-            str = temp.rest;
-            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
-              throw new Error('Found a source, but no line and column');
-            }
-
-            // Original line.
-            base64VLQ.decode(str, temp);
-            mapping.originalLine = previousOriginalLine + temp.value;
-            previousOriginalLine = mapping.originalLine;
-            // Lines are stored 0-based
-            mapping.originalLine += 1;
-            str = temp.rest;
-            if (str.length === 0 || this._nextCharIsMappingSeparator(str)) {
-              throw new Error('Found a source and line, but no column');
-            }
-
-            // Original column.
-            base64VLQ.decode(str, temp);
-            mapping.originalColumn = previousOriginalColumn + temp.value;
-            previousOriginalColumn = mapping.originalColumn;
-            str = temp.rest;
-
-            if (str.length > 0 && !this._nextCharIsMappingSeparator(str)) {
-              // Original name.
-              base64VLQ.decode(str, temp);
-              mapping.name = this._names.at(previousName + temp.value);
-              previousName += temp.value;
-              str = temp.rest;
-            }
-          }
-
-          this.__generatedMappings.push(mapping);
-          if (typeof mapping.originalLine === 'number') {
-            this.__originalMappings.push(mapping);
-          }
-        }
-      }
-
-      this.__generatedMappings.sort(util.compareByGeneratedPositions);
-      this.__originalMappings.sort(util.compareByOriginalPositions);
-    };
-
-  /**
-   * Find the mapping that best matches the hypothetical "needle" mapping that
-   * we are searching for in the given "haystack" of mappings.
-   */
-  SourceMapConsumer.prototype._findMapping =
-    function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
-                                           aColumnName, aComparator) {
-      // To return the position we are searching for, we must first find the
-      // mapping for the given position and then return the opposite position it
-      // points to. Because the mappings are sorted, we can use binary search to
-      // find the best mapping.
-
-      if (aNeedle[aLineName] <= 0) {
-        throw new TypeError('Line must be greater than or equal to 1, got '
-                            + aNeedle[aLineName]);
-      }
-      if (aNeedle[aColumnName] < 0) {
-        throw new TypeError('Column must be greater than or equal to 0, got '
-                            + aNeedle[aColumnName]);
-      }
-
-      return binarySearch.search(aNeedle, aMappings, aComparator);
-    };
-
-  /**
-   * Compute the last column for each generated mapping. The last column is
-   * inclusive.
-   */
-  SourceMapConsumer.prototype.computeColumnSpans =
-    function SourceMapConsumer_computeColumnSpans() {
-      for (var index = 0; index < this._generatedMappings.length; ++index) {
-        var mapping = this._generatedMappings[index];
-
-        // Mappings do not contain a field for the last generated columnt. We
-        // can come up with an optimistic estimate, however, by assuming that
-        // mappings are contiguous (i.e. given two consecutive mappings, the
-        // first mapping ends where the second one starts).
-        if (index + 1 < this._generatedMappings.length) {
-          var nextMapping = this._generatedMappings[index + 1];
-
-          if (mapping.generatedLine === nextMapping.generatedLine) {
-            mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
-            continue;
-          }
-        }
-
-        // The last mapping for each line spans the entire line.
-        mapping.lastGeneratedColumn = Infinity;
-      }
-    };
-
-  /**
-   * Returns the original source, line, and column information for the generated
-   * source's line and column positions provided. The only argument is an object
-   * with the following properties:
-   *
-   *   - line: The line number in the generated source.
-   *   - column: The column number in the generated source.
-   *
-   * and an object is returned with the following properties:
-   *
-   *   - source: The original source file, or null.
-   *   - line: The line number in the original source, or null.
-   *   - column: The column number in the original source, or null.
-   *   - name: The original identifier, or null.
-   */
-  SourceMapConsumer.prototype.originalPositionFor =
-    function SourceMapConsumer_originalPositionFor(aArgs) {
-      var needle = {
-        generatedLine: util.getArg(aArgs, 'line'),
-        generatedColumn: util.getArg(aArgs, 'column')
-      };
-
-      var index = this._findMapping(needle,
-                                    this._generatedMappings,
-                                    "generatedLine",
-                                    "generatedColumn",
-                                    util.compareByGeneratedPositions);
-
-      if (index >= 0) {
-        var mapping = this._generatedMappings[index];
-
-        if (mapping.generatedLine === needle.generatedLine) {
-          var source = util.getArg(mapping, 'source', null);
-          if (source != null && this.sourceRoot != null) {
-            source = util.join(this.sourceRoot, source);
-          }
-          return {
-            source: source,
-            line: util.getArg(mapping, 'originalLine', null),
-            column: util.getArg(mapping, 'originalColumn', null),
-            name: util.getArg(mapping, 'name', null)
-          };
-        }
-      }
-
-      return {
-        source: null,
-        line: null,
-        column: null,
-        name: null
-      };
-    };
-
-  /**
-   * Returns the original source content. The only argument is the url of the
-   * original source file. Returns null if no original source content is
-   * availible.
-   */
-  SourceMapConsumer.prototype.sourceContentFor =
-    function SourceMapConsumer_sourceContentFor(aSource) {
-      if (!this.sourcesContent) {
-        return null;
-      }
-
-      if (this.sourceRoot != null) {
-        aSource = util.relative(this.sourceRoot, aSource);
-      }
-
-      if (this._sources.has(aSource)) {
-        return this.sourcesContent[this._sources.indexOf(aSource)];
-      }
-
-      var url;
-      if (this.sourceRoot != null
-          && (url = util.urlParse(this.sourceRoot))) {
-        // XXX: file:// URIs and absolute paths lead to unexpected behavior for
-        // many users. We can help them out when they expect file:// URIs to
-        // behave like it would if they were running a local HTTP server. See
-        // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
-        var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
-        if (url.scheme == "file"
-            && this._sources.has(fileUriAbsPath)) {
-          return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
-        }
-
-        if ((!url.path || url.path == "/")
-            && this._sources.has("/" + aSource)) {
-          return this.sourcesContent[this._sources.indexOf("/" + aSource)];
-        }
-      }
-
-      throw new Error('"' + aSource + '" is not in the SourceMap.');
-    };
-
-  /**
-   * Returns the generated line and column information for the original source,
-   * line, and column positions provided. The only argument is an object with
-   * the following properties:
-   *
-   *   - source: The filename of the original source.
-   *   - line: The line number in the original source.
-   *   - column: The column number in the original source.
-   *
-   * and an object is returned with the following properties:
-   *
-   *   - line: The line number in the generated source, or null.
-   *   - column: The column number in the generated source, or null.
-   */
-  SourceMapConsumer.prototype.generatedPositionFor =
-    function SourceMapConsumer_generatedPositionFor(aArgs) {
-      var needle = {
-        source: util.getArg(aArgs, 'source'),
-        originalLine: util.getArg(aArgs, 'line'),
-        originalColumn: util.getArg(aArgs, 'column')
-      };
-
-      if (this.sourceRoot != null) {
-        needle.source = util.relative(this.sourceRoot, needle.source);
-      }
-
-      var index = this._findMapping(needle,
-                                    this._originalMappings,
-                                    "originalLine",
-                                    "originalColumn",
-                                    util.compareByOriginalPositions);
-
-      if (index >= 0) {
-        var mapping = this._originalMappings[index];
-
-        return {
-          line: util.getArg(mapping, 'generatedLine', null),
-          column: util.getArg(mapping, 'generatedColumn', null),
-          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
-        };
-      }
-
-      return {
-        line: null,
-        column: null,
-        lastColumn: null
-      };
-    };
-
-  /**
-   * Returns all generated line and column information for the original source
-   * and line provided. The only argument is an object with the following
-   * properties:
-   *
-   *   - source: The filename of the original source.
-   *   - line: The line number in the original source.
-   *
-   * and an array of objects is returned, each with the following properties:
-   *
-   *   - line: The line number in the generated source, or null.
-   *   - column: The column number in the generated source, or null.
-   */
-  SourceMapConsumer.prototype.allGeneratedPositionsFor =
-    function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
-      // When there is no exact match, SourceMapConsumer.prototype._findMapping
-      // returns the index of the closest mapping less than the needle. By
-      // setting needle.originalColumn to Infinity, we thus find the last
-      // mapping for the given line, provided such a mapping exists.
-      var needle = {
-        source: util.getArg(aArgs, 'source'),
-        originalLine: util.getArg(aArgs, 'line'),
-        originalColumn: Infinity
-      };
-
-      if (this.sourceRoot != null) {
-        needle.source = util.relative(this.sourceRoot, needle.source);
-      }
-
-      var mappings = [];
-
-      var index = this._findMapping(needle,
-                                    this._originalMappings,
-                                    "originalLine",
-                                    "originalColumn",
-                                    util.compareByOriginalPositions);
-      if (index >= 0) {
-        var mapping = this._originalMappings[index];
-
-        while (mapping && mapping.originalLine === needle.originalLine) {
-          mappings.push({
-            line: util.getArg(mapping, 'generatedLine', null),
-            column: util.getArg(mapping, 'generatedColumn', null),
-            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
-          });
-
-          mapping = this._originalMappings[--index];
-        }
-      }
-
-      return mappings.reverse();
-    };
-
-  SourceMapConsumer.GENERATED_ORDER = 1;
-  SourceMapConsumer.ORIGINAL_ORDER = 2;
-
-  /**
-   * Iterate over each mapping between an original source/line/column and a
-   * generated line/column in this source map.
-   *
-   * @param Function aCallback
-   *        The function that is called with each mapping.
-   * @param Object aContext
-   *        Optional. If specified, this object will be the value of `this` every
-   *        time that `aCallback` is called.
-   * @param aOrder
-   *        Either `SourceMapConsumer.GENERATED_ORDER` or
-   *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
-   *        iterate over the mappings sorted by the generated file's line/column
-   *        order or the original's source/line/column order, respectively. Defaults to
-   *        `SourceMapConsumer.GENERATED_ORDER`.
-   */
-  SourceMapConsumer.prototype.eachMapping =
-    function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
-      var context = aContext || null;
-      var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
-
-      var mappings;
-      switch (order) {
-      case SourceMapConsumer.GENERATED_ORDER:
-        mappings = this._generatedMappings;
-        break;
-      case SourceMapConsumer.ORIGINAL_ORDER:
-        mappings = this._originalMappings;
-        break;
-      default:
-        throw new Error("Unknown order of iteration.");
-      }
-
-      var sourceRoot = this.sourceRoot;
-      mappings.map(function (mapping) {
-        var source = mapping.source;
-        if (source != null && sourceRoot != null) {
-          source = util.join(sourceRoot, source);
-        }
-        return {
-          source: source,
-          generatedLine: mapping.generatedLine,
-          generatedColumn: mapping.generatedColumn,
-          originalLine: mapping.originalLine,
-          originalColumn: mapping.originalColumn,
-          name: mapping.name
-        };
-      }).forEach(aCallback, context);
-    };
-
-  exports.SourceMapConsumer = SourceMapConsumer;
-
-});

+ 0 - 400
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-map-generator.js

@@ -1,400 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var base64VLQ = require('./base64-vlq');
-  var util = require('./util');
-  var ArraySet = require('./array-set').ArraySet;
-  var MappingList = require('./mapping-list').MappingList;
-
-  /**
-   * An instance of the SourceMapGenerator represents a source map which is
-   * being built incrementally. You may pass an object with the following
-   * properties:
-   *
-   *   - file: The filename of the generated source.
-   *   - sourceRoot: A root for all relative URLs in this source map.
-   */
-  function SourceMapGenerator(aArgs) {
-    if (!aArgs) {
-      aArgs = {};
-    }
-    this._file = util.getArg(aArgs, 'file', null);
-    this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
-    this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
-    this._sources = new ArraySet();
-    this._names = new ArraySet();
-    this._mappings = new MappingList();
-    this._sourcesContents = null;
-  }
-
-  SourceMapGenerator.prototype._version = 3;
-
-  /**
-   * Creates a new SourceMapGenerator based on a SourceMapConsumer
-   *
-   * @param aSourceMapConsumer The SourceMap.
-   */
-  SourceMapGenerator.fromSourceMap =
-    function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
-      var sourceRoot = aSourceMapConsumer.sourceRoot;
-      var generator = new SourceMapGenerator({
-        file: aSourceMapConsumer.file,
-        sourceRoot: sourceRoot
-      });
-      aSourceMapConsumer.eachMapping(function (mapping) {
-        var newMapping = {
-          generated: {
-            line: mapping.generatedLine,
-            column: mapping.generatedColumn
-          }
-        };
-
-        if (mapping.source != null) {
-          newMapping.source = mapping.source;
-          if (sourceRoot != null) {
-            newMapping.source = util.relative(sourceRoot, newMapping.source);
-          }
-
-          newMapping.original = {
-            line: mapping.originalLine,
-            column: mapping.originalColumn
-          };
-
-          if (mapping.name != null) {
-            newMapping.name = mapping.name;
-          }
-        }
-
-        generator.addMapping(newMapping);
-      });
-      aSourceMapConsumer.sources.forEach(function (sourceFile) {
-        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-        if (content != null) {
-          generator.setSourceContent(sourceFile, content);
-        }
-      });
-      return generator;
-    };
-
-  /**
-   * Add a single mapping from original source line and column to the generated
-   * source's line and column for this source map being created. The mapping
-   * object should have the following properties:
-   *
-   *   - generated: An object with the generated line and column positions.
-   *   - original: An object with the original line and column positions.
-   *   - source: The original source file (relative to the sourceRoot).
-   *   - name: An optional original token name for this mapping.
-   */
-  SourceMapGenerator.prototype.addMapping =
-    function SourceMapGenerator_addMapping(aArgs) {
-      var generated = util.getArg(aArgs, 'generated');
-      var original = util.getArg(aArgs, 'original', null);
-      var source = util.getArg(aArgs, 'source', null);
-      var name = util.getArg(aArgs, 'name', null);
-
-      if (!this._skipValidation) {
-        this._validateMapping(generated, original, source, name);
-      }
-
-      if (source != null && !this._sources.has(source)) {
-        this._sources.add(source);
-      }
-
-      if (name != null && !this._names.has(name)) {
-        this._names.add(name);
-      }
-
-      this._mappings.add({
-        generatedLine: generated.line,
-        generatedColumn: generated.column,
-        originalLine: original != null && original.line,
-        originalColumn: original != null && original.column,
-        source: source,
-        name: name
-      });
-    };
-
-  /**
-   * Set the source content for a source file.
-   */
-  SourceMapGenerator.prototype.setSourceContent =
-    function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
-      var source = aSourceFile;
-      if (this._sourceRoot != null) {
-        source = util.relative(this._sourceRoot, source);
-      }
-
-      if (aSourceContent != null) {
-        // Add the source content to the _sourcesContents map.
-        // Create a new _sourcesContents map if the property is null.
-        if (!this._sourcesContents) {
-          this._sourcesContents = {};
-        }
-        this._sourcesContents[util.toSetString(source)] = aSourceContent;
-      } else if (this._sourcesContents) {
-        // Remove the source file from the _sourcesContents map.
-        // If the _sourcesContents map is empty, set the property to null.
-        delete this._sourcesContents[util.toSetString(source)];
-        if (Object.keys(this._sourcesContents).length === 0) {
-          this._sourcesContents = null;
-        }
-      }
-    };
-
-  /**
-   * Applies the mappings of a sub-source-map for a specific source file to the
-   * source map being generated. Each mapping to the supplied source file is
-   * rewritten using the supplied source map. Note: The resolution for the
-   * resulting mappings is the minimium of this map and the supplied map.
-   *
-   * @param aSourceMapConsumer The source map to be applied.
-   * @param aSourceFile Optional. The filename of the source file.
-   *        If omitted, SourceMapConsumer's file property will be used.
-   * @param aSourceMapPath Optional. The dirname of the path to the source map
-   *        to be applied. If relative, it is relative to the SourceMapConsumer.
-   *        This parameter is needed when the two source maps aren't in the same
-   *        directory, and the source map to be applied contains relative source
-   *        paths. If so, those relative source paths need to be rewritten
-   *        relative to the SourceMapGenerator.
-   */
-  SourceMapGenerator.prototype.applySourceMap =
-    function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
-      var sourceFile = aSourceFile;
-      // If aSourceFile is omitted, we will use the file property of the SourceMap
-      if (aSourceFile == null) {
-        if (aSourceMapConsumer.file == null) {
-          throw new Error(
-            'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
-            'or the source map\'s "file" property. Both were omitted.'
-          );
-        }
-        sourceFile = aSourceMapConsumer.file;
-      }
-      var sourceRoot = this._sourceRoot;
-      // Make "sourceFile" relative if an absolute Url is passed.
-      if (sourceRoot != null) {
-        sourceFile = util.relative(sourceRoot, sourceFile);
-      }
-      // Applying the SourceMap can add and remove items from the sources and
-      // the names array.
-      var newSources = new ArraySet();
-      var newNames = new ArraySet();
-
-      // Find mappings for the "sourceFile"
-      this._mappings.unsortedForEach(function (mapping) {
-        if (mapping.source === sourceFile && mapping.originalLine != null) {
-          // Check if it can be mapped by the source map, then update the mapping.
-          var original = aSourceMapConsumer.originalPositionFor({
-            line: mapping.originalLine,
-            column: mapping.originalColumn
-          });
-          if (original.source != null) {
-            // Copy mapping
-            mapping.source = original.source;
-            if (aSourceMapPath != null) {
-              mapping.source = util.join(aSourceMapPath, mapping.source)
-            }
-            if (sourceRoot != null) {
-              mapping.source = util.relative(sourceRoot, mapping.source);
-            }
-            mapping.originalLine = original.line;
-            mapping.originalColumn = original.column;
-            if (original.name != null) {
-              mapping.name = original.name;
-            }
-          }
-        }
-
-        var source = mapping.source;
-        if (source != null && !newSources.has(source)) {
-          newSources.add(source);
-        }
-
-        var name = mapping.name;
-        if (name != null && !newNames.has(name)) {
-          newNames.add(name);
-        }
-
-      }, this);
-      this._sources = newSources;
-      this._names = newNames;
-
-      // Copy sourcesContents of applied map.
-      aSourceMapConsumer.sources.forEach(function (sourceFile) {
-        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-        if (content != null) {
-          if (aSourceMapPath != null) {
-            sourceFile = util.join(aSourceMapPath, sourceFile);
-          }
-          if (sourceRoot != null) {
-            sourceFile = util.relative(sourceRoot, sourceFile);
-          }
-          this.setSourceContent(sourceFile, content);
-        }
-      }, this);
-    };
-
-  /**
-   * A mapping can have one of the three levels of data:
-   *
-   *   1. Just the generated position.
-   *   2. The Generated position, original position, and original source.
-   *   3. Generated and original position, original source, as well as a name
-   *      token.
-   *
-   * To maintain consistency, we validate that any new mapping being added falls
-   * in to one of these categories.
-   */
-  SourceMapGenerator.prototype._validateMapping =
-    function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
-                                                aName) {
-      if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
-          && aGenerated.line > 0 && aGenerated.column >= 0
-          && !aOriginal && !aSource && !aName) {
-        // Case 1.
-        return;
-      }
-      else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
-               && aOriginal && 'line' in aOriginal && 'column' in aOriginal
-               && aGenerated.line > 0 && aGenerated.column >= 0
-               && aOriginal.line > 0 && aOriginal.column >= 0
-               && aSource) {
-        // Cases 2 and 3.
-        return;
-      }
-      else {
-        throw new Error('Invalid mapping: ' + JSON.stringify({
-          generated: aGenerated,
-          source: aSource,
-          original: aOriginal,
-          name: aName
-        }));
-      }
-    };
-
-  /**
-   * Serialize the accumulated mappings in to the stream of base 64 VLQs
-   * specified by the source map format.
-   */
-  SourceMapGenerator.prototype._serializeMappings =
-    function SourceMapGenerator_serializeMappings() {
-      var previousGeneratedColumn = 0;
-      var previousGeneratedLine = 1;
-      var previousOriginalColumn = 0;
-      var previousOriginalLine = 0;
-      var previousName = 0;
-      var previousSource = 0;
-      var result = '';
-      var mapping;
-
-      var mappings = this._mappings.toArray();
-
-      for (var i = 0, len = mappings.length; i < len; i++) {
-        mapping = mappings[i];
-
-        if (mapping.generatedLine !== previousGeneratedLine) {
-          previousGeneratedColumn = 0;
-          while (mapping.generatedLine !== previousGeneratedLine) {
-            result += ';';
-            previousGeneratedLine++;
-          }
-        }
-        else {
-          if (i > 0) {
-            if (!util.compareByGeneratedPositions(mapping, mappings[i - 1])) {
-              continue;
-            }
-            result += ',';
-          }
-        }
-
-        result += base64VLQ.encode(mapping.generatedColumn
-                                   - previousGeneratedColumn);
-        previousGeneratedColumn = mapping.generatedColumn;
-
-        if (mapping.source != null) {
-          result += base64VLQ.encode(this._sources.indexOf(mapping.source)
-                                     - previousSource);
-          previousSource = this._sources.indexOf(mapping.source);
-
-          // lines are stored 0-based in SourceMap spec version 3
-          result += base64VLQ.encode(mapping.originalLine - 1
-                                     - previousOriginalLine);
-          previousOriginalLine = mapping.originalLine - 1;
-
-          result += base64VLQ.encode(mapping.originalColumn
-                                     - previousOriginalColumn);
-          previousOriginalColumn = mapping.originalColumn;
-
-          if (mapping.name != null) {
-            result += base64VLQ.encode(this._names.indexOf(mapping.name)
-                                       - previousName);
-            previousName = this._names.indexOf(mapping.name);
-          }
-        }
-      }
-
-      return result;
-    };
-
-  SourceMapGenerator.prototype._generateSourcesContent =
-    function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
-      return aSources.map(function (source) {
-        if (!this._sourcesContents) {
-          return null;
-        }
-        if (aSourceRoot != null) {
-          source = util.relative(aSourceRoot, source);
-        }
-        var key = util.toSetString(source);
-        return Object.prototype.hasOwnProperty.call(this._sourcesContents,
-                                                    key)
-          ? this._sourcesContents[key]
-          : null;
-      }, this);
-    };
-
-  /**
-   * Externalize the source map.
-   */
-  SourceMapGenerator.prototype.toJSON =
-    function SourceMapGenerator_toJSON() {
-      var map = {
-        version: this._version,
-        sources: this._sources.toArray(),
-        names: this._names.toArray(),
-        mappings: this._serializeMappings()
-      };
-      if (this._file != null) {
-        map.file = this._file;
-      }
-      if (this._sourceRoot != null) {
-        map.sourceRoot = this._sourceRoot;
-      }
-      if (this._sourcesContents) {
-        map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
-      }
-
-      return map;
-    };
-
-  /**
-   * Render the source map being generated to a string.
-   */
-  SourceMapGenerator.prototype.toString =
-    function SourceMapGenerator_toString() {
-      return JSON.stringify(this);
-    };
-
-  exports.SourceMapGenerator = SourceMapGenerator;
-
-});

+ 0 - 414
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/source-node.js

@@ -1,414 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
-  var util = require('./util');
-
-  // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
-  // operating systems these days (capturing the result).
-  var REGEX_NEWLINE = /(\r?\n)/;
-
-  // Newline character code for charCodeAt() comparisons
-  var NEWLINE_CODE = 10;
-
-  // Private symbol for identifying `SourceNode`s when multiple versions of
-  // the source-map library are loaded. This MUST NOT CHANGE across
-  // versions!
-  var isSourceNode = "$$$isSourceNode$$$";
-
-  /**
-   * SourceNodes provide a way to abstract over interpolating/concatenating
-   * snippets of generated JavaScript source code while maintaining the line and
-   * column information associated with the original source code.
-   *
-   * @param aLine The original line number.
-   * @param aColumn The original column number.
-   * @param aSource The original source's filename.
-   * @param aChunks Optional. An array of strings which are snippets of
-   *        generated JS, or other SourceNodes.
-   * @param aName The original identifier.
-   */
-  function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
-    this.children = [];
-    this.sourceContents = {};
-    this.line = aLine == null ? null : aLine;
-    this.column = aColumn == null ? null : aColumn;
-    this.source = aSource == null ? null : aSource;
-    this.name = aName == null ? null : aName;
-    this[isSourceNode] = true;
-    if (aChunks != null) this.add(aChunks);
-  }
-
-  /**
-   * Creates a SourceNode from generated code and a SourceMapConsumer.
-   *
-   * @param aGeneratedCode The generated code
-   * @param aSourceMapConsumer The SourceMap for the generated code
-   * @param aRelativePath Optional. The path that relative sources in the
-   *        SourceMapConsumer should be relative to.
-   */
-  SourceNode.fromStringWithSourceMap =
-    function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
-      // The SourceNode we want to fill with the generated code
-      // and the SourceMap
-      var node = new SourceNode();
-
-      // All even indices of this array are one line of the generated code,
-      // while all odd indices are the newlines between two adjacent lines
-      // (since `REGEX_NEWLINE` captures its match).
-      // Processed fragments are removed from this array, by calling `shiftNextLine`.
-      var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
-      var shiftNextLine = function() {
-        var lineContents = remainingLines.shift();
-        // The last line of a file might not have a newline.
-        var newLine = remainingLines.shift() || "";
-        return lineContents + newLine;
-      };
-
-      // We need to remember the position of "remainingLines"
-      var lastGeneratedLine = 1, lastGeneratedColumn = 0;
-
-      // The generate SourceNodes we need a code range.
-      // To extract it current and last mapping is used.
-      // Here we store the last mapping.
-      var lastMapping = null;
-
-      aSourceMapConsumer.eachMapping(function (mapping) {
-        if (lastMapping !== null) {
-          // We add the code from "lastMapping" to "mapping":
-          // First check if there is a new line in between.
-          if (lastGeneratedLine < mapping.generatedLine) {
-            var code = "";
-            // Associate first line with "lastMapping"
-            addMappingWithCode(lastMapping, shiftNextLine());
-            lastGeneratedLine++;
-            lastGeneratedColumn = 0;
-            // The remaining code is added without mapping
-          } else {
-            // There is no new line in between.
-            // Associate the code between "lastGeneratedColumn" and
-            // "mapping.generatedColumn" with "lastMapping"
-            var nextLine = remainingLines[0];
-            var code = nextLine.substr(0, mapping.generatedColumn -
-                                          lastGeneratedColumn);
-            remainingLines[0] = nextLine.substr(mapping.generatedColumn -
-                                                lastGeneratedColumn);
-            lastGeneratedColumn = mapping.generatedColumn;
-            addMappingWithCode(lastMapping, code);
-            // No more remaining code, continue
-            lastMapping = mapping;
-            return;
-          }
-        }
-        // We add the generated code until the first mapping
-        // to the SourceNode without any mapping.
-        // Each line is added as separate string.
-        while (lastGeneratedLine < mapping.generatedLine) {
-          node.add(shiftNextLine());
-          lastGeneratedLine++;
-        }
-        if (lastGeneratedColumn < mapping.generatedColumn) {
-          var nextLine = remainingLines[0];
-          node.add(nextLine.substr(0, mapping.generatedColumn));
-          remainingLines[0] = nextLine.substr(mapping.generatedColumn);
-          lastGeneratedColumn = mapping.generatedColumn;
-        }
-        lastMapping = mapping;
-      }, this);
-      // We have processed all mappings.
-      if (remainingLines.length > 0) {
-        if (lastMapping) {
-          // Associate the remaining code in the current line with "lastMapping"
-          addMappingWithCode(lastMapping, shiftNextLine());
-        }
-        // and add the remaining lines without any mapping
-        node.add(remainingLines.join(""));
-      }
-
-      // Copy sourcesContent into SourceNode
-      aSourceMapConsumer.sources.forEach(function (sourceFile) {
-        var content = aSourceMapConsumer.sourceContentFor(sourceFile);
-        if (content != null) {
-          if (aRelativePath != null) {
-            sourceFile = util.join(aRelativePath, sourceFile);
-          }
-          node.setSourceContent(sourceFile, content);
-        }
-      });
-
-      return node;
-
-      function addMappingWithCode(mapping, code) {
-        if (mapping === null || mapping.source === undefined) {
-          node.add(code);
-        } else {
-          var source = aRelativePath
-            ? util.join(aRelativePath, mapping.source)
-            : mapping.source;
-          node.add(new SourceNode(mapping.originalLine,
-                                  mapping.originalColumn,
-                                  source,
-                                  code,
-                                  mapping.name));
-        }
-      }
-    };
-
-  /**
-   * Add a chunk of generated JS to this source node.
-   *
-   * @param aChunk A string snippet of generated JS code, another instance of
-   *        SourceNode, or an array where each member is one of those things.
-   */
-  SourceNode.prototype.add = function SourceNode_add(aChunk) {
-    if (Array.isArray(aChunk)) {
-      aChunk.forEach(function (chunk) {
-        this.add(chunk);
-      }, this);
-    }
-    else if (aChunk[isSourceNode] || typeof aChunk === "string") {
-      if (aChunk) {
-        this.children.push(aChunk);
-      }
-    }
-    else {
-      throw new TypeError(
-        "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
-      );
-    }
-    return this;
-  };
-
-  /**
-   * Add a chunk of generated JS to the beginning of this source node.
-   *
-   * @param aChunk A string snippet of generated JS code, another instance of
-   *        SourceNode, or an array where each member is one of those things.
-   */
-  SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
-    if (Array.isArray(aChunk)) {
-      for (var i = aChunk.length-1; i >= 0; i--) {
-        this.prepend(aChunk[i]);
-      }
-    }
-    else if (aChunk[isSourceNode] || typeof aChunk === "string") {
-      this.children.unshift(aChunk);
-    }
-    else {
-      throw new TypeError(
-        "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
-      );
-    }
-    return this;
-  };
-
-  /**
-   * Walk over the tree of JS snippets in this node and its children. The
-   * walking function is called once for each snippet of JS and is passed that
-   * snippet and the its original associated source's line/column location.
-   *
-   * @param aFn The traversal function.
-   */
-  SourceNode.prototype.walk = function SourceNode_walk(aFn) {
-    var chunk;
-    for (var i = 0, len = this.children.length; i < len; i++) {
-      chunk = this.children[i];
-      if (chunk[isSourceNode]) {
-        chunk.walk(aFn);
-      }
-      else {
-        if (chunk !== '') {
-          aFn(chunk, { source: this.source,
-                       line: this.line,
-                       column: this.column,
-                       name: this.name });
-        }
-      }
-    }
-  };
-
-  /**
-   * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
-   * each of `this.children`.
-   *
-   * @param aSep The separator.
-   */
-  SourceNode.prototype.join = function SourceNode_join(aSep) {
-    var newChildren;
-    var i;
-    var len = this.children.length;
-    if (len > 0) {
-      newChildren = [];
-      for (i = 0; i < len-1; i++) {
-        newChildren.push(this.children[i]);
-        newChildren.push(aSep);
-      }
-      newChildren.push(this.children[i]);
-      this.children = newChildren;
-    }
-    return this;
-  };
-
-  /**
-   * Call String.prototype.replace on the very right-most source snippet. Useful
-   * for trimming whitespace from the end of a source node, etc.
-   *
-   * @param aPattern The pattern to replace.
-   * @param aReplacement The thing to replace the pattern with.
-   */
-  SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
-    var lastChild = this.children[this.children.length - 1];
-    if (lastChild[isSourceNode]) {
-      lastChild.replaceRight(aPattern, aReplacement);
-    }
-    else if (typeof lastChild === 'string') {
-      this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
-    }
-    else {
-      this.children.push(''.replace(aPattern, aReplacement));
-    }
-    return this;
-  };
-
-  /**
-   * Set the source content for a source file. This will be added to the SourceMapGenerator
-   * in the sourcesContent field.
-   *
-   * @param aSourceFile The filename of the source file
-   * @param aSourceContent The content of the source file
-   */
-  SourceNode.prototype.setSourceContent =
-    function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
-      this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
-    };
-
-  /**
-   * Walk over the tree of SourceNodes. The walking function is called for each
-   * source file content and is passed the filename and source content.
-   *
-   * @param aFn The traversal function.
-   */
-  SourceNode.prototype.walkSourceContents =
-    function SourceNode_walkSourceContents(aFn) {
-      for (var i = 0, len = this.children.length; i < len; i++) {
-        if (this.children[i][isSourceNode]) {
-          this.children[i].walkSourceContents(aFn);
-        }
-      }
-
-      var sources = Object.keys(this.sourceContents);
-      for (var i = 0, len = sources.length; i < len; i++) {
-        aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
-      }
-    };
-
-  /**
-   * Return the string representation of this source node. Walks over the tree
-   * and concatenates all the various snippets together to one string.
-   */
-  SourceNode.prototype.toString = function SourceNode_toString() {
-    var str = "";
-    this.walk(function (chunk) {
-      str += chunk;
-    });
-    return str;
-  };
-
-  /**
-   * Returns the string representation of this source node along with a source
-   * map.
-   */
-  SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
-    var generated = {
-      code: "",
-      line: 1,
-      column: 0
-    };
-    var map = new SourceMapGenerator(aArgs);
-    var sourceMappingActive = false;
-    var lastOriginalSource = null;
-    var lastOriginalLine = null;
-    var lastOriginalColumn = null;
-    var lastOriginalName = null;
-    this.walk(function (chunk, original) {
-      generated.code += chunk;
-      if (original.source !== null
-          && original.line !== null
-          && original.column !== null) {
-        if(lastOriginalSource !== original.source
-           || lastOriginalLine !== original.line
-           || lastOriginalColumn !== original.column
-           || lastOriginalName !== original.name) {
-          map.addMapping({
-            source: original.source,
-            original: {
-              line: original.line,
-              column: original.column
-            },
-            generated: {
-              line: generated.line,
-              column: generated.column
-            },
-            name: original.name
-          });
-        }
-        lastOriginalSource = original.source;
-        lastOriginalLine = original.line;
-        lastOriginalColumn = original.column;
-        lastOriginalName = original.name;
-        sourceMappingActive = true;
-      } else if (sourceMappingActive) {
-        map.addMapping({
-          generated: {
-            line: generated.line,
-            column: generated.column
-          }
-        });
-        lastOriginalSource = null;
-        sourceMappingActive = false;
-      }
-      for (var idx = 0, length = chunk.length; idx < length; idx++) {
-        if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
-          generated.line++;
-          generated.column = 0;
-          // Mappings end at eol
-          if (idx + 1 === length) {
-            lastOriginalSource = null;
-            sourceMappingActive = false;
-          } else if (sourceMappingActive) {
-            map.addMapping({
-              source: original.source,
-              original: {
-                line: original.line,
-                column: original.column
-              },
-              generated: {
-                line: generated.line,
-                column: generated.column
-              },
-              name: original.name
-            });
-          }
-        } else {
-          generated.column++;
-        }
-      }
-    });
-    this.walkSourceContents(function (sourceFile, sourceContent) {
-      map.setSourceContent(sourceFile, sourceContent);
-    });
-
-    return { code: generated.code, map: map };
-  };
-
-  exports.SourceNode = SourceNode;
-
-});

+ 0 - 319
ParticleFilter/node_modules/ast-transform/node_modules/source-map/lib/source-map/util.js

@@ -1,319 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  /**
-   * This is a helper function for getting values from parameter/options
-   * objects.
-   *
-   * @param args The object we are extracting values from
-   * @param name The name of the property we are getting.
-   * @param defaultValue An optional value to return if the property is missing
-   * from the object. If this is not specified and the property is missing, an
-   * error will be thrown.
-   */
-  function getArg(aArgs, aName, aDefaultValue) {
-    if (aName in aArgs) {
-      return aArgs[aName];
-    } else if (arguments.length === 3) {
-      return aDefaultValue;
-    } else {
-      throw new Error('"' + aName + '" is a required argument.');
-    }
-  }
-  exports.getArg = getArg;
-
-  var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
-  var dataUrlRegexp = /^data:.+\,.+$/;
-
-  function urlParse(aUrl) {
-    var match = aUrl.match(urlRegexp);
-    if (!match) {
-      return null;
-    }
-    return {
-      scheme: match[1],
-      auth: match[2],
-      host: match[3],
-      port: match[4],
-      path: match[5]
-    };
-  }
-  exports.urlParse = urlParse;
-
-  function urlGenerate(aParsedUrl) {
-    var url = '';
-    if (aParsedUrl.scheme) {
-      url += aParsedUrl.scheme + ':';
-    }
-    url += '//';
-    if (aParsedUrl.auth) {
-      url += aParsedUrl.auth + '@';
-    }
-    if (aParsedUrl.host) {
-      url += aParsedUrl.host;
-    }
-    if (aParsedUrl.port) {
-      url += ":" + aParsedUrl.port
-    }
-    if (aParsedUrl.path) {
-      url += aParsedUrl.path;
-    }
-    return url;
-  }
-  exports.urlGenerate = urlGenerate;
-
-  /**
-   * Normalizes a path, or the path portion of a URL:
-   *
-   * - Replaces consequtive slashes with one slash.
-   * - Removes unnecessary '.' parts.
-   * - Removes unnecessary '<dir>/..' parts.
-   *
-   * Based on code in the Node.js 'path' core module.
-   *
-   * @param aPath The path or url to normalize.
-   */
-  function normalize(aPath) {
-    var path = aPath;
-    var url = urlParse(aPath);
-    if (url) {
-      if (!url.path) {
-        return aPath;
-      }
-      path = url.path;
-    }
-    var isAbsolute = (path.charAt(0) === '/');
-
-    var parts = path.split(/\/+/);
-    for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
-      part = parts[i];
-      if (part === '.') {
-        parts.splice(i, 1);
-      } else if (part === '..') {
-        up++;
-      } else if (up > 0) {
-        if (part === '') {
-          // The first part is blank if the path is absolute. Trying to go
-          // above the root is a no-op. Therefore we can remove all '..' parts
-          // directly after the root.
-          parts.splice(i + 1, up);
-          up = 0;
-        } else {
-          parts.splice(i, 2);
-          up--;
-        }
-      }
-    }
-    path = parts.join('/');
-
-    if (path === '') {
-      path = isAbsolute ? '/' : '.';
-    }
-
-    if (url) {
-      url.path = path;
-      return urlGenerate(url);
-    }
-    return path;
-  }
-  exports.normalize = normalize;
-
-  /**
-   * Joins two paths/URLs.
-   *
-   * @param aRoot The root path or URL.
-   * @param aPath The path or URL to be joined with the root.
-   *
-   * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
-   *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended
-   *   first.
-   * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
-   *   is updated with the result and aRoot is returned. Otherwise the result
-   *   is returned.
-   *   - If aPath is absolute, the result is aPath.
-   *   - Otherwise the two paths are joined with a slash.
-   * - Joining for example 'http://' and 'www.example.com' is also supported.
-   */
-  function join(aRoot, aPath) {
-    if (aRoot === "") {
-      aRoot = ".";
-    }
-    if (aPath === "") {
-      aPath = ".";
-    }
-    var aPathUrl = urlParse(aPath);
-    var aRootUrl = urlParse(aRoot);
-    if (aRootUrl) {
-      aRoot = aRootUrl.path || '/';
-    }
-
-    // `join(foo, '//www.example.org')`
-    if (aPathUrl && !aPathUrl.scheme) {
-      if (aRootUrl) {
-        aPathUrl.scheme = aRootUrl.scheme;
-      }
-      return urlGenerate(aPathUrl);
-    }
-
-    if (aPathUrl || aPath.match(dataUrlRegexp)) {
-      return aPath;
-    }
-
-    // `join('http://', 'www.example.com')`
-    if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
-      aRootUrl.host = aPath;
-      return urlGenerate(aRootUrl);
-    }
-
-    var joined = aPath.charAt(0) === '/'
-      ? aPath
-      : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
-
-    if (aRootUrl) {
-      aRootUrl.path = joined;
-      return urlGenerate(aRootUrl);
-    }
-    return joined;
-  }
-  exports.join = join;
-
-  /**
-   * Make a path relative to a URL or another path.
-   *
-   * @param aRoot The root path or URL.
-   * @param aPath The path or URL to be made relative to aRoot.
-   */
-  function relative(aRoot, aPath) {
-    if (aRoot === "") {
-      aRoot = ".";
-    }
-
-    aRoot = aRoot.replace(/\/$/, '');
-
-    // XXX: It is possible to remove this block, and the tests still pass!
-    var url = urlParse(aRoot);
-    if (aPath.charAt(0) == "/" && url && url.path == "/") {
-      return aPath.slice(1);
-    }
-
-    return aPath.indexOf(aRoot + '/') === 0
-      ? aPath.substr(aRoot.length + 1)
-      : aPath;
-  }
-  exports.relative = relative;
-
-  /**
-   * Because behavior goes wacky when you set `__proto__` on objects, we
-   * have to prefix all the strings in our set with an arbitrary character.
-   *
-   * See https://github.com/mozilla/source-map/pull/31 and
-   * https://github.com/mozilla/source-map/issues/30
-   *
-   * @param String aStr
-   */
-  function toSetString(aStr) {
-    return '$' + aStr;
-  }
-  exports.toSetString = toSetString;
-
-  function fromSetString(aStr) {
-    return aStr.substr(1);
-  }
-  exports.fromSetString = fromSetString;
-
-  function strcmp(aStr1, aStr2) {
-    var s1 = aStr1 || "";
-    var s2 = aStr2 || "";
-    return (s1 > s2) - (s1 < s2);
-  }
-
-  /**
-   * Comparator between two mappings where the original positions are compared.
-   *
-   * Optionally pass in `true` as `onlyCompareGenerated` to consider two
-   * mappings with the same original source/line/column, but different generated
-   * line and column the same. Useful when searching for a mapping with a
-   * stubbed out mapping.
-   */
-  function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
-    var cmp;
-
-    cmp = strcmp(mappingA.source, mappingB.source);
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.originalLine - mappingB.originalLine;
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.originalColumn - mappingB.originalColumn;
-    if (cmp || onlyCompareOriginal) {
-      return cmp;
-    }
-
-    cmp = strcmp(mappingA.name, mappingB.name);
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.generatedLine - mappingB.generatedLine;
-    if (cmp) {
-      return cmp;
-    }
-
-    return mappingA.generatedColumn - mappingB.generatedColumn;
-  };
-  exports.compareByOriginalPositions = compareByOriginalPositions;
-
-  /**
-   * Comparator between two mappings where the generated positions are
-   * compared.
-   *
-   * Optionally pass in `true` as `onlyCompareGenerated` to consider two
-   * mappings with the same generated line and column, but different
-   * source/name/original line and column the same. Useful when searching for a
-   * mapping with a stubbed out mapping.
-   */
-  function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {
-    var cmp;
-
-    cmp = mappingA.generatedLine - mappingB.generatedLine;
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.generatedColumn - mappingB.generatedColumn;
-    if (cmp || onlyCompareGenerated) {
-      return cmp;
-    }
-
-    cmp = strcmp(mappingA.source, mappingB.source);
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.originalLine - mappingB.originalLine;
-    if (cmp) {
-      return cmp;
-    }
-
-    cmp = mappingA.originalColumn - mappingB.originalColumn;
-    if (cmp) {
-      return cmp;
-    }
-
-    return strcmp(mappingA.name, mappingB.name);
-  };
-  exports.compareByGeneratedPositions = compareByGeneratedPositions;
-
-});

+ 0 - 218
ParticleFilter/node_modules/ast-transform/node_modules/source-map/package.json

@@ -1,218 +0,0 @@
-{
-  "_args": [
-    [
-      {
-        "name": "source-map",
-        "raw": "source-map@~0.1.30",
-        "rawSpec": "~0.1.30",
-        "scope": null,
-        "spec": ">=0.1.30 <0.2.0",
-        "type": "range"
-      },
-      "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen"
-    ]
-  ],
-  "_from": "source-map@>=0.1.30 <0.2.0",
-  "_id": "source-map@0.1.43",
-  "_inCache": true,
-  "_installable": true,
-  "_location": "/ast-transform/source-map",
-  "_npmUser": {
-    "email": "fitzgen@gmail.com",
-    "name": "nickfitzgerald"
-  },
-  "_npmVersion": "1.4.9",
-  "_phantomChildren": {},
-  "_requested": {
-    "name": "source-map",
-    "raw": "source-map@~0.1.30",
-    "rawSpec": "~0.1.30",
-    "scope": null,
-    "spec": ">=0.1.30 <0.2.0",
-    "type": "range"
-  },
-  "_requiredBy": [
-    "/ast-transform/escodegen"
-  ],
-  "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-  "_shasum": "c24bc146ca517c1471f5dacbe2571b2b7f9e3346",
-  "_shrinkwrap": null,
-  "_spec": "source-map@~0.1.30",
-  "_where": "/Users/gabrielcapella/OneDrive/Graduação/USP-BCC/MAC0318M/2018/MapaMonteCarlo/node_modules/ast-transform/node_modules/escodegen",
-  "author": {
-    "email": "nfitzgerald@mozilla.com",
-    "name": "Nick Fitzgerald"
-  },
-  "bugs": {
-    "url": "https://github.com/mozilla/source-map/issues"
-  },
-  "contributors": [
-    {
-      "email": "tobias.koppers@googlemail.com",
-      "name": "Tobias Koppers"
-    },
-    {
-      "email": "duncan@dweebd.com",
-      "name": "Duncan Beevers"
-    },
-    {
-      "email": "scrane@mozilla.com",
-      "name": "Stephen Crane"
-    },
-    {
-      "email": "seddon.ryan@gmail.com",
-      "name": "Ryan Seddon"
-    },
-    {
-      "email": "miles.elam@deem.com",
-      "name": "Miles Elam"
-    },
-    {
-      "email": "mihai.bazon@gmail.com",
-      "name": "Mihai Bazon"
-    },
-    {
-      "email": "github.public.email@michael.ficarra.me",
-      "name": "Michael Ficarra"
-    },
-    {
-      "email": "todd@twolfson.com",
-      "name": "Todd Wolfson"
-    },
-    {
-      "email": "alexander@solovyov.net",
-      "name": "Alexander Solovyov"
-    },
-    {
-      "email": "fgnass@gmail.com",
-      "name": "Felix Gnass"
-    },
-    {
-      "email": "conrad.irwin@gmail.com",
-      "name": "Conrad Irwin"
-    },
-    {
-      "email": "usrbincc@yahoo.com",
-      "name": "usrbincc"
-    },
-    {
-      "email": "glasser@davidglasser.net",
-      "name": "David Glasser"
-    },
-    {
-      "email": "chase@newrelic.com",
-      "name": "Chase Douglas"
-    },
-    {
-      "email": "evan.exe@gmail.com",
-      "name": "Evan Wallace"
-    },
-    {
-      "email": "fayearthur@gmail.com",
-      "name": "Heather Arthur"
-    },
-    {
-      "email": "hughskennedy@gmail.com",
-      "name": "Hugh Kennedy"
-    },
-    {
-      "email": "glasser@davidglasser.net",
-      "name": "David Glasser"
-    },
-    {
-      "email": "simon.lydell@gmail.com",
-      "name": "Simon Lydell"
-    },
-    {
-      "email": "jellyes2@gmail.com",
-      "name": "Jmeas Smith"
-    },
-    {
-      "email": "mzgoddard@gmail.com",
-      "name": "Michael Z Goddard"
-    },
-    {
-      "email": "azu@users.noreply.github.com",
-      "name": "azu"
-    },
-    {
-      "email": "john@gozde.ca",
-      "name": "John Gozde"
-    },
-    {
-      "email": "akirkton@truefitinnovation.com",
-      "name": "Adam Kirkton"
-    },
-    {
-      "email": "christopher.montgomery@dowjones.com",
-      "name": "Chris Montgomery"
-    },
-    {
-      "email": "jryans@gmail.com",
-      "name": "J. Ryan Stinnett"
-    },
-    {
-      "email": "jherrington@walmartlabs.com",
-      "name": "Jack Herrington"
-    },
-    {
-      "email": "jeffpalentine@gmail.com",
-      "name": "Chris Truter"
-    },
-    {
-      "email": "daniel@danielespeset.com",
-      "name": "Daniel Espeset"
-    }
-  ],
-  "dependencies": {
-    "amdefine": ">=0.0.4"
-  },
-  "description": "Generates and consumes source maps",
-  "devDependencies": {
-    "dryice": ">=0.4.8"
-  },
-  "directories": {
-    "lib": "./lib"
-  },
-  "dist": {
-    "shasum": "c24bc146ca517c1471f5dacbe2571b2b7f9e3346",
-    "tarball": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
-  },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "homepage": "https://github.com/mozilla/source-map",
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://opensource.org/licenses/BSD-3-Clause"
-    }
-  ],
-  "main": "./lib/source-map.js",
-  "maintainers": [
-    {
-      "email": "mozilla-developer-tools@googlegroups.com",
-      "name": "mozilla-devtools"
-    },
-    {
-      "email": "dherman@mozilla.com",
-      "name": "mozilla"
-    },
-    {
-      "email": "fitzgen@gmail.com",
-      "name": "nickfitzgerald"
-    }
-  ],
-  "name": "source-map",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
-  "repository": {
-    "type": "git",
-    "url": "git+ssh://git@github.com/mozilla/source-map.git"
-  },
-  "scripts": {
-    "build": "node Makefile.dryice.js",
-    "test": "node test/run-tests.js"
-  },
-  "version": "0.1.43"
-}

+ 0 - 62
ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/run-tests.js

@@ -1,62 +0,0 @@
-#!/usr/bin/env node
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-var assert = require('assert');
-var fs = require('fs');
-var path = require('path');
-var util = require('./source-map/util');
-
-function run(tests) {
-  var total = 0;
-  var passed = 0;
-
-  for (var i = 0; i < tests.length; i++) {
-    for (var k in tests[i].testCase) {
-      if (/^test/.test(k)) {
-        total++;
-        try {
-          tests[i].testCase[k](assert, util);
-          passed++;
-        }
-        catch (e) {
-          console.log('FAILED ' + tests[i].name + ': ' + k + '!');
-          console.log(e.stack);
-        }
-      }
-    }
-  }
-
-  console.log('');
-  console.log(passed + ' / ' + total + ' tests passed.');
-  console.log('');
-
-  return total - passed;
-}
-
-function isTestFile(f) {
-  var testToRun = process.argv[2];
-  return testToRun
-    ? path.basename(testToRun) === f
-    : /^test\-.*?\.js/.test(f);
-}
-
-function toModule(f) {
-  return './source-map/' + f.replace(/\.js$/, '');
-}
-
-var requires = fs.readdirSync(path.join(__dirname, 'source-map'))
-  .filter(isTestFile)
-  .map(toModule);
-
-var code = run(requires.map(require).map(function (mod, i) {
-  return {
-    name: requires[i],
-    testCase: mod
-  };
-}));
-
-process.exit(code);

+ 0 - 26
ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-api.js

@@ -1,26 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2012 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var sourceMap;
-  try {
-    sourceMap = require('../../lib/source-map');
-  } catch (e) {
-    sourceMap = {};
-    Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);
-  }
-
-  exports['test that the api is properly exposed in the top level'] = function (assert, util) {
-    assert.equal(typeof sourceMap.SourceMapGenerator, "function");
-    assert.equal(typeof sourceMap.SourceMapConsumer, "function");
-    assert.equal(typeof sourceMap.SourceNode, "function");
-  };
-
-});

+ 0 - 104
ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-array-set.js

@@ -1,104 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var ArraySet = require('../../lib/source-map/array-set').ArraySet;
-
-  function makeTestSet() {
-    var set = new ArraySet();
-    for (var i = 0; i < 100; i++) {
-      set.add(String(i));
-    }
-    return set;
-  }
-
-  exports['test .has() membership'] = function (assert, util) {
-    var set = makeTestSet();
-    for (var i = 0; i < 100; i++) {
-      assert.ok(set.has(String(i)));
-    }
-  };
-
-  exports['test .indexOf() elements'] = function (assert, util) {
-    var set = makeTestSet();
-    for (var i = 0; i < 100; i++) {
-      assert.strictEqual(set.indexOf(String(i)), i);
-    }
-  };
-
-  exports['test .at() indexing'] = function (assert, util) {
-    var set = makeTestSet();
-    for (var i = 0; i < 100; i++) {
-      assert.strictEqual(set.at(i), String(i));
-    }
-  };
-
-  exports['test creating from an array'] = function (assert, util) {
-    var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']);
-
-    assert.ok(set.has('foo'));
-    assert.ok(set.has('bar'));
-    assert.ok(set.has('baz'));
-    assert.ok(set.has('quux'));
-    assert.ok(set.has('hasOwnProperty'));
-
-    assert.strictEqual(set.indexOf('foo'), 0);
-    assert.strictEqual(set.indexOf('bar'), 1);
-    assert.strictEqual(set.indexOf('baz'), 2);
-    assert.strictEqual(set.indexOf('quux'), 3);
-
-    assert.strictEqual(set.at(0), 'foo');
-    assert.strictEqual(set.at(1), 'bar');
-    assert.strictEqual(set.at(2), 'baz');
-    assert.strictEqual(set.at(3), 'quux');
-  };
-
-  exports['test that you can add __proto__; see github issue #30'] = function (assert, util) {
-    var set = new ArraySet();
-    set.add('__proto__');
-    assert.ok(set.has('__proto__'));
-    assert.strictEqual(set.at(0), '__proto__');
-    assert.strictEqual(set.indexOf('__proto__'), 0);
-  };
-
-  exports['test .fromArray() with duplicates'] = function (assert, util) {
-    var set = ArraySet.fromArray(['foo', 'foo']);
-    assert.ok(set.has('foo'));
-    assert.strictEqual(set.at(0), 'foo');
-    assert.strictEqual(set.indexOf('foo'), 0);
-    assert.strictEqual(set.toArray().length, 1);
-
-    set = ArraySet.fromArray(['foo', 'foo'], true);
-    assert.ok(set.has('foo'));
-    assert.strictEqual(set.at(0), 'foo');
-    assert.strictEqual(set.at(1), 'foo');
-    assert.strictEqual(set.indexOf('foo'), 0);
-    assert.strictEqual(set.toArray().length, 2);
-  };
-
-  exports['test .add() with duplicates'] = function (assert, util) {
-    var set = new ArraySet();
-    set.add('foo');
-
-    set.add('foo');
-    assert.ok(set.has('foo'));
-    assert.strictEqual(set.at(0), 'foo');
-    assert.strictEqual(set.indexOf('foo'), 0);
-    assert.strictEqual(set.toArray().length, 1);
-
-    set.add('foo', true);
-    assert.ok(set.has('foo'));
-    assert.strictEqual(set.at(0), 'foo');
-    assert.strictEqual(set.at(1), 'foo');
-    assert.strictEqual(set.indexOf('foo'), 0);
-    assert.strictEqual(set.toArray().length, 2);
-  };
-
-});

+ 0 - 23
ParticleFilter/node_modules/ast-transform/node_modules/source-map/test/source-map/test-base64-vlq.js

@@ -1,23 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; -*- */
-/*
- * Copyright 2011 Mozilla Foundation and contributors
- * Licensed under the New BSD license. See LICENSE or:
- * http://opensource.org/licenses/BSD-3-Clause
- */
-if (typeof define !== 'function') {
-    var define = require('amdefine')(module, require);
-}
-define(function (require, exports, module) {
-
-  var base64VLQ = require('../../lib/source-map/base64-vlq');
-
-  exports['test normal encoding and decoding'] = function (assert, util) {
-    var result = {};
-    for (var i = -255; i < 256; i++) {
-      base64VLQ.decode(base64VLQ.encode(i), result);
-      assert.equal(result.value, i);
-      assert.equal(result.rest, "");
-    }
-  };
-
-});

Some files were not shown because too many files changed in this diff