Compare commits

..

67 Commits

Author SHA1 Message Date
Geoffrey Booth
943579a239 1.12.8 (#4801)
* 1.12.8 changelog

* 1.12.8 output
2017-11-29 22:51:32 -08:00
Geoffrey Booth
8bb89d819b Backport #4783, fix for export default followed by an implicit object (#4800) 2017-11-28 21:25:41 -08:00
Geoffrey Booth
f301b0413c [CS1] Add postinstall message for direct installs of ‘coffee-script’ (#4759)
[CS1] Add postinstall message for installs of ‘coffee-script’ (with hyphen)
2017-11-27 23:43:23 -08:00
Geoffrey Booth
c5f43141dc [CS1] Travis CI for 1.x (#4797)
* Update dependencies, use ~ notation for compatibility with Travis Node 0.8

* First attempt at .travis.yml for 1.x

* Drop Node 0.8 because dev dependencies want a higher Node runtime version; run all tests in harmony mode

* Closure Compiler requires Node 4+

* Exclude the test files that use template literal syntax for Node < 4, where that syntax is unsupported

* Filter out incompatible tests for Node 0.10
2017-11-27 10:33:01 -08:00
Geoffrey Booth
1ad9c61bd0 Revise v1 docs to reflect that v2 is out; update paths to reflect that the v2 docs are now the primary docs, and the v1 docs only live under /v1/ 2017-09-16 21:56:36 -07:00
Geoffrey Booth
249cc59008 Remove v2 docs 2017-09-16 21:42:28 -07:00
Geoffrey Booth
e7073bc5d9 Update CS2 docs per #4688 2017-09-07 08:05:04 -07:00
Geoffrey Booth
458440e57b 2.0.0-beta5 docs 2017-09-02 12:55:56 -07:00
zdenko
6cea181ff1 [CS1] fix #4260 and #1349: splat error with soak properties or expressions (#4643)
* fix splat error with soak properties or expressions

* Add test based on #4260

* Add test based on #1349

* remove 'void 0' replacement; add Splat::compileNode
2017-08-27 16:25:13 -07:00
Geoffrey Booth
e3c2c0397a 2.0.0-beta4 docs 2017-08-03 18:18:31 -07:00
Geoffrey Booth
27f21a34e2 1.12.7 (#4617)
* 1.12.7: Update changelog and version number

* Update dependencies

* Improve formatting

* Updated output

* Disable regex Unicode test for runtimes lacking support. Fixes #4610.

* More better

* Bump date
2017-07-16 23:53:22 -07:00
Julian Rosse
799bc6e81c Restrict indented return arg to object (#4605)
* throw multiline implicit object [Fixes #3199]

* only return

* fix from code review

* test error on non-object

* test error on call indented non-object

* unique test names
2017-07-09 10:29:47 -07:00
Julian Rosse
e4bf1631e1 refine sameLine implicit object tagging [Fixes #4568] (#4598) 2017-07-04 11:31:51 -07:00
Geoffrey Booth
9d82bf74f3 Add more features to the list of reasons to check out CoffeeScript 2 2017-06-30 10:56:34 -07:00
Geoffrey Booth
ebe8493020 Update v2 docs for 2.0.0-beta3 2017-06-30 10:52:11 -07:00
Simon Lydell
b1b34d328a Merge pull request #4585 from helixbass/iss4283_error_message_implicit_call
Fix #4283: error message for implicit call
2017-06-26 07:22:34 +02:00
Julian Rosse
8234ce2712 error message for implicit call [Fixes #4283] 2017-06-25 13:39:45 -05:00
Michal Srb
48c7debe5a Fix REPL assignment (#4559) 2017-06-07 11:37:25 -07:00
Geoffrey Booth
cd6daf0b79 2.0.0-beta2 docs 2017-05-16 18:59:02 -07:00
Geoffrey Booth
f0e9837dca 1.12.6 missing updated output 2017-05-14 21:22:48 -07:00
Geoffrey Booth
f661f91323 1.12.6 (#4548)
* Un-prefer global (#4543)

* 1.12.6 changelog; update NPM module in documentation to be `coffeescript` instead of `coffee-script`; update installation to add note about global vs local `coffee` command

* Update packages

* Updated output

* Simplify changelog
2017-05-14 11:12:50 -07:00
Michal Srb
e00fa5d5f8 Fix #4533: chained calls incorrectly wrapping enclosing implicit objects (#4534) 2017-05-12 06:12:06 -07:00
Michal Srb
51c06574a0 Fix #4150: Correctly outdent ternary followed by method call (#4535) 2017-05-02 23:00:21 -07:00
Geoffrey Booth
26cb24acc8 return and export default can now accept implicit objects (#4532) 2017-05-01 19:34:19 -07:00
Julian Rosse
ac1b2b5c30 Iss4248 unicode code point escapes (cleanup) (#4522)
* Fix #4248: Unicode code point escapes

* rewrite unicode code point escapes as unicode escapes

* smarter defaults

* and resimplify

* correct surrogate pairs

* fixes from code review

* handle adjacent code point escapes

* smarter regex

* fix from code review

* refactor toJS() to shared test helper
2017-04-22 11:10:10 -07:00
Julian Rosse
96b6c5f65a Fix #4248: Unicode code point escapes (#4498) 2017-04-20 08:03:06 +02:00
Geoffrey Booth
bfce05438b Fix parenthesized conditions in if-else assignment (#4519)
* Fix parenthesized conditions in if-else assignment

* Add compiled output

* Use ‘is’ instead of ‘==‘; ‘right’ is a poor name when you mean ‘correct,’ not the right-hand side of the assignments in this test
2017-04-19 00:10:20 -07:00
Geoffrey Booth
ff60e6a6ce fix 'future reserved words' test (#4518)
Added the missing '#'s for correct string interpolation. Seems like this went unnoticed because in these test cases, the `check` function tests if the compilation fails, which it does either way.
2017-04-19 08:48:02 +02:00
Geoffrey Booth
0da9d711c5 Fix broken links, update redirected links (#4505)
* Fix broken links, update redirected links

* A few more fixed links

* Update v2 docs
2017-04-17 19:43:10 -07:00
Geoffrey Booth
fecdbac291 A particular REPL test is broken in Node 4.8.2 because of a regression that was fixed in Node 5.11.0; just disable the test for Node < 6. Fixes #4502. (#4510) 2017-04-17 12:49:30 -07:00
Simon Lydell
473e8a1841 Merge pull request #4507 from GeoffreyBooth/tests-exit-code
Failing tests exit code; separate building and testing browser compiler
2017-04-16 09:40:08 +02:00
Geoffrey Booth
faf6d179be cake build:browser should just assemble the browser build, not also test it; add cake build:browser:full to additionally run the tests 2017-04-15 13:51:11 -07:00
Geoffrey Booth
d141d5c9ae If the tests fail, return a non-zero exit code 2017-04-15 13:44:14 -07:00
Geoffrey Booth
a36b45434f Merge branch 'master' of github.com:jashkenas/coffeescript 2017-04-13 20:40:24 -07:00
Geoffrey Booth
2ec1a1851d Update 2.0.0-beta1 docs 2017-04-13 20:37:55 -07:00
Geoffrey Booth
72cf485dce 1.12.5 (#4495)
* Use Markdown-It instead of Marked for generating the docs; update package versions

* Fix links to v2 docs

* Bump version to 1.12.5; update changelog and compiled docs output

* Update compiled output for 1.12.5

* Improve styling for tables
2017-04-10 09:30:36 -07:00
Julian Rosse
fb60070647 Fix #4491: import- and export-specific lexing should stop (#4492)
* Fix #4491: import- and export-specific lexing should stop

* split up tests

* fixes from code review
2017-04-09 02:53:43 -07:00
Simon Lydell
90ec761f95 Merge pull request #4490 from helixbass/iss4489_regex_octal_escape_sequence_bug
Fix #4489: Regex octal escape sequence bug
2017-04-07 10:40:11 +02:00
Julian Rosse
050aaa40f8 Fix #4489: Regex octal escape sequence bug 2017-04-06 19:39:13 -04:00
Simon Lydell
c1e3c02d13 Merge pull request #4483 from GeoffreyBooth/fix-export-default
Fix #4451 and 4481: `default` in `export` statements
2017-04-03 07:42:50 +02:00
Geoffrey Booth
dde7b0d98a Fix #4481: Export an imported member named default 2017-04-02 17:56:51 -07:00
Geoffrey Booth
98d1644c5b Fix #4451: Treat default as a keyword in an export statement only when it follows export or as 2017-04-02 17:36:25 -07:00
Geoffrey Booth
ca0fd229e1 Update v2 NPM installation instructions 2017-02-22 10:58:10 -08:00
Jeremy Ashkenas
a9bd53d77f Merge pull request #4448 from GeoffreyBooth/2-docs-on-master
2 docs on master
2017-02-22 13:16:44 -05:00
Geoffrey
f8ce1a8183 Teaser for CoffeeScript 2, link to 2 docs 2017-02-21 20:58:31 -08:00
Geoffrey Booth
cee1076e1d Copy the generated output CS2 docs onto master so that GitHub pages can publish them 2017-02-21 08:35:58 -08:00
Simon Lydell
91e3f7255c Merge pull request #4441 from GeoffreyBooth/1.12.4
1.12.4
2017-02-18 09:47:25 +01:00
Geoffrey Booth
664c7a4743 Update compiled output 2017-02-18 02:54:41 -05:00
Geoffrey Booth
f018e94be9 Update changelog 2017-02-18 02:54:15 -05:00
Geoffrey Booth
79d38cc30b Bump dependency version 2017-02-18 02:53:56 -05:00
Geoffrey Booth
ee8f022317 Merge branch 'master' of github.com:jashkenas/coffeescript into 1.12.4
# Conflicts:
#	Cakefile
2017-02-18 02:48:57 -05:00
Geoffrey Booth
98c1a3a045 Refactor Cake tasks (#4440)
* Node comes with NPM nowadays, so there’s not really a reason to install CoffeeScript the non-NPM way

* The cake documentation tasks should each have build and watch modes following the same form

* Refactor the build tasks to be more foolproof, including the parser unless it’s explicitly excluded

* Abstract out testing built code, to prepare for watching the build task

* Cake task to cut a new release

* cake build:watch, based on https://github.com/GeoffreyBooth/coffeescript-gulp

* Coding style

* Tests shouldn’t write files in a watched folder

* Don’t crash if the REPL test history file is already gone by the time we try to delete it
2017-02-18 02:47:02 -05:00
Simon Lydell
d84c94dc6d Merge pull request #4445 from alangpierce/upstream-fix-new-location-data
Properly update location data when setting a call to use `new`
2017-02-17 18:21:23 +01:00
Simon Lydell
4f714cc7f9 Merge pull request #4444 from alangpierce/upstream-fix-heregex-end-location
Place ending heregex tokens one index earlier
2017-02-17 18:21:08 +01:00
Alan Pierce
fbc77f7445 Properly update location data when setting a call to use new
This is an upstream port of https://github.com/decaffeinate/coffeescript/pull/24

In a case like `new A().b(c)`, the jison structure ends up being different from
the resulting AST. To the jison parser, this is the `new` unary operator applied
to the expression `A().b(c)`. When the unary operator is applied, the
`Call.prototype.newInstance` function traverses into the leftmost function call
and sets the `isNew` flag to true, and the `Op` constructor returns the `Call`
node so that the call is used in place of the unary operator. However, the code
wasn't updating the node location data, so this commit fixes that.

It's sort of hard to get the location data in `newInstance`, so we set a flag on
every affected node in `newInstance` and override `updateLocationDataIfMissing`
(which is called with the location data after the fact) so that it updates just
the starting position.
2017-02-16 20:43:19 -08:00
Alan Pierce
f757614334 Place ending heregex tokens one index earlier
This is an upstream port of https://github.com/decaffeinate/coffeescript/pull/17

The lexer generates fake tokens for interpolated heregexes, and the ending
tokens were being placed where the start (inclusive) and end (inclusive) index
were one past the end of the heregex. This meant that in a case like
`[a ///#{b}///]`, the end tokens of the heregex and also the implicit function
call end were all being placed at the `]`, so the AST location data would say
that the function call ends at the end of the `]`.

To fix, I can just subtract 1 from the position of those ending heregex tokens
so that their end lines up with the end of the heregex itself. This is similar
to previous fixes that changed `OUTDENT` and `CALL_END` tokens so that the end
of the token lines up with the end of the AST node.
2017-02-16 20:32:41 -08:00
Geoffrey Booth
94023d88ca Updated compiled output for 1.12.4 2017-02-14 23:30:32 -08:00
Geoffrey Booth
4547cbac3a Bump version to 1.12.4 and update changelog 2017-02-14 23:30:10 -08:00
Geoffrey Booth
856bf5e68c cake build:watch, based on https://github.com/GeoffreyBooth/coffeescript-gulp 2017-02-14 19:13:41 -08:00
Geoffrey
f4a1172b6f Cake task to cut a new release 2017-02-13 21:58:23 -08:00
Geoffrey
9866224dba Abstract out testing built code, to prepare for watching the build task 2017-02-13 21:49:04 -08:00
Geoffrey
8a271995c7 Refactor the build tasks to be more foolproof, including the parser unless it’s explicitly excluded 2017-02-13 21:05:12 -08:00
Geoffrey
c06a0584ff The cake documentation tasks should each have build and watch modes following the same form 2017-02-13 21:04:14 -08:00
Geoffrey
37e6513c02 Node comes with NPM nowadays, so there’s not really a reason to install CoffeeScript the non-NPM way 2017-02-13 20:31:58 -08:00
Ruben Rodriguez
3d0d04efe2 getSourceMap needs to pass literate flag to compile() (#4435) 2017-02-04 19:33:09 -08:00
Simon Lydell
87e537c917 Merge pull request #4432 from connec/fix-export-declarations
Fix "export" squashing variable declarations
2017-01-26 16:58:43 +01:00
Chris Connelly
b61324058d Fix "export" squashing variable declarations
Exports that referenced variables assigned in the module would prevent
the referenced variables from being declared, resulting in
ReferenceErrors at run time.

Fixes #4394.
2017-01-26 15:27:41 +00:00
78 changed files with 3715 additions and 1961 deletions

21
.travis.yml Normal file
View File

@@ -0,0 +1,21 @@
language: node_js
node_js:
- 0.10
- 0.12
- 4
- 6
- 8
- node
cache:
directories:
- node_modules
script:
- node ./bin/cake build:except-parser
- node ./bin/cake build:parser
- node --harmony ./bin/cake build:full
- node ./bin/cake build:browser
- node --harmony ./bin/cake test
- node --harmony ./bin/cake test:browser

227
Cakefile
View File

@@ -24,65 +24,31 @@ header = """
*/
"""
# Used in folder names like docs/v1
# Used in folder names like `docs/v1`.
majorVersion = parseInt CoffeeScript.VERSION.split('.')[0], 10
# Build the CoffeeScript language from source.
build = (cb) ->
files = fs.readdirSync 'src'
files = ('src/' + file for file in files when file.match(/\.(lit)?coffee$/))
run ['-c', '-o', 'lib/coffee-script'].concat(files), cb
# Run a CoffeeScript through our node/coffee interpreter.
run = (args, cb) ->
proc = spawn 'node', ['bin/coffee'].concat(args)
proc.stderr.on 'data', (buffer) -> console.log buffer.toString()
proc.on 'exit', (status) ->
process.exit(1) if status isnt 0
cb() if typeof cb is 'function'
# Log a message with a color.
log = (message, color, explanation) ->
console.log color + message + reset + ' ' + (explanation or '')
option '-p', '--prefix [DIR]', 'set the installation prefix for `cake install`'
task 'install', 'install CoffeeScript into /usr/local (or --prefix)', (options) ->
base = options.prefix or '/usr/local'
lib = "#{base}/lib/coffee-script"
bin = "#{base}/bin"
node = "~/.node_libraries/coffee-script"
console.log "Installing CoffeeScript to #{lib}"
console.log "Linking to #{node}"
console.log "Linking 'coffee' to #{bin}/coffee"
exec([
"mkdir -p #{lib} #{bin}"
"cp -rf bin lib LICENSE README.md package.json src #{lib}"
"ln -sfn #{lib}/bin/coffee #{bin}/coffee"
"ln -sfn #{lib}/bin/cake #{bin}/cake"
"mkdir -p ~/.node_libraries"
"ln -sfn #{lib}/lib/coffee-script #{node}"
].join(' && '), (err, stdout, stderr) ->
if err then console.log stderr.trim() else log 'done', green
)
spawnNodeProcess = (args, output = 'stderr', callback) ->
relayOutput = (buffer) -> console.log buffer.toString()
proc = spawn 'node', args
proc.stdout.on 'data', relayOutput if output is 'both' or output is 'stdout'
proc.stderr.on 'data', relayOutput if output is 'both' or output is 'stderr'
proc.on 'exit', (status) -> callback(status) if typeof callback is 'function'
# Run a CoffeeScript through our node/coffee interpreter.
run = (args, callback) ->
spawnNodeProcess ['bin/coffee'].concat(args), 'stderr', (status) ->
process.exit(1) if status isnt 0
callback() if typeof callback is 'function'
task 'build', 'build the CoffeeScript language from source', build
task 'build:full', 'rebuild the source twice, and run the tests', ->
build ->
build ->
csPath = './lib/coffee-script'
csDir = path.dirname require.resolve csPath
for mod of require.cache when csDir is mod[0 ... csDir.length]
delete require.cache[mod]
unless runTests require csPath
process.exit 1
task 'build:parser', 'rebuild the Jison parser (run build first)', ->
# Build the CoffeeScript language from source.
buildParser = ->
helpers.extend global, require 'util'
require 'jison'
parser = require('./lib/coffee-script/grammar').parser.generate()
@@ -95,8 +61,62 @@ task 'build:parser', 'rebuild the Jison parser (run build first)', ->
source = fs"""
fs.writeFileSync 'lib/coffee-script/parser.js', parser
buildExceptParser = (callback) ->
files = fs.readdirSync 'src'
files = ('src/' + file for file in files when file.match(/\.(lit)?coffee$/))
run ['-c', '-o', 'lib/coffee-script'].concat(files), callback
task 'build:browser', 'rebuild the merged script for inclusion in the browser', ->
build = (callback) ->
buildParser()
buildExceptParser callback
testBuiltCode = (watch = no) ->
csPath = './lib/coffee-script'
csDir = path.dirname require.resolve csPath
for mod of require.cache when csDir is mod[0 ... csDir.length]
delete require.cache[mod]
testResults = runTests require csPath
unless watch
process.exit 1 unless testResults
buildAndTest = (includingParser = yes, harmony = no) ->
process.stdout.write '\x1Bc' # Clear terminal screen.
execSync 'git checkout lib/*', stdio: [0,1,2] # Reset the generated compiler.
buildArgs = ['bin/cake']
buildArgs.push if includingParser then 'build' else 'build:except-parser'
log "building#{if includingParser then ', including parser' else ''}...", green
spawnNodeProcess buildArgs, 'both', ->
log 'testing...', green
testArgs = if harmony then ['--harmony'] else []
testArgs = testArgs.concat ['bin/cake', 'test']
spawnNodeProcess testArgs, 'both'
watchAndBuildAndTest = (harmony = no) ->
buildAndTest yes, harmony
fs.watch 'src/', interval: 200, (eventType, filename) ->
if eventType is 'change'
log "src/#{filename} changed, rebuilding..."
buildAndTest (filename is 'grammar.coffee'), harmony
fs.watch 'test/', {interval: 200, recursive: yes}, (eventType, filename) ->
if eventType is 'change'
log "test/#{filename} changed, rebuilding..."
buildAndTest no, harmony
task 'build', 'build the CoffeeScript compiler from source', build
task 'build:parser', 'build the Jison parser only', buildParser
task 'build:except-parser', 'build the CoffeeScript compiler, except for the Jison parser', buildExceptParser
task 'build:full', 'build the CoffeeScript compiler from source twice, and run the tests', ->
build ->
build testBuiltCode
task 'build:browser', 'merge the built scripts into a single file for use in a browser', ->
code = """
require['../../package.json'] = (function() {
return #{fs.readFileSync "./package.json"};
@@ -125,7 +145,8 @@ task 'build:browser', 'rebuild the merged script for inclusion in the browser',
}
}(this));
"""
unless process.env.MINIFY is 'false'
unless process.env.MINIFY is 'false' or process.versions.node.split('.')[0] is '0'
# Google Closure Compiler needs Node >= 4
{compiledCode: code} = require('google-closure-compiler-js').compile
jsCode: [
src: code
@@ -134,11 +155,20 @@ task 'build:browser', 'rebuild the merged script for inclusion in the browser',
outputFolder = "docs/v#{majorVersion}/browser-compiler"
fs.mkdirSync outputFolder unless fs.existsSync outputFolder
fs.writeFileSync "#{outputFolder}/coffee-script.js", header + '\n' + code
task 'build:browser:full', 'merge the built scripts into a single file for use in a browser, and test it', ->
invoke 'build:browser'
console.log "built ... running browser tests:"
invoke 'test:browser'
task 'build:watch', 'watch and continually rebuild the CoffeeScript compiler, running tests on each build', ->
watchAndBuildAndTest()
task 'doc:site', 'watch and continually rebuild the documentation for the website', ->
task 'build:watch:harmony', 'watch and continually rebuild the CoffeeScript compiler, running harmony tests on each build', ->
watchAndBuildAndTest yes
buildDocs = (watch = no) ->
# Constants
indexFile = 'documentation/index.html'
versionedSourceFolder = "documentation/v#{majorVersion}"
@@ -165,22 +195,26 @@ task 'doc:site', 'watch and continually rebuild the documentation for the websit
codeFor = require "./documentation/v#{majorVersion}/code.coffee"
htmlFor = ->
marked = require 'marked'
markdownRenderer = new marked.Renderer()
markdownRenderer.heading = (text, level) ->
"<h#{level}>#{text}</h#{level}>" # Dont let marked add an id
markdownRenderer.code = (code) ->
markdownRenderer = require('markdown-it')
html: yes
typographer: yes
# Add some custom overrides to Markdown-Its rendering, per
# https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md#renderer
defaultFence = markdownRenderer.renderer.rules.fence
markdownRenderer.renderer.rules.fence = (tokens, idx, options, env, slf) ->
code = tokens[idx].content
if code.indexOf('codeFor(') is 0 or code.indexOf('releaseHeader(') is 0
"<%= #{code} %>"
else
"<pre><code>#{code}</code></pre>" # Default
"<blockquote class=\"uneditable-code-block\">#{defaultFence.apply @, arguments}</blockquote>"
(file, bookmark) ->
md = fs.readFileSync "#{sectionsSourceFolder}/#{file}.md", 'utf-8'
md = md.replace /<%= releaseHeader %>/g, releaseHeader
md = md.replace /<%= majorVersion %>/g, majorVersion
md = md.replace /<%= fullVersion %>/g, CoffeeScript.VERSION
html = marked md, renderer: markdownRenderer
html = markdownRenderer.render md
html = _.template(html)
codeFor: codeFor()
releaseHeader: releaseHeader
@@ -211,12 +245,19 @@ task 'doc:site', 'watch and continually rebuild the documentation for the websit
fs.symlinkSync "v#{majorVersion}/index.html", 'docs/index.html'
catch exception
for target in [indexFile, versionedSourceFolder, examplesSourceFolder, sectionsSourceFolder]
fs.watch target, interval: 200, renderIndex
log 'watching...' , green
if watch
for target in [indexFile, versionedSourceFolder, examplesSourceFolder, sectionsSourceFolder]
fs.watch target, interval: 200, renderIndex
log 'watching...', green
task 'doc:site', 'build the documentation for the website', ->
buildDocs()
task 'doc:site:watch', 'watch and continually rebuild the documentation for the website', ->
buildDocs yes
task 'doc:test', 'watch and continually rebuild the browser-based tests', ->
buildDocTests = (watch = no) ->
# Constants
testFile = 'documentation/test.html'
testsSourceFolder = 'test'
@@ -254,14 +295,40 @@ task 'doc:test', 'watch and continually rebuild the browser-based tests', ->
fs.writeFileSync "#{outputFolder}/test.html", output
log 'compiled', green, "#{testFile} → #{outputFolder}/test.html"
for target in [testFile, testsSourceFolder]
fs.watch target, interval: 200, renderTest
log 'watching...' , green
if watch
for target in [testFile, testsSourceFolder]
fs.watch target, interval: 200, renderTest
log 'watching...', green
task 'doc:test', 'build the browser-based tests', ->
buildDocTests()
task 'doc:test:watch', 'watch and continually rebuild the browser-based tests', ->
buildDocTests yes
task 'doc:source', 'rebuild the annotated source documentation', ->
exec "node_modules/docco/bin/docco src/*.*coffee --output docs/v#{majorVersion}/annotated-source", (err) -> throw err if err
buildAnnotatedSource = (watch = no) ->
do generateAnnotatedSource = ->
exec "node_modules/docco/bin/docco src/*.*coffee --output docs/v#{majorVersion}/annotated-source", (err) -> throw err if err
log 'generated', green, "annotated source in docs/v#{majorVersion}/annotated-source/"
if watch
fs.watch 'src/', interval: 200, generateAnnotatedSource
log 'watching...', green
task 'doc:source', 'build the annotated source documentation', ->
buildAnnotatedSource()
task 'doc:source:watch', 'watch and continually rebuild the annotated source documentation', ->
buildAnnotatedSource yes
task 'release', 'build and test the CoffeeScript source, and build the documentation', ->
invoke 'build:full'
invoke 'build:browser:full'
invoke 'doc:site'
invoke 'doc:test'
invoke 'doc:source'
task 'bench', 'quick benchmark of compilation time', ->
{Rewriter} = require './lib/coffee-script/rewriter'
@@ -331,6 +398,24 @@ runTests = (CoffeeScript) ->
# Run every test in the `test` folder, recording failures.
files = fs.readdirSync 'test'
# If generator syntax isnt supported (Node < 0.12 harmony), filter out the tests that use it.
try
new Function('(function*(){}())')()
catch
files.splice files.indexOf('generators.coffee'), 1
# If `for-of` syntax isnt supported (Node < 0.12), filter out the tests that use it.
try
new Function('for (a of []) {}')()
catch
files.splice files.indexOf('arrays.coffee'), 1
files.splice files.indexOf('ranges.coffee'), 1
files.splice files.indexOf('scope.coffee'), 1
# If template literal syntax isnt supported (Node < 4), filter out the tests that use it.
try
new Function('var a = ``')()
catch
files.splice files.indexOf('javascript_literals.coffee'), 1
files.splice files.indexOf('tagged_template_literals.coffee'), 1
for file in files when helpers.isCoffee file
literate = helpers.isLiterate file
@@ -344,7 +429,8 @@ runTests = (CoffeeScript) ->
task 'test', 'run the CoffeeScript language test suite', ->
runTests CoffeeScript
testResults = runTests CoffeeScript
process.exit 1 unless testResults
task 'test:browser', 'run the test suite against the merged browser script', ->
@@ -352,4 +438,5 @@ task 'test:browser', 'run the test suite against the merged browser script', ->
result = {}
global.testingBrowser = yes
(-> eval source).call result
runTests result.CoffeeScript
testResults = runTests result.CoffeeScript
process.exit 1 unless testResults

View File

@@ -1,62 +1,5 @@
{
} } {
{ { } }
} }{ {
{ }{ } } _____ __ __
{ }{ }{ { } / ____| / _|/ _|
.- { { } { }} -. | | ___ | |_| |_ ___ ___
( { } { } { } } ) | | / _ \| _| _/ _ \/ _ \
|`-..________ ..-'| | |___| (_) | | | || __/ __/
| | \_____\___/|_| |_| \___|\___|
| ;--.
| (__ \ _____ _ _
| | ) ) / ____| (_) | |
| |/ / | (___ ___ _ __ _ _ __ | |_
| ( / \___ \ / __| '__| | '_ \| __|
| |/ ____) | (__| | | | |_) | |_
| | |_____/ \___|_| |_| .__/ \__|
`-.._________..-' | |
|_|
## CoffeeScript has moved!
CoffeeScript is a little language that compiles into JavaScript.
CoffeeScript on NPM has moved to `coffeescript` (no hyphen). Please update references to `coffee-script` to use `coffeescript` instead.
## Installation
If you have the node package manager, npm, installed:
```shell
npm install -g coffee-script
```
Leave off the `-g` if you don't wish to install globally. If you don't wish to use npm:
```shell
git clone https://github.com/jashkenas/coffeescript.git
sudo coffeescript/bin/cake install
```
## Getting Started
Execute a script:
```shell
coffee /path/to/script.coffee
```
Compile a script:
```shell
coffee -c /path/to/script.coffee
```
For documentation, usage, and examples, see: http://coffeescript.org/
To suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues
If you'd like to chat, drop by #coffeescript on Freenode IRC.
The source repository: https://github.com/jashkenas/coffeescript.git
Changelog: http://coffeescript.org/#changelog
Our lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors
Also, a new major version has been released under the `coffeescript` name. This new release targets modern JavaScript, with minimal breaking changes. Learn more at [http://coffeescript.org](http://coffeescript.org).

View File

@@ -2,6 +2,17 @@
var path = require('path');
var fs = require('fs');
var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
require(lib + '/coffee-script/cake').run();
var potentialPaths = [
path.join(process.cwd(), 'node_modules/coffeescript/lib/coffeescript'),
path.join(process.cwd(), 'node_modules/coffeescript/lib/coffee-script'),
path.join(process.cwd(), 'node_modules/coffee-script/lib/coffee-script'),
path.join(__dirname, '../lib/coffee-script')
];
for (var i = 0, len = potentialPaths.length; i < len; i++) {
if (fs.existsSync(potentialPaths[i])) {
require(potentialPaths[i] + '/cake').run();
break;
}
}

View File

@@ -2,6 +2,17 @@
var path = require('path');
var fs = require('fs');
var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib');
require(lib + '/coffee-script/command').run();
var potentialPaths = [
path.join(process.cwd(), 'node_modules/coffeescript/lib/coffeescript'),
path.join(process.cwd(), 'node_modules/coffeescript/lib/coffee-script'),
path.join(process.cwd(), 'node_modules/coffee-script/lib/coffee-script'),
path.join(__dirname, '../lib/coffee-script')
];
for (var i = 0, len = potentialPaths.length; i < len; i++) {
if (fs.existsSync(potentialPaths[i])) {
require(potentialPaths[i] + '/command').run();
break;
}
}

View File

@@ -116,7 +116,7 @@
<a class="pilcrow" href="#section-1">&#182;</a>
</div>
<p><code>cake</code> is a simplified version of <a href="http://www.gnu.org/software/make/">Make</a>
(<a href="http://rake.rubyforge.org/">Rake</a>, <a href="http://github.com/280north/jake">Jake</a>)
(<a href="http://rake.rubyforge.org/">Rake</a>, <a href="https://github.com/280north/jake">Jake</a>)
for CoffeeScript. You define tasks with names and descriptions in a Cakefile,
and can call them from the command line, or invoke them from other tasks.</p>
<p>Running <code>cake</code> with no arguments will print out a list of all the tasks in the

View File

@@ -941,6 +941,7 @@ filename of the script file.</p>
answer = compile sources[filename],
filename: filename
sourceMap: <span class="hljs-literal">yes</span>
literate: helpers.isLiterate filename
answer.sourceMap
<span class="hljs-keyword">else</span>
<span class="hljs-literal">null</span></pre></div></div>

View File

@@ -115,17 +115,17 @@
<div class="pilwrap ">
<a class="pilcrow" href="#section-1">&#182;</a>
</div>
<p>The CoffeeScript parser is generated by <a href="http://github.com/zaach/jison">Jison</a>
<p>The CoffeeScript parser is generated by <a href="https://github.com/zaach/jison">Jison</a>
from this grammar file. Jison is a bottom-up parser generator, similar in
style to <a href="http://www.gnu.org/software/bison">Bison</a>, implemented in JavaScript.
It can recognize <a href="http://en.wikipedia.org/wiki/LR_grammar">LALR(1), LR(0), SLR(1), and LR(1)</a>
It can recognize <a href="https://en.wikipedia.org/wiki/LR_grammar">LALR(1), LR(0), SLR(1), and LR(1)</a>
type grammars. To create the Jison parser, we list the pattern to match
on the left-hand side, and the action to take (usually the creation of syntax
tree nodes) on the right. As the parser runs, it
shifts tokens from our token stream, from left to right, and
<a href="http://en.wikipedia.org/wiki/Bottom-up_parsing">attempts to match</a>
<a href="https://en.wikipedia.org/wiki/Bottom-up_parsing">attempts to match</a>
the token sequence against the rules below. When a match can be made, it
reduces into the <a href="http://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols">nonterminal</a>
reduces into the <a href="https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols">nonterminal</a>
(the enclosing name at the top), and we proceed from there.</p>
<p>If you run the <code>cake build:parser</code> command, Jison constructs a parse table
from our rules and saves it into <code>lib/parser.js</code>.</p>
@@ -199,7 +199,7 @@ wrapper and just returning the value directly.</p>
<a class="pilcrow" href="#section-6">&#182;</a>
</div>
<p>Our handy DSL for Jison grammar generation, thanks to
<a href="http://github.com/creationix">Tim Caswell</a>. For every rule in the grammar,
<a href="https://github.com/creationix">Tim Caswell</a>. For every rule in the grammar,
we pass the pattern-defining string, the action to run, and extra options,
optionally. If no action is specified, we simply pass the value of the
previous nonterminal.</p>
@@ -575,6 +575,7 @@ the ordinary <strong>Assign</strong> is that these allow numbers and strings as
<div class="content"><div class='highlight'><pre> Return: [
o <span class="hljs-string">'RETURN Expression'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Return $<span class="hljs-number">2</span>
o <span class="hljs-string">'RETURN INDENT Object OUTDENT'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Return <span class="hljs-keyword">new</span> Value $<span class="hljs-number">3</span>
o <span class="hljs-string">'RETURN'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Return
]
@@ -951,6 +952,7 @@ and optional references to the superclass.</p>
o <span class="hljs-string">'EXPORT Identifier = INDENT Expression OUTDENT'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportNamedDeclaration <span class="hljs-keyword">new</span> Assign $<span class="hljs-number">2</span>, $<span class="hljs-number">5</span>, <span class="hljs-literal">null</span>,
moduleDeclaration: <span class="hljs-string">'export'</span>
o <span class="hljs-string">'EXPORT DEFAULT Expression'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportDefaultDeclaration $<span class="hljs-number">3</span>
o <span class="hljs-string">'EXPORT DEFAULT INDENT Object OUTDENT'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportDefaultDeclaration <span class="hljs-keyword">new</span> Value $<span class="hljs-number">4</span>
o <span class="hljs-string">'EXPORT EXPORT_ALL FROM String'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportAllDeclaration <span class="hljs-keyword">new</span> Literal($<span class="hljs-number">2</span>), $<span class="hljs-number">4</span>
o <span class="hljs-string">'EXPORT { ExportSpecifierList OptComma } FROM String'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportNamedDeclaration <span class="hljs-keyword">new</span> ExportSpecifierList($<span class="hljs-number">3</span>), $<span class="hljs-number">7</span>
]
@@ -968,6 +970,7 @@ and optional references to the superclass.</p>
o <span class="hljs-string">'Identifier AS Identifier'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportSpecifier $<span class="hljs-number">1</span>, $<span class="hljs-number">3</span>
o <span class="hljs-string">'Identifier AS DEFAULT'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportSpecifier $<span class="hljs-number">1</span>, <span class="hljs-keyword">new</span> Literal $<span class="hljs-number">3</span>
o <span class="hljs-string">'DEFAULT'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportSpecifier <span class="hljs-keyword">new</span> Literal $<span class="hljs-number">1</span>
o <span class="hljs-string">'DEFAULT AS Identifier'</span>, <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> ExportSpecifier <span class="hljs-keyword">new</span> Literal($<span class="hljs-number">1</span>), $<span class="hljs-number">3</span>
]</pre></div></div>
</li>

View File

@@ -121,7 +121,7 @@ a token is produced, we consume the match, and start again. Tokens are in the
form:</p>
<pre><code>[tag, value, locationData]
</code></pre><p>where locationData is {first_line, first_column, last_line, last_column}, which is a
format that can be fed directly into <a href="http://github.com/zaach/jison">Jison</a>. These
format that can be fed directly into <a href="https://github.com/zaach/jison">Jison</a>. These
are read by jison in the <code>parser.lexer</code> function defined in coffee-script.coffee.</p>
</div>
@@ -219,6 +219,7 @@ it has consumed.</p>
@seenFor = <span class="hljs-literal">no</span> <span class="hljs-comment"># Used to recognize FORIN, FOROF and FORFROM tokens.</span>
@seenImport = <span class="hljs-literal">no</span> <span class="hljs-comment"># Used to recognize IMPORT FROM? AS? tokens.</span>
@seenExport = <span class="hljs-literal">no</span> <span class="hljs-comment"># Used to recognize EXPORT FROM? AS? tokens.</span>
@importSpecifierList = <span class="hljs-literal">no</span> <span class="hljs-comment"># Used to identify when in an IMPORT {...} FROM? ...</span>
@exportSpecifierList = <span class="hljs-literal">no</span> <span class="hljs-comment"># Used to identify when in an EXPORT {...} FROM? ...</span>
@chunkLine =
@@ -380,10 +381,10 @@ though <code>is</code> means <code>===</code> otherwise.</p>
<span class="hljs-keyword">if</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'DEFAULT'</span>, <span class="hljs-string">'IMPORT_ALL'</span>, <span class="hljs-string">'IDENTIFIER'</span>]
@token <span class="hljs-string">'AS'</span>, id
<span class="hljs-keyword">return</span> id.length
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'as'</span> <span class="hljs-keyword">and</span> @seenExport <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">is</span> <span class="hljs-string">'IDENTIFIER'</span>
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'as'</span> <span class="hljs-keyword">and</span> @seenExport <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'IDENTIFIER'</span>, <span class="hljs-string">'DEFAULT'</span>]
@token <span class="hljs-string">'AS'</span>, id
<span class="hljs-keyword">return</span> id.length
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'default'</span> <span class="hljs-keyword">and</span> @seenExport
<span class="hljs-keyword">if</span> id <span class="hljs-keyword">is</span> <span class="hljs-string">'default'</span> <span class="hljs-keyword">and</span> @seenExport <span class="hljs-keyword">and</span> @tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'EXPORT'</span>, <span class="hljs-string">'AS'</span>]
@token <span class="hljs-string">'DEFAULT'</span>, id
<span class="hljs-keyword">return</span> id.length
@@ -565,14 +566,14 @@ properly tag the <code>from</code>.</p>
indent = attempt <span class="hljs-keyword">if</span> indent <span class="hljs-keyword">is</span> <span class="hljs-literal">null</span> <span class="hljs-keyword">or</span> <span class="hljs-number">0</span> &lt; attempt.length &lt; indent.length
indentRegex = <span class="hljs-regexp">/// \n<span class="hljs-subst">#{indent}</span> ///</span>g <span class="hljs-keyword">if</span> indent
@mergeInterpolationTokens tokens, {delimiter}, <span class="hljs-function"><span class="hljs-params">(value, i)</span> =&gt;</span>
value = @formatString value
value = @formatString value, delimiter: quote
value = value.replace indentRegex, <span class="hljs-string">'\n'</span> <span class="hljs-keyword">if</span> indentRegex
value = value.replace LEADING_BLANK_LINE, <span class="hljs-string">''</span> <span class="hljs-keyword">if</span> i <span class="hljs-keyword">is</span> <span class="hljs-number">0</span>
value = value.replace TRAILING_BLANK_LINE, <span class="hljs-string">''</span> <span class="hljs-keyword">if</span> i <span class="hljs-keyword">is</span> $
value
<span class="hljs-keyword">else</span>
@mergeInterpolationTokens tokens, {delimiter}, <span class="hljs-function"><span class="hljs-params">(value, i)</span> =&gt;</span>
value = @formatString value
value = @formatString value, delimiter: quote
value = value.replace SIMPLE_STRING_OMIT, <span class="hljs-function"><span class="hljs-params">(match, offset)</span> -&gt;</span>
<span class="hljs-keyword">if</span> (i <span class="hljs-keyword">is</span> <span class="hljs-number">0</span> <span class="hljs-keyword">and</span> offset <span class="hljs-keyword">is</span> <span class="hljs-number">0</span>) <span class="hljs-keyword">or</span>
(i <span class="hljs-keyword">is</span> $ <span class="hljs-keyword">and</span> offset + match.length <span class="hljs-keyword">is</span> value.length)
@@ -684,6 +685,7 @@ borrow some basic heuristics from JavaScript and Ruby.</p>
<span class="hljs-keyword">when</span> match = REGEX.exec @chunk
[regex, body, closed] = match
@validateEscapes body, isRegex: <span class="hljs-literal">yes</span>, offsetInChunk: <span class="hljs-number">1</span>
body = @formatRegex body, delimiter: <span class="hljs-string">'/'</span>
index = regex.length
[..., prev] = @tokens
<span class="hljs-keyword">if</span> prev
@@ -710,10 +712,10 @@ borrow some basic heuristics from JavaScript and Ruby.</p>
@token <span class="hljs-string">'CALL_START'</span>, <span class="hljs-string">'('</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>
@mergeInterpolationTokens tokens, {delimiter: <span class="hljs-string">'"'</span>, double: <span class="hljs-literal">yes</span>}, @formatHeregex
<span class="hljs-keyword">if</span> flags
@token <span class="hljs-string">','</span>, <span class="hljs-string">','</span>, index, <span class="hljs-number">0</span>
@token <span class="hljs-string">'STRING'</span>, <span class="hljs-string">'"'</span> + flags + <span class="hljs-string">'"'</span>, index, flags.length
@token <span class="hljs-string">')'</span>, <span class="hljs-string">')'</span>, end, <span class="hljs-number">0</span>
@token <span class="hljs-string">'REGEX_END'</span>, <span class="hljs-string">')'</span>, end, <span class="hljs-number">0</span>
@token <span class="hljs-string">','</span>, <span class="hljs-string">','</span>, index - <span class="hljs-number">1</span>, <span class="hljs-number">0</span>
@token <span class="hljs-string">'STRING'</span>, <span class="hljs-string">'"'</span> + flags + <span class="hljs-string">'"'</span>, index - <span class="hljs-number">1</span>, flags.length
@token <span class="hljs-string">')'</span>, <span class="hljs-string">')'</span>, end - <span class="hljs-number">1</span>, <span class="hljs-number">0</span>
@token <span class="hljs-string">'REGEX_END'</span>, <span class="hljs-string">')'</span>, end - <span class="hljs-number">1</span>, <span class="hljs-number">0</span>
end</pre></div></div>
@@ -742,6 +744,8 @@ can close multiple indents, so we need to know how far in we happen to be.</p>
indent = match[<span class="hljs-number">0</span>]
@seenFor = <span class="hljs-literal">no</span>
@seenImport = <span class="hljs-literal">no</span> <span class="hljs-keyword">unless</span> @importSpecifierList
@seenExport = <span class="hljs-literal">no</span> <span class="hljs-keyword">unless</span> @exportSpecifierList
size = indent.length - <span class="hljs-number">1</span> - indent.lastIndexOf <span class="hljs-string">'\n'</span>
noNewlines = @unfinished()
@@ -923,7 +927,11 @@ parentheses that indicate a method call from regular parentheses, and so on.</p>
@error message, origin[<span class="hljs-number">2</span>] <span class="hljs-keyword">if</span> message
<span class="hljs-keyword">return</span> value.length <span class="hljs-keyword">if</span> skipToken
<span class="hljs-keyword">if</span> value <span class="hljs-keyword">is</span> <span class="hljs-string">'{'</span> <span class="hljs-keyword">and</span> prev?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'EXPORT'</span>
<span class="hljs-keyword">if</span> value <span class="hljs-keyword">is</span> <span class="hljs-string">'{'</span> <span class="hljs-keyword">and</span> @seenImport
@importSpecifierList = <span class="hljs-literal">yes</span>
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> @importSpecifierList <span class="hljs-keyword">and</span> value <span class="hljs-keyword">is</span> <span class="hljs-string">'}'</span>
@importSpecifierList = <span class="hljs-literal">no</span>
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> value <span class="hljs-keyword">is</span> <span class="hljs-string">'{'</span> <span class="hljs-keyword">and</span> prev?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'EXPORT'</span>
@exportSpecifierList = <span class="hljs-literal">yes</span>
<span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> @exportSpecifierList <span class="hljs-keyword">and</span> value <span class="hljs-keyword">is</span> <span class="hljs-string">'}'</span>
@exportSpecifierList = <span class="hljs-literal">no</span>
@@ -1255,7 +1263,7 @@ sane location data.</p>
</div>
<div class="content"><div class='highlight'><pre> converted = fn token[<span class="hljs-number">1</span>], i</pre></div></div>
<div class="content"><div class='highlight'><pre> converted = fn.call <span class="hljs-keyword">this</span>, token[<span class="hljs-number">1</span>], i</pre></div></div>
</li>
@@ -1547,15 +1555,22 @@ not specified, the length of <code>value</code> will be used.</p>
<div class="content"><div class='highlight'><pre> unfinished: <span class="hljs-function">-&gt;</span>
LINE_CONTINUER.test(@chunk) <span class="hljs-keyword">or</span>
@tag() <span class="hljs-keyword">in</span> [<span class="hljs-string">'\\'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'?.'</span>, <span class="hljs-string">'?::'</span>, <span class="hljs-string">'UNARY'</span>, <span class="hljs-string">'MATH'</span>, <span class="hljs-string">'UNARY_MATH'</span>, <span class="hljs-string">'+'</span>, <span class="hljs-string">'-'</span>,
<span class="hljs-string">'**'</span>, <span class="hljs-string">'SHIFT'</span>, <span class="hljs-string">'RELATION'</span>, <span class="hljs-string">'COMPARE'</span>, <span class="hljs-string">'&amp;'</span>, <span class="hljs-string">'^'</span>, <span class="hljs-string">'|'</span>, <span class="hljs-string">'&amp;&amp;'</span>, <span class="hljs-string">'||'</span>,
<span class="hljs-string">'BIN?'</span>, <span class="hljs-string">'THROW'</span>, <span class="hljs-string">'EXTENDS'</span>]
@tag() <span class="hljs-keyword">in</span> UNFINISHED
formatString: <span class="hljs-function"><span class="hljs-params">(str)</span> -&gt;</span>
str.replace STRING_OMIT, <span class="hljs-string">'$1'</span>
formatString: <span class="hljs-function"><span class="hljs-params">(str, options)</span> -&gt;</span>
@replaceUnicodeCodePointEscapes str.replace(STRING_OMIT, <span class="hljs-string">'$1'</span>), options
formatHeregex: <span class="hljs-function"><span class="hljs-params">(str)</span> -&gt;</span>
str.replace HEREGEX_OMIT, <span class="hljs-string">'$1$2'</span></pre></div></div>
@formatRegex str.replace(HEREGEX_OMIT, <span class="hljs-string">'$1$2'</span>), delimiter: <span class="hljs-string">'///'</span>
formatRegex: <span class="hljs-function"><span class="hljs-params">(str, options)</span> -&gt;</span>
@replaceUnicodeCodePointEscapes str, options
unicodeCodePointToUnicodeEscapes: <span class="hljs-function"><span class="hljs-params">(codePoint)</span> -&gt;</span>
<span class="hljs-function"> <span class="hljs-title">toUnicodeEscape</span> = <span class="hljs-params">(val)</span> -&gt;</span>
str = val.toString <span class="hljs-number">16</span>
<span class="hljs-string">"\\u<span class="hljs-subst">#{repeat <span class="hljs-string">'0'</span>, <span class="hljs-number">4</span> - str.length}</span><span class="hljs-subst">#{str}</span>"</span>
<span class="hljs-keyword">return</span> toUnicodeEscape(codePoint) <span class="hljs-keyword">if</span> codePoint &lt; <span class="hljs-number">0x10000</span></pre></div></div>
</li>
@@ -1566,24 +1581,13 @@ not specified, the length of <code>value</code> will be used.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-59">&#182;</a>
</div>
<p>Validates escapes in strings and regexes.</p>
<p>surrogate pair</p>
</div>
<div class="content"><div class='highlight'><pre> validateEscapes: <span class="hljs-function"><span class="hljs-params">(str, options = {})</span> -&gt;</span>
match = INVALID_ESCAPE.exec str
<span class="hljs-keyword">return</span> <span class="hljs-keyword">unless</span> match
[[], before, octal, hex, unicode] = match
<span class="hljs-keyword">return</span> <span class="hljs-keyword">if</span> options.isRegex <span class="hljs-keyword">and</span> octal <span class="hljs-keyword">and</span> octal.charAt(<span class="hljs-number">0</span>) <span class="hljs-keyword">isnt</span> <span class="hljs-string">'0'</span>
message =
<span class="hljs-keyword">if</span> octal
<span class="hljs-string">"octal escape sequences are not allowed"</span>
<span class="hljs-keyword">else</span>
<span class="hljs-string">"invalid escape sequence"</span>
invalidEscape = <span class="hljs-string">"\\<span class="hljs-subst">#{octal <span class="hljs-keyword">or</span> hex <span class="hljs-keyword">or</span> unicode}</span>"</span>
@error <span class="hljs-string">"<span class="hljs-subst">#{message}</span> <span class="hljs-subst">#{invalidEscape}</span>"</span>,
offset: (options.offsetInChunk ? <span class="hljs-number">0</span>) + match.index + before.length
length: invalidEscape.length</pre></div></div>
<div class="content"><div class='highlight'><pre> high = Math.floor((codePoint - <span class="hljs-number">0x10000</span>) / <span class="hljs-number">0x400</span>) + <span class="hljs-number">0xD800</span>
low = (codePoint - <span class="hljs-number">0x10000</span>) % <span class="hljs-number">0x400</span> + <span class="hljs-number">0xDC00</span>
<span class="hljs-string">"<span class="hljs-subst">#{toUnicodeEscape(high)}</span><span class="hljs-subst">#{toUnicodeEscape(low)}</span>"</span></pre></div></div>
</li>
@@ -1594,6 +1598,63 @@ not specified, the length of <code>value</code> will be used.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-60">&#182;</a>
</div>
<p>Replace \u{…} with \uxxxx[\uxxxx] in strings and regexes</p>
</div>
<div class="content"><div class='highlight'><pre> replaceUnicodeCodePointEscapes: <span class="hljs-function"><span class="hljs-params">(str, options)</span> -&gt;</span>
str.replace UNICODE_CODE_POINT_ESCAPE, <span class="hljs-function"><span class="hljs-params">(match, escapedBackslash, codePointHex, offset)</span> =&gt;</span>
<span class="hljs-keyword">return</span> escapedBackslash <span class="hljs-keyword">if</span> escapedBackslash
codePointDecimal = parseInt codePointHex, <span class="hljs-number">16</span>
<span class="hljs-keyword">if</span> codePointDecimal &gt; <span class="hljs-number">0x10ffff</span>
@error <span class="hljs-string">"unicode code point escapes greater than \\u{10ffff} are not allowed"</span>,
offset: offset + options.delimiter.length
length: codePointHex.length + <span class="hljs-number">4</span>
@unicodeCodePointToUnicodeEscapes codePointDecimal</pre></div></div>
</li>
<li id="section-61">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-61">&#182;</a>
</div>
<p>Validates escapes in strings and regexes.</p>
</div>
<div class="content"><div class='highlight'><pre> validateEscapes: <span class="hljs-function"><span class="hljs-params">(str, options = {})</span> -&gt;</span>
invalidEscapeRegex =
<span class="hljs-keyword">if</span> options.isRegex
REGEX_INVALID_ESCAPE
<span class="hljs-keyword">else</span>
STRING_INVALID_ESCAPE
match = invalidEscapeRegex.exec str
<span class="hljs-keyword">return</span> <span class="hljs-keyword">unless</span> match
[[], before, octal, hex, unicodeCodePoint, unicode] = match
message =
<span class="hljs-keyword">if</span> octal
<span class="hljs-string">"octal escape sequences are not allowed"</span>
<span class="hljs-keyword">else</span>
<span class="hljs-string">"invalid escape sequence"</span>
invalidEscape = <span class="hljs-string">"\\<span class="hljs-subst">#{octal <span class="hljs-keyword">or</span> hex <span class="hljs-keyword">or</span> unicodeCodePoint <span class="hljs-keyword">or</span> unicode}</span>"</span>
@error <span class="hljs-string">"<span class="hljs-subst">#{message}</span> <span class="hljs-subst">#{invalidEscape}</span>"</span>,
offset: (options.offsetInChunk ? <span class="hljs-number">0</span>) + match.index + before.length
length: invalidEscape.length</pre></div></div>
</li>
<li id="section-62">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-62">&#182;</a>
</div>
<p>Constructs a string or regex by escaping certain characters.</p>
</div>
@@ -1612,11 +1673,11 @@ not specified, the length of <code>value</code> will be used.</p>
</li>
<li id="section-61">
<li id="section-63">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-61">&#182;</a>
<a class="pilcrow" href="#section-63">&#182;</a>
</div>
<p>Ignore escaped backslashes.</p>
@@ -1635,11 +1696,11 @@ not specified, the length of <code>value</code> will be used.</p>
</li>
<li id="section-62">
<li id="section-64">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-62">&#182;</a>
<a class="pilcrow" href="#section-64">&#182;</a>
</div>
<p>Throws an error at either a given offset from the current chunk or at the
location of a token (<code>token[2]</code>).</p>
@@ -1658,11 +1719,11 @@ location of a token (<code>token[2]</code>).</p>
</li>
<li id="section-63">
<li id="section-65">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-63">&#182;</a>
<a class="pilcrow" href="#section-65">&#182;</a>
</div>
<h2 id="helper-functions">Helper functions</h2>
@@ -1671,11 +1732,11 @@ location of a token (<code>token[2]</code>).</p>
</li>
<li id="section-64">
<li id="section-66">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-64">&#182;</a>
<a class="pilcrow" href="#section-66">&#182;</a>
</div>
</div>
@@ -1696,11 +1757,11 @@ exports.isUnassignable = isUnassignable</pre></div></div>
</li>
<li id="section-65">
<li id="section-67">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-65">&#182;</a>
<a class="pilcrow" href="#section-67">&#182;</a>
</div>
<p><code>from</code> isnt a CoffeeScript keyword, but it behaves like one in <code>import</code> and
<code>export</code> statements (handled above) and in the declaration line of a <code>for</code>
@@ -1715,11 +1776,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-66">
<li id="section-68">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-66">&#182;</a>
<a class="pilcrow" href="#section-68">&#182;</a>
</div>
<p><code>for i from from</code>, <code>for from from iterable</code></p>
@@ -1732,11 +1793,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-67">
<li id="section-69">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-67">&#182;</a>
<a class="pilcrow" href="#section-69">&#182;</a>
</div>
<p><code>for i from iterable</code></p>
@@ -1747,11 +1808,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-68">
<li id="section-70">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-68">&#182;</a>
<a class="pilcrow" href="#section-70">&#182;</a>
</div>
<p><code>for from…</code></p>
@@ -1763,11 +1824,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-69">
<li id="section-71">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-69">&#182;</a>
<a class="pilcrow" href="#section-71">&#182;</a>
</div>
<p><code>for {from}…</code>, <code>for [from]…</code>, <code>for {a, from}…</code>, <code>for {a: from}…</code></p>
@@ -1781,11 +1842,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-70">
<li id="section-72">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-70">&#182;</a>
<a class="pilcrow" href="#section-72">&#182;</a>
</div>
<h2 id="constants">Constants</h2>
@@ -1794,11 +1855,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-71">
<li id="section-73">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-71">&#182;</a>
<a class="pilcrow" href="#section-73">&#182;</a>
</div>
</div>
@@ -1806,11 +1867,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-72">
<li id="section-74">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-72">&#182;</a>
<a class="pilcrow" href="#section-74">&#182;</a>
</div>
<p>Keywords that CoffeeScript shares in common with JavaScript.</p>
@@ -1828,11 +1889,11 @@ loop. Try to detect when <code>from</code> is a variable identifier and when it
</li>
<li id="section-73">
<li id="section-75">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-73">&#182;</a>
<a class="pilcrow" href="#section-75">&#182;</a>
</div>
<p>CoffeeScript-only keywords.</p>
@@ -1860,11 +1921,11 @@ COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat COFFEE_ALIASES</pre></div></div>
</li>
<li id="section-74">
<li id="section-76">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-74">&#182;</a>
<a class="pilcrow" href="#section-76">&#182;</a>
</div>
<p>The list of keywords that are reserved by JavaScript, but not used, or are
used by CoffeeScript internally. We throw an error when these are encountered,
@@ -1883,11 +1944,11 @@ STRICT_PROSCRIBED = [<span class="hljs-string">'arguments'</span>, <span class="
</li>
<li id="section-75">
<li id="section-77">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-75">&#182;</a>
<a class="pilcrow" href="#section-77">&#182;</a>
</div>
<p>The superset of both JavaScript keywords and reserved words, none of which may
be used as identifiers or properties.</p>
@@ -1899,11 +1960,11 @@ be used as identifiers or properties.</p>
</li>
<li id="section-76">
<li id="section-78">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-76">&#182;</a>
<a class="pilcrow" href="#section-78">&#182;</a>
</div>
<p>The character code of the nasty Microsoft madness otherwise known as the BOM.</p>
@@ -1914,11 +1975,11 @@ be used as identifiers or properties.</p>
</li>
<li id="section-77">
<li id="section-79">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-77">&#182;</a>
<a class="pilcrow" href="#section-79">&#182;</a>
</div>
<p>Token matching regexes.</p>
@@ -1961,11 +2022,11 @@ HERE_JSTOKEN = <span class="hljs-regexp">///^ ``` ((?: [^`\\] | \\[\s\S] | `
</li>
<li id="section-78">
<li id="section-80">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-78">&#182;</a>
<a class="pilcrow" href="#section-80">&#182;</a>
</div>
<p>String-matching-regexes.</p>
@@ -1988,11 +2049,11 @@ HEREDOC_INDENT = <span class="hljs-regexp">/\n+([^\n\S]*)(?=\S)/g</span></pr
</li>
<li id="section-79">
<li id="section-81">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-79">&#182;</a>
<a class="pilcrow" href="#section-81">&#182;</a>
</div>
<p>Regex-matching-regexes.</p>
@@ -2009,7 +2070,7 @@ HEREDOC_INDENT = <span class="hljs-regexp">/\n+([^\n\S]*)(?=\S)/g</span></pr
///</span>
REGEX_FLAGS = <span class="hljs-regexp">/^\w*/</span>
VALID_FLAGS = <span class="hljs-regexp">/^(?!.*(.).*\1)[imgy]*$/</span>
VALID_FLAGS = <span class="hljs-regexp">/^(?!.*(.).*\1)[imguy]*$/</span>
HEREGEX = <span class="hljs-regexp">/// ^(?: [^\\/<span class="hljs-comment">#] | \\[\s\S] | /(?!//) | \#(?!\{) )* ///</span>
@@ -2026,11 +2087,11 @@ POSSIBLY_DIVISION = <span class="hljs-regexp">/// ^ /=?\s ///</span></pre></di
</li>
<li id="section-80">
<li id="section-82">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-80">&#182;</a>
<a class="pilcrow" href="#section-82">&#182;</a>
</div>
<p>Other regexes.</p>
@@ -2040,14 +2101,30 @@ POSSIBLY_DIVISION = <span class="hljs-regexp">/// ^ /=?\s ///</span></pre></di
LINE_CONTINUER = <span class="hljs-regexp">/// ^ \s* (?: , | \??\.(?![.\d]) | :: ) ///</span>
INVALID_ESCAPE = <span class="hljs-regexp">///
STRING_INVALID_ESCAPE = <span class="hljs-regexp">///
( (?:^|[^\\]) (?:\\\\)* ) <span class="hljs-comment"># make sure the escape isnt escaped</span>
\\ (
?: (0[0-7]|[1-7]) <span class="hljs-comment"># octal escape</span>
| (x(?![\da-fA-F]{2}).{0,2}) <span class="hljs-comment"># hex escape</span>
| (u(?![\da-fA-F]{4}).{0,4}) <span class="hljs-comment"># unicode escape</span>
| (u\{(?![\da-fA-F]{1,}\})[^}]*\}?) <span class="hljs-comment"># unicode code point escape</span>
| (u(?!\{|[\da-fA-F]{4}).{0,4}) <span class="hljs-comment"># unicode escape</span>
)
///</span>
REGEX_INVALID_ESCAPE = <span class="hljs-regexp">///
( (?:^|[^\\]) (?:\\\\)* ) <span class="hljs-comment"># make sure the escape isnt escaped</span>
\\ (
?: (0[0-7]) <span class="hljs-comment"># octal escape</span>
| (x(?![\da-fA-F]{2}).{0,2}) <span class="hljs-comment"># hex escape</span>
| (u\{(?![\da-fA-F]{1,}\})[^}]*\}?) <span class="hljs-comment"># unicode code point escape</span>
| (u(?!\{|[\da-fA-F]{4}).{0,4}) <span class="hljs-comment"># unicode escape</span>
)
///</span>
UNICODE_CODE_POINT_ESCAPE = <span class="hljs-regexp">///
( \\\\ ) <span class="hljs-comment"># make sure the escape isnt escaped</span>
|
\\u\{ ( [\da-fA-F]+ ) \}
///</span>g
LEADING_BLANK_LINE = <span class="hljs-regexp">/^[^\n\S]*\n/</span>
TRAILING_BLANK_LINE = <span class="hljs-regexp">/\n[^\n\S]*$/</span>
@@ -2057,11 +2134,11 @@ TRAILING_SPACES = <span class="hljs-regexp">/\s+$/</span></pre></div></div>
</li>
<li id="section-81">
<li id="section-83">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-81">&#182;</a>
<a class="pilcrow" href="#section-83">&#182;</a>
</div>
<p>Compound assignment tokens.</p>
@@ -2075,11 +2152,11 @@ TRAILING_SPACES = <span class="hljs-regexp">/\s+$/</span></pre></div></div>
</li>
<li id="section-82">
<li id="section-84">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-82">&#182;</a>
<a class="pilcrow" href="#section-84">&#182;</a>
</div>
<p>Unary tokens.</p>
@@ -2092,11 +2169,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-83">
<li id="section-85">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-83">&#182;</a>
<a class="pilcrow" href="#section-85">&#182;</a>
</div>
<p>Bit-shifting tokens.</p>
@@ -2107,11 +2184,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-84">
<li id="section-86">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-84">&#182;</a>
<a class="pilcrow" href="#section-86">&#182;</a>
</div>
<p>Comparison tokens.</p>
@@ -2122,11 +2199,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-85">
<li id="section-87">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-85">&#182;</a>
<a class="pilcrow" href="#section-87">&#182;</a>
</div>
<p>Mathematical tokens.</p>
@@ -2137,11 +2214,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-86">
<li id="section-88">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-86">&#182;</a>
<a class="pilcrow" href="#section-88">&#182;</a>
</div>
<p>Relational tokens that are negatable with <code>not</code> prefix.</p>
@@ -2152,11 +2229,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-87">
<li id="section-89">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-87">&#182;</a>
<a class="pilcrow" href="#section-89">&#182;</a>
</div>
<p>Boolean tokens.</p>
@@ -2167,11 +2244,11 @@ UNARY_MATH = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'~
</li>
<li id="section-88">
<li id="section-90">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-88">&#182;</a>
<a class="pilcrow" href="#section-90">&#182;</a>
</div>
<p>Tokens which could legitimately be invoked or indexed. An opening
parentheses or bracket following these tokens will be recorded as the start
@@ -2188,11 +2265,11 @@ INDEXABLE = CALLABLE.concat [
</li>
<li id="section-89">
<li id="section-91">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-89">&#182;</a>
<a class="pilcrow" href="#section-91">&#182;</a>
</div>
<p>Tokens which a regular expression will never immediately follow (except spaced
CALLABLEs in some cases), but which a division operator can.</p>
@@ -2205,11 +2282,11 @@ CALLABLEs in some cases), but which a division operator can.</p>
</li>
<li id="section-90">
<li id="section-92">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-90">&#182;</a>
<a class="pilcrow" href="#section-92">&#182;</a>
</div>
<p>Tokens that, when immediately preceding a <code>WHEN</code>, indicate that the <code>WHEN</code>
occurs at the start of a line. We disambiguate these from trailing whens to
@@ -2222,11 +2299,11 @@ avoid an ambiguity in the grammar.</p>
</li>
<li id="section-91">
<li id="section-93">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-91">&#182;</a>
<a class="pilcrow" href="#section-93">&#182;</a>
</div>
<p>Additional indent in front of these is ignored.</p>
@@ -2236,6 +2313,23 @@ avoid an ambiguity in the grammar.</p>
</li>
<li id="section-94">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-94">&#182;</a>
</div>
<p>Tokens that, when appearing at the end of a line, suppress a following TERMINATOR/INDENT token</p>
</div>
<div class="content"><div class='highlight'><pre>UNFINISHED = [<span class="hljs-string">'\\'</span>, <span class="hljs-string">'.'</span>, <span class="hljs-string">'?.'</span>, <span class="hljs-string">'?::'</span>, <span class="hljs-string">'UNARY'</span>, <span class="hljs-string">'MATH'</span>, <span class="hljs-string">'UNARY_MATH'</span>, <span class="hljs-string">'+'</span>, <span class="hljs-string">'-'</span>,
<span class="hljs-string">'**'</span>, <span class="hljs-string">'SHIFT'</span>, <span class="hljs-string">'RELATION'</span>, <span class="hljs-string">'COMPARE'</span>, <span class="hljs-string">'&amp;'</span>, <span class="hljs-string">'^'</span>, <span class="hljs-string">'|'</span>, <span class="hljs-string">'&amp;&amp;'</span>, <span class="hljs-string">'||'</span>,
<span class="hljs-string">'BIN?'</span>, <span class="hljs-string">'THROW'</span>, <span class="hljs-string">'EXTENDS'</span>]</pre></div></div>
</li>
</ul>
</div>
</body>

File diff suppressed because it is too large Load Diff

View File

@@ -256,7 +256,7 @@ Unwrap that too.</p>
</div>
<div class="content"><div class='highlight'><pre> ast = <span class="hljs-keyword">new</span> Block [
<span class="hljs-keyword">new</span> Assign (<span class="hljs-keyword">new</span> Value <span class="hljs-keyword">new</span> Literal <span class="hljs-string">'_'</span>), ast, <span class="hljs-string">'='</span>
<span class="hljs-keyword">new</span> Assign (<span class="hljs-keyword">new</span> Value <span class="hljs-keyword">new</span> Literal <span class="hljs-string">'__'</span>), ast, <span class="hljs-string">'='</span>
]
js = ast.compile {bare: <span class="hljs-literal">yes</span>, locals: Object.keys(context), referencedVars}
cb <span class="hljs-literal">null</span>, runInContext js, context, filename
@@ -585,7 +585,7 @@ Unwrap that too.</p>
<span class="hljs-built_in">module</span>.exports =
start: <span class="hljs-function"><span class="hljs-params">(opts = {})</span> -&gt;</span>
[major, minor, build] = process.versions.node.split(<span class="hljs-string">'.'</span>).map (n) -&gt; parseInt(n)
[major, minor, build] = process.versions.node.split(<span class="hljs-string">'.'</span>).map (n) -&gt; parseInt(n, <span class="hljs-number">10</span>)
<span class="hljs-keyword">if</span> major <span class="hljs-keyword">is</span> <span class="hljs-number">0</span> <span class="hljs-keyword">and</span> minor &lt; <span class="hljs-number">8</span>
<span class="hljs-built_in">console</span>.warn <span class="hljs-string">"Node 0.8.0+ required for CoffeeScript REPL"</span>

View File

@@ -157,7 +157,7 @@ its internal array of tokens.</p>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">exports</span>.<span class="hljs-title">Rewriter</span></span></pre></div></div>
<div class="content"><div class='highlight'><pre>exports.Rewriter = <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Rewriter</span></span></pre></div></div>
</li>
@@ -168,11 +168,16 @@ its internal array of tokens.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-4">&#182;</a>
</div>
<p>Helpful snippet for debugging:</p>
<pre><code><span class="hljs-built_in">console</span>.log (t[<span class="hljs-number">0</span>] + <span class="hljs-string">'/'</span> + t[<span class="hljs-number">1</span>] <span class="hljs-keyword">for</span> t <span class="hljs-keyword">in</span> @tokens).join <span class="hljs-string">' '</span>
</code></pre>
<p>Rewrite the token stream in multiple passes, one logical filter at
a time. This could certainly be changed into a single pass through the
stream, with a big ol efficient switch, but its much nicer to work with
like this. The order of these passes matters indentation must be
corrected before implicit parentheses can be wrapped around blocks of code.</p>
</div>
<div class="content"><div class='highlight'><pre> rewrite: <span class="hljs-function"><span class="hljs-params">(@tokens)</span> -&gt;</span></pre></div></div>
</li>
@@ -182,16 +187,12 @@ its internal array of tokens.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-5">&#182;</a>
</div>
<p>Rewrite the token stream in multiple passes, one logical filter at
a time. This could certainly be changed into a single pass through the
stream, with a big ol efficient switch, but its much nicer to work with
like this. The order of these passes matters indentation must be
corrected before implicit parentheses can be wrapped around blocks of code.</p>
<p>Helpful snippet for debugging:
console.log (t[0] + / + t[1] for t in @tokens).join </p>
</div>
<div class="content"><div class='highlight'><pre> rewrite: <span class="hljs-function"><span class="hljs-params">(@tokens)</span> -&gt;</span>
@removeLeadingNewlines()
<div class="content"><div class='highlight'><pre> @removeLeadingNewlines()
@closeOpenCalls()
@closeOpenIndexes()
@normalizeLines()
@@ -449,9 +450,12 @@ and spliced, when returning for getting a new token.</p>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">inImplicit</span> = -&gt;</span> stackTop()?[<span class="hljs-number">2</span>]?.ours
<span class="hljs-function"> <span class="hljs-title">inImplicitCall</span> = -&gt;</span> inImplicit() <span class="hljs-keyword">and</span> stackTop()?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'('</span>
<span class="hljs-function"> <span class="hljs-title">inImplicitObject</span> = -&gt;</span> inImplicit() <span class="hljs-keyword">and</span> stackTop()?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'{'</span></pre></div></div>
<div class="content"><div class='highlight'><pre><span class="hljs-function"> <span class="hljs-title">isImplicit</span> = <span class="hljs-params">(stackItem)</span> -&gt;</span> stackItem?[<span class="hljs-number">2</span>]?.ours
<span class="hljs-function"> <span class="hljs-title">isImplicitObject</span> = <span class="hljs-params">(stackItem)</span> -&gt;</span> isImplicit(stackItem) <span class="hljs-keyword">and</span> stackItem?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'{'</span>
<span class="hljs-function"> <span class="hljs-title">isImplicitCall</span> = <span class="hljs-params">(stackItem)</span> -&gt;</span> isImplicit(stackItem) <span class="hljs-keyword">and</span> stackItem?[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'('</span>
<span class="hljs-function"> <span class="hljs-title">inImplicit</span> = -&gt;</span> isImplicit stackTop()
<span class="hljs-function"> <span class="hljs-title">inImplicitCall</span> = -&gt;</span> isImplicitCall stackTop()
<span class="hljs-function"> <span class="hljs-title">inImplicitObject</span> = -&gt;</span> isImplicitObject stackTop()</pre></div></div>
</li>
@@ -472,7 +476,7 @@ class declaration or if-conditionals)</p>
<span class="hljs-title">startImplicitCall</span> = <span class="hljs-params">(j)</span> -&gt;</span>
idx = j ? i
stack.push [<span class="hljs-string">'('</span>, idx, ours: <span class="hljs-literal">yes</span>]
tokens.splice idx, <span class="hljs-number">0</span>, generate <span class="hljs-string">'CALL_START'</span>, <span class="hljs-string">'('</span>
tokens.splice idx, <span class="hljs-number">0</span>, generate <span class="hljs-string">'CALL_START'</span>, <span class="hljs-string">'('</span>, [<span class="hljs-string">''</span>, <span class="hljs-string">'implicit function call'</span>, token[<span class="hljs-number">2</span>]]
i += <span class="hljs-number">1</span> <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> j?
<span class="hljs-function">
<span class="hljs-title">endImplicitCall</span> = -&gt;</span>
@@ -509,7 +513,7 @@ class declaration or if-conditionals)</p>
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> inImplicitCall() <span class="hljs-keyword">and</span> tag <span class="hljs-keyword">in</span> [<span class="hljs-string">'IF'</span>, <span class="hljs-string">'TRY'</span>, <span class="hljs-string">'FINALLY'</span>, <span class="hljs-string">'CATCH'</span>,
<span class="hljs-string">'CLASS'</span>, <span class="hljs-string">'SWITCH'</span>]
stack.push [<span class="hljs-string">'CONTROL'</span>, i, ours: <span class="hljs-literal">true</span>]
stack.push [<span class="hljs-string">'CONTROL'</span>, i, ours: <span class="hljs-literal">yes</span>]
<span class="hljs-keyword">return</span> forward(<span class="hljs-number">1</span>)
<span class="hljs-keyword">if</span> tag <span class="hljs-keyword">is</span> <span class="hljs-string">'INDENT'</span> <span class="hljs-keyword">and</span> inImplicit()</pre></div></div>
@@ -734,8 +738,23 @@ like e.g.:</p>
</code></pre>
</div>
<div class="content"><div class='highlight'><pre>
stackTop()[<span class="hljs-number">2</span>].sameLine = <span class="hljs-literal">no</span> <span class="hljs-keyword">if</span> inImplicitObject() <span class="hljs-keyword">and</span> tag <span class="hljs-keyword">in</span> LINEBREAKS
</li>
<li id="section-29">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-29">&#182;</a>
</div>
<p>Mark all enclosing objects as not sameLine</p>
</div>
<div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> tag <span class="hljs-keyword">in</span> LINEBREAKS
<span class="hljs-keyword">for</span> stackItem <span class="hljs-keyword">in</span> stack <span class="hljs-keyword">by</span> <span class="hljs-number">-1</span>
<span class="hljs-keyword">break</span> <span class="hljs-keyword">unless</span> isImplicit stackItem
stackItem[<span class="hljs-number">2</span>].sameLine = <span class="hljs-literal">no</span> <span class="hljs-keyword">if</span> isImplicitObject stackItem
newLine = prevTag <span class="hljs-keyword">is</span> <span class="hljs-string">'OUTDENT'</span> <span class="hljs-keyword">or</span> prevToken.newLine
<span class="hljs-keyword">if</span> tag <span class="hljs-keyword">in</span> IMPLICIT_END <span class="hljs-keyword">or</span> tag <span class="hljs-keyword">in</span> CALL_CLOSERS <span class="hljs-keyword">and</span> newLine
@@ -745,11 +764,11 @@ like e.g.:</p>
</li>
<li id="section-29">
<li id="section-30">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-29">&#182;</a>
<a class="pilcrow" href="#section-30">&#182;</a>
</div>
<p>Close implicit calls when reached end of argument list</p>
@@ -761,11 +780,11 @@ like e.g.:</p>
</li>
<li id="section-30">
<li id="section-31">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-30">&#182;</a>
<a class="pilcrow" href="#section-31">&#182;</a>
</div>
<p>Close implicit objects such as:
return a: 1, b: 2 unless true</p>
@@ -779,11 +798,11 @@ return a: 1, b: 2 unless true</p>
</li>
<li id="section-31">
<li id="section-32">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-31">&#182;</a>
<a class="pilcrow" href="#section-32">&#182;</a>
</div>
<p>Close implicit objects when at end of line, line didnt end with a comma
and the implicit object didnt start the line or the next line doesnt look like
@@ -801,11 +820,11 @@ the continuation of an object.</p>
</li>
<li id="section-32">
<li id="section-33">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-32">&#182;</a>
<a class="pilcrow" href="#section-33">&#182;</a>
</div>
<p>Close implicit object if comma is the last character
and what comes after doesnt look like it belongs.
@@ -826,11 +845,11 @@ e = <span class="hljs-number">2</span>
</li>
<li id="section-33">
<li id="section-34">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-33">&#182;</a>
<a class="pilcrow" href="#section-34">&#182;</a>
</div>
<p>When nextTag is OUTDENT the comma is insignificant and
should just be ignored so embed it in the implicit object.</p>
@@ -848,11 +867,11 @@ array further up the stack, so give it a chance.</p>
</li>
<li id="section-34">
<li id="section-35">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-34">&#182;</a>
<a class="pilcrow" href="#section-35">&#182;</a>
</div>
<p>Add location data to all tokens generated by the rewriter.</p>
@@ -878,11 +897,11 @@ array further up the stack, so give it a chance.</p>
</li>
<li id="section-35">
<li id="section-36">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-35">&#182;</a>
<a class="pilcrow" href="#section-36">&#182;</a>
</div>
<p>OUTDENT tokens should always be positioned at the last character of the
previous token, so that AST nodes ending in an OUTDENT token end up with a
@@ -906,11 +925,11 @@ location corresponding to the last “real” token under the node.</p>
</li>
<li id="section-36">
<li id="section-37">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-36">&#182;</a>
<a class="pilcrow" href="#section-37">&#182;</a>
</div>
<p>Because our grammar is LALR(1), it cant handle some single-line
expressions that lack ending delimiters. The <strong>Rewriter</strong> adds the implicit
@@ -928,7 +947,8 @@ blocks are added.</p>
<span class="hljs-keyword">not</span> (token[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'TERMINATOR'</span> <span class="hljs-keyword">and</span> @tag(i + <span class="hljs-number">1</span>) <span class="hljs-keyword">in</span> EXPRESSION_CLOSE) <span class="hljs-keyword">and</span>
<span class="hljs-keyword">not</span> (token[<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'ELSE'</span> <span class="hljs-keyword">and</span> starter <span class="hljs-keyword">isnt</span> <span class="hljs-string">'THEN'</span>) <span class="hljs-keyword">and</span>
<span class="hljs-keyword">not</span> (token[<span class="hljs-number">0</span>] <span class="hljs-keyword">in</span> [<span class="hljs-string">'CATCH'</span>, <span class="hljs-string">'FINALLY'</span>] <span class="hljs-keyword">and</span> starter <span class="hljs-keyword">in</span> [<span class="hljs-string">'-&gt;'</span>, <span class="hljs-string">'=&gt;'</span>]) <span class="hljs-keyword">or</span>
token[<span class="hljs-number">0</span>] <span class="hljs-keyword">in</span> CALL_CLOSERS <span class="hljs-keyword">and</span> @tokens[i - <span class="hljs-number">1</span>].newLine
token[<span class="hljs-number">0</span>] <span class="hljs-keyword">in</span> CALL_CLOSERS <span class="hljs-keyword">and</span>
(@tokens[i - <span class="hljs-number">1</span>].newLine <span class="hljs-keyword">or</span> @tokens[i - <span class="hljs-number">1</span>][<span class="hljs-number">0</span>] <span class="hljs-keyword">is</span> <span class="hljs-string">'OUTDENT'</span>)
<span class="hljs-function">
<span class="hljs-title">action</span> = <span class="hljs-params">(token, i)</span> -&gt;</span>
@tokens.splice (<span class="hljs-keyword">if</span> @tag(i - <span class="hljs-number">1</span>) <span class="hljs-keyword">is</span> <span class="hljs-string">','</span> <span class="hljs-keyword">then</span> i - <span class="hljs-number">1</span> <span class="hljs-keyword">else</span> i), <span class="hljs-number">0</span>, outdent
@@ -960,11 +980,11 @@ blocks are added.</p>
</li>
<li id="section-37">
<li id="section-38">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-37">&#182;</a>
<a class="pilcrow" href="#section-38">&#182;</a>
</div>
<p>Tag postfix conditionals as such, so that we can parse them with a
different precedence.</p>
@@ -993,11 +1013,11 @@ different precedence.</p>
</li>
<li id="section-38">
<li id="section-39">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-38">&#182;</a>
<a class="pilcrow" href="#section-39">&#182;</a>
</div>
<p>Generate the indentation tokens, based on another token on the same line.</p>
@@ -1018,11 +1038,11 @@ different precedence.</p>
</li>
<li id="section-39">
<li id="section-40">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-39">&#182;</a>
<a class="pilcrow" href="#section-40">&#182;</a>
</div>
<p>Look up a tag by token index.</p>
@@ -1033,26 +1053,14 @@ different precedence.</p>
</li>
<li id="section-40">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-40">&#182;</a>
</div>
<h2 id="constants">Constants</h2>
</div>
</li>
<li id="section-41">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-41">&#182;</a>
</div>
<h2 id="constants">Constants</h2>
</div>
</li>
@@ -1064,6 +1072,18 @@ different precedence.</p>
<div class="pilwrap ">
<a class="pilcrow" href="#section-42">&#182;</a>
</div>
</div>
</li>
<li id="section-43">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-43">&#182;</a>
</div>
<p>List of the token pairs that must be balanced.</p>
</div>
@@ -1083,11 +1103,11 @@ different precedence.</p>
</li>
<li id="section-43">
<li id="section-44">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-43">&#182;</a>
<a class="pilcrow" href="#section-44">&#182;</a>
</div>
<p>The inverse mappings of <code>BALANCED_PAIRS</code> were trying to fix up, so we can
look things up from either end.</p>
@@ -1099,11 +1119,11 @@ look things up from either end.</p>
</li>
<li id="section-44">
<li id="section-45">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-44">&#182;</a>
<a class="pilcrow" href="#section-45">&#182;</a>
</div>
<p>The tokens that signal the start/end of a balanced pair.</p>
@@ -1119,11 +1139,11 @@ EXPRESSION_END = []
</li>
<li id="section-45">
<li id="section-46">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-45">&#182;</a>
<a class="pilcrow" href="#section-46">&#182;</a>
</div>
<p>Tokens that indicate the close of a clause of an expression.</p>
@@ -1134,11 +1154,11 @@ EXPRESSION_END = []
</li>
<li id="section-46">
<li id="section-47">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-46">&#182;</a>
<a class="pilcrow" href="#section-47">&#182;</a>
</div>
<p>Tokens that, if followed by an <code>IMPLICIT_CALL</code>, indicate a function invocation.</p>
@@ -1149,11 +1169,11 @@ EXPRESSION_END = []
</li>
<li id="section-47">
<li id="section-48">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-47">&#182;</a>
<a class="pilcrow" href="#section-48">&#182;</a>
</div>
<p>If preceded by an <code>IMPLICIT_FUNC</code>, indicates a function invocation.</p>
@@ -1173,11 +1193,11 @@ IMPLICIT_UNSPACED_CALL = [<span class="hljs-string">'+'</span>, <span class="hlj
</li>
<li id="section-48">
<li id="section-49">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-48">&#182;</a>
<a class="pilcrow" href="#section-49">&#182;</a>
</div>
<p>Tokens that always mark the end of an implicit call for single-liners.</p>
@@ -1189,11 +1209,11 @@ IMPLICIT_UNSPACED_CALL = [<span class="hljs-string">'+'</span>, <span class="hlj
</li>
<li id="section-49">
<li id="section-50">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-49">&#182;</a>
<a class="pilcrow" href="#section-50">&#182;</a>
</div>
<p>Single-line flavors of block expressions that have unclosed endings.
The grammar cant disambiguate them, so we insert the implicit indentation.</p>
@@ -1206,11 +1226,11 @@ SINGLE_CLOSERS = [<span class="hljs-string">'TERMINATOR'</span>, <span class="
</li>
<li id="section-50">
<li id="section-51">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-50">&#182;</a>
<a class="pilcrow" href="#section-51">&#182;</a>
</div>
<p>Tokens that end a line.</p>
@@ -1221,11 +1241,11 @@ SINGLE_CLOSERS = [<span class="hljs-string">'TERMINATOR'</span>, <span class="
</li>
<li id="section-51">
<li id="section-52">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-51">&#182;</a>
<a class="pilcrow" href="#section-52">&#182;</a>
</div>
<p>Tokens that close open calls when they follow a newline.</p>

View File

@@ -218,9 +218,9 @@ already exist.</p>
</div>
<div class="content"><div class='highlight'><pre> find: <span class="hljs-function"><span class="hljs-params">(name)</span> -&gt;</span>
<div class="content"><div class='highlight'><pre> find: <span class="hljs-function"><span class="hljs-params">(name, type = <span class="hljs-string">'var'</span>)</span> -&gt;</span>
<span class="hljs-keyword">return</span> <span class="hljs-literal">yes</span> <span class="hljs-keyword">if</span> @check name
@add name, <span class="hljs-string">'var'</span>
@add name, type
<span class="hljs-literal">no</span></pre></div></div>
</li>

View File

@@ -406,7 +406,7 @@ column for the current line:</p>
</div>
<p>Note that SourceMap VLQ encoding is “backwards”. MIDI-style VLQ encoding puts
the most-significant-bit (MSB) from the original value into the MSB of the VLQ
encoded value (see <a href="http://en.wikipedia.org/wiki/File:Uintvar_coding.svg">Wikipedia</a>).
encoded value (see <a href="https://en.wikipedia.org/wiki/File:Uintvar_coding.svg">Wikipedia</a>).
SourceMap VLQ does things the other way around, with the least significat four
bits of the original value encoded into the first byte of the VLQ encoded value.</p>

View File

@@ -1,398 +1,405 @@
/**
* CoffeeScript Compiler v1.12.3
* CoffeeScript Compiler v1.12.8
* http://coffeescript.org
*
* Copyright 2011, Jeremy Ashkenas
* Released under the MIT License
*/
var $jscomp={scope:{},checkStringArgs:function(u,ya,qa){if(null==u)throw new TypeError("The 'this' value for String.prototype."+qa+" must not be null or undefined");if(ya instanceof RegExp)throw new TypeError("First argument to String.prototype."+qa+" must not be a regular expression");return u+""}};
$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(u,ya,qa){if(qa.get||qa.set)throw new TypeError("ES3 does not support getters and setters.");u!=Array.prototype&&u!=Object.prototype&&(u[ya]=qa.value)};$jscomp.getGlobal=function(u){return"undefined"!=typeof window&&window===u?u:"undefined"!=typeof global&&null!=global?global:u};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(u,ya,qa,g){if(ya){qa=$jscomp.global;u=u.split(".");for(g=0;g<u.length-1;g++){var ua=u[g];ua in qa||(qa[ua]={});qa=qa[ua]}u=u[u.length-1];g=qa[u];ya=ya(g);ya!=g&&null!=ya&&$jscomp.defineProperty(qa,u,{configurable:!0,writable:!0,value:ya})}};
$jscomp.polyfill("String.prototype.repeat",function(u){return u?u:function(u){var qa=$jscomp.checkStringArgs(this,null,"repeat");if(0>u||1342177279<u)throw new RangeError("Invalid count value");u|=0;for(var g="";u;)if(u&1&&(g+=qa),u>>>=1)qa+=qa;return g}},"es6-impl","es3");$jscomp.findInternal=function(u,ya,qa){u instanceof String&&(u=String(u));for(var g=u.length,ua=0;ua<g;ua++){var xa=u[ua];if(ya.call(qa,xa,ua,u))return{i:ua,v:xa}}return{i:-1,v:void 0}};
$jscomp.polyfill("Array.prototype.find",function(u){return u?u:function(u,qa){return $jscomp.findInternal(this,u,qa).v}},"es6-impl","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(u){return $jscomp.SYMBOL_PREFIX+(u||"")+$jscomp.symbolCounter_++};
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.checkStringArgs=function(u,xa,ya){if(null==u)throw new TypeError("The 'this' value for String.prototype."+ya+" must not be null or undefined");if(xa instanceof RegExp)throw new TypeError("First argument to String.prototype."+ya+" must not be a regular expression");return u+""};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(u,xa,ya){u!=Array.prototype&&u!=Object.prototype&&(u[xa]=ya.value)};$jscomp.getGlobal=function(u){return"undefined"!=typeof window&&window===u?u:"undefined"!=typeof global&&null!=global?global:u};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(u,xa,ya,e){if(xa){ya=$jscomp.global;u=u.split(".");for(e=0;e<u.length-1;e++){var ra=u[e];ra in ya||(ya[ra]={});ya=ya[ra]}u=u[u.length-1];e=ya[u];xa=xa(e);xa!=e&&null!=xa&&$jscomp.defineProperty(ya,u,{configurable:!0,writable:!0,value:xa})}};
$jscomp.polyfill("String.prototype.repeat",function(u){return u?u:function(u){var ya=$jscomp.checkStringArgs(this,null,"repeat");if(0>u||1342177279<u)throw new RangeError("Invalid count value");u|=0;for(var e="";u;)if(u&1&&(e+=ya),u>>>=1)ya+=ya;return e}},"es6","es3");$jscomp.findInternal=function(u,xa,ya){u instanceof String&&(u=String(u));for(var e=u.length,ra=0;ra<e;ra++){var r=u[ra];if(xa.call(ya,r,ra,u))return{i:ra,v:r}}return{i:-1,v:void 0}};
$jscomp.polyfill("Array.prototype.find",function(u){return u?u:function(u,ya){return $jscomp.findInternal(this,u,ya).v}},"es6","es3");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var u=0;return function(xa){return $jscomp.SYMBOL_PREFIX+(xa||"")+u++}}();
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var u=$jscomp.global.Symbol.iterator;u||(u=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[u]&&$jscomp.defineProperty(Array.prototype,u,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};
$jscomp.arrayIterator=function(u){var ya=0;return $jscomp.iteratorPrototype(function(){return ya<u.length?{done:!1,value:u[ya++]}:{done:!0}})};$jscomp.iteratorPrototype=function(u){$jscomp.initSymbolIterator();u={next:u};u[$jscomp.global.Symbol.iterator]=function(){return this};return u};$jscomp.array=$jscomp.array||{};
$jscomp.iteratorFromArray=function(u,ya){$jscomp.initSymbolIterator();u instanceof String&&(u+="");var qa=0,g={next:function(){if(qa<u.length){var ua=qa++;return{value:ya(ua,u[ua]),done:!1}}g.next=function(){return{done:!0,value:void 0}};return g.next()}};g[Symbol.iterator]=function(){return g};return g};$jscomp.polyfill("Array.prototype.keys",function(u){return u?u:function(){return $jscomp.iteratorFromArray(this,function(u){return u})}},"es6-impl","es3");
(function(u){var ya=function(){function u(g){return u[g]}u["../../package.json"]={name:"coffee-script",description:"Unfancy JavaScript",keywords:["javascript","language","coffeescript","compiler"],author:"Jeremy Ashkenas",version:"1.12.3",license:"MIT",engines:{node:"\x3e\x3d0.8.0"},directories:{lib:"./lib/coffee-script"},main:"./lib/coffee-script/coffee-script",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],preferGlobal:!0,scripts:{test:"node ./bin/cake test",
"test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{docco:"~0.7.0","google-closure-compiler-js":"^20161201.0.1","highlight.js":"~9.9.0",jison:"\x3e\x3d0.4.17",marked:"^0.3.6",underscore:"~1.8.3"}};u["./helpers"]=function(){var g={};(function(){var u,xa,q,a,c,Ca;g.starts=function(a,c,l){return c===a.substr(l,c.length)};g.ends=
function(a,c,l){var f;f=c.length;return c===a.substr(a.length-f-(l||0),f)};g.repeat=c=function(a,c){var f;for(f="";0<c;)c&1&&(f+=a),c>>>=1,a+=a;return f};g.compact=function(a){var f,c,g,q;q=[];f=0;for(g=a.length;f<g;f++)(c=a[f])&&q.push(c);return q};g.count=function(a,c){var f,D;f=D=0;if(!c.length)return 1/0;for(;D=1+a.indexOf(c,D);)f++;return f};g.merge=function(a,c){return xa(xa({},a),c)};xa=g.extend=function(a,c){var f,D;for(f in c)D=c[f],a[f]=D;return a};g.flatten=q=function(a){var f,c,g,G;c=
[];g=0;for(G=a.length;g<G;g++)f=a[g],"[object Array]"===Object.prototype.toString.call(f)?c=c.concat(q(f)):c.push(f);return c};g.del=function(a,c){var f;f=a[c];delete a[c];return f};g.some=null!=(a=Array.prototype.some)?a:function(a){var f,c,g;c=0;for(g=this.length;c<g;c++)if(f=this[c],a(f))return!0;return!1};g.invertLiterate=function(a){var f;f=!0;var c,g,q,F;q=a.split("\n");F=[];c=0;for(g=q.length;c<g;c++)a=q[c],f&&/^([ ]{4}|[ ]{0,3}\t)/.test(a)?F.push(a):(f=/^\s*$/.test(a))?F.push(a):F.push("# "+
a);return F.join("\n")};u=function(a,c){return c?{first_line:a.first_line,first_column:a.first_column,last_line:c.last_line,last_column:c.last_column}:a};g.addLocationDataFn=function(a,c){return function(f){"object"===typeof f&&f.updateLocationDataIfMissing&&f.updateLocationDataIfMissing(u(a,c));return f}};g.locationDataToString=function(a){var f;"2"in a&&"first_line"in a[2]?f=a[2]:"first_line"in a&&(f=a);return f?f.first_line+1+":"+(f.first_column+1)+"-"+(f.last_line+1+":"+(f.last_column+1)):"No location data"};
g.baseFileName=function(a,c,g){null==c&&(c=!1);null==g&&(g=!1);a=a.split(g?/\\|\//:/\//);a=a[a.length-1];if(!(c&&0<=a.indexOf(".")))return a;a=a.split(".");a.pop();"coffee"===a[a.length-1]&&1<a.length&&a.pop();return a.join(".")};g.isCoffee=function(a){return/\.((lit)?coffee|coffee\.md)$/.test(a)};g.isLiterate=function(a){return/\.(litcoffee|coffee\.md)$/.test(a)};g.throwSyntaxError=function(a,c){a=new SyntaxError(a);a.location=c;a.toString=Ca;a.stack=a.toString();throw a;};g.updateSyntaxError=function(a,
c,g){a.toString===Ca&&(a.code||(a.code=c),a.filename||(a.filename=g),a.stack=a.toString());return a};Ca=function(){var a,g,l,q,G,F,x,v,M,u;if(!this.code||!this.location)return Error.prototype.toString.call(this);a=this.location;F=a.first_line;G=a.first_column;l=a.last_line;x=a.last_column;null==l&&(l=F);null==x&&(x=G);q=this.filename||"[stdin]";a=this.code.split("\n")[F];l=F===l?x+1:a.length;x=a.slice(0,G).replace(/[^\s]/g," ")+c("^",l-G);"undefined"!==typeof process&&null!==process&&(g=(null!=(v=
process.stdout)?v.isTTY:void 0)&&!(null!=(M=process.env)&&M.NODE_DISABLE_COLORS));if(null!=(u=this.colorful)?u:g)g=function(a){return"\u001b[1;31m"+a+"\u001b[0m"},a=a.slice(0,G)+g(a.slice(G,l))+a.slice(l),x=g(x);return q+":"+(F+1)+":"+(G+1)+": error: "+this.message+"\n"+a+"\n"+x};g.nameWhitespaceCharacter=function(a){switch(a){case " ":return"space";case "\n":return"newline";case "\r":return"carriage return";case "\t":return"tab";default:return a}}}).call(this);return g}();u["./rewriter"]=function(){var g=
{};(function(){var u,xa,q,a,c,Ca,f,D,l,w,G,F,x,v,M,N,J,r,E=[].indexOf||function(a){for(var c=0,f=this.length;c<f;c++)if(c in this&&this[c]===a)return c;return-1},O=[].slice;v=function(a,c,f){a=[a,c];a.generated=!0;f&&(a.origin=f);return a};g.Rewriter=function(){function k(){}k.prototype.rewrite=function(a){this.tokens=a;this.removeLeadingNewlines();this.closeOpenCalls();this.closeOpenIndexes();this.normalizeLines();this.tagPostfixConditionals();this.addImplicitBracesAndParens();this.addLocationDataToGeneratedTokens();
this.fixOutdentLocationData();return this.tokens};k.prototype.scanTokens=function(a){var c,m,h;h=this.tokens;for(c=0;m=h[c];)c+=a.call(this,m,c,h);return!0};k.prototype.detectEnd=function(m,f,p){var h,t,k,g,H;H=this.tokens;for(h=0;g=H[m];){if(0===h&&f.call(this,g,m))return p.call(this,g,m);if(!g||0>h)return p.call(this,g,m-1);(t=g[0],0<=E.call(c,t))?h+=1:(k=g[0],0<=E.call(a,k))&&--h;m+=1}return m-1};k.prototype.removeLeadingNewlines=function(){var a,c,f,h,y;h=this.tokens;a=c=0;for(f=h.length;c<f&&
(y=h[a][0],"TERMINATOR"===y);a=++c);if(a)return this.tokens.splice(0,a)};k.prototype.closeOpenCalls=function(){var a,c;c=function(a,c){var h;return")"===(h=a[0])||"CALL_END"===h||"OUTDENT"===a[0]&&")"===this.tag(c-1)};a=function(a,c){return this.tokens["OUTDENT"===a[0]?c-1:c][0]="CALL_END"};return this.scanTokens(function(f,h){"CALL_START"===f[0]&&this.detectEnd(h+1,c,a);return 1})};k.prototype.closeOpenIndexes=function(){var a,c;c=function(a,c){var h;return"]"===(h=a[0])||"INDEX_END"===h};a=function(a,
c){return a[0]="INDEX_END"};return this.scanTokens(function(f,h){"INDEX_START"===f[0]&&this.detectEnd(h+1,c,a);return 1})};k.prototype.indexOfTag=function(){var a,c,f,h,g,k,A;c=arguments[0];g=2<=arguments.length?O.call(arguments,1):[];f=h=a=0;for(k=g.length;0<=k?h<k:h>k;f=0<=k?++h:--h){for(;"HERECOMMENT"===this.tag(c+f+a);)a+=2;if(null!=g[f]&&("string"===typeof g[f]&&(g[f]=[g[f]]),A=this.tag(c+f+a),0>E.call(g[f],A)))return-1}return c+f+a-1};k.prototype.looksObjectish=function(f){var m;if(-1<this.indexOfTag(f,
"@",null,":")||-1<this.indexOfTag(f,null,":"))return!0;f=this.indexOfTag(f,c);return-1<f&&(m=null,this.detectEnd(f+1,function(c){var h;return h=c[0],0<=E.call(a,h)},function(a,c){return m=c}),":"===this.tag(m+1))?!0:!1};k.prototype.findTagsBackwards=function(f,g){var m,h,k,t,A,H,l;for(m=[];0<=f&&(m.length||(t=this.tag(f),0>E.call(g,t))&&((A=this.tag(f),0>E.call(c,A))||this.tokens[f].generated)&&(H=this.tag(f),0>E.call(G,H)));)(h=this.tag(f),0<=E.call(a,h))&&m.push(this.tag(f)),(k=this.tag(f),0<=E.call(c,
k))&&m.length&&m.pop(),--f;return l=this.tag(f),0<=E.call(g,l)};k.prototype.addImplicitBracesAndParens=function(){var m,g;m=[];g=null;return this.scanTokens(function(k,h,t){var p,A,y,q,r,I,w,x,z,B,u,C,M,F,J,N,O,K;K=k[0];B=(u=0<h?t[h-1]:[])[0];z=(h<t.length-1?t[h+1]:[])[0];J=function(){return m[m.length-1]};N=h;y=function(a){return h-N+a};q=function(){var a,c;return null!=(a=J())?null!=(c=a[2])?c.ours:void 0:void 0};r=function(){var a;return q()&&"("===(null!=(a=J())?a[0]:void 0)};w=function(){var a;
return q()&&"{"===(null!=(a=J())?a[0]:void 0)};I=function(){var a;return q&&"CONTROL"===(null!=(a=J())?a[0]:void 0)};O=function(a){var c;c=null!=a?a:h;m.push(["(",c,{ours:!0}]);t.splice(c,0,v("CALL_START","("));if(null==a)return h+=1};p=function(){m.pop();t.splice(h,0,v("CALL_END",")",["","end of input",k[2]]));return h+=1};x=function(a,c){var f;null==c&&(c=!0);f=null!=a?a:h;m.push(["{",f,{sameLine:!0,startsLine:c,ours:!0}]);c=new String("{");c.generated=!0;t.splice(f,0,v("{",c,k));if(null==a)return h+=
1};A=function(a){a=null!=a?a:h;m.pop();t.splice(a,0,v("}","}",k));return h+=1};if(r()&&("IF"===K||"TRY"===K||"FINALLY"===K||"CATCH"===K||"CLASS"===K||"SWITCH"===K))return m.push(["CONTROL",h,{ours:!0}]),y(1);if("INDENT"===K&&q()){if("\x3d\x3e"!==B&&"-\x3e"!==B&&"["!==B&&"("!==B&&","!==B&&"{"!==B&&"TRY"!==B&&"ELSE"!==B&&"\x3d"!==B)for(;r();)p();I()&&m.pop();m.push([K,h]);return y(1)}if(0<=E.call(c,K))return m.push([K,h]),y(1);if(0<=E.call(a,K)){for(;q();)r()?p():w()?A():m.pop();g=m.pop()}if((0<=E.call(D,
K)&&k.spaced||"?"===K&&0<h&&!t[h-1].spaced)&&(0<=E.call(Ca,z)||0<=E.call(l,z)&&(null==(C=t[h+1])||!C.spaced)&&(null==(M=t[h+1])||!M.newLine)))return"?"===K&&(K=k[0]="FUNC_EXIST"),O(h+1),y(2);if(0<=E.call(D,K)&&-1<this.indexOfTag(h+1,"INDENT")&&this.looksObjectish(h+2)&&!this.findTagsBackwards(h,"CLASS EXTENDS IF CATCH SWITCH LEADING_WHEN FOR WHILE UNTIL".split(" ")))return O(h+1),m.push(["INDENT",h+2]),y(3);if(":"===K){for(A=function(){var c;switch(!1){case c=this.tag(h-1),0>E.call(a,c):return g[1];
case "@"!==this.tag(h-2):return h-2;default:return h-1}}.call(this);"HERECOMMENT"===this.tag(A-2);)A-=2;this.insideForDeclaration="FOR"===z;I=0===A||(F=this.tag(A-1),0<=E.call(G,F))||t[A-1].newLine;if(J()&&(w=J(),F=w[0],u=w[1],("{"===F||"INDENT"===F&&"{"===this.tag(u-1))&&(I||","===this.tag(A-1)||"{"===this.tag(A-1))))return y(1);x(A,!!I);return y(2)}w()&&0<=E.call(G,K)&&(J()[2].sameLine=!1);x="OUTDENT"===B||u.newLine;if(0<=E.call(f,K)||0<=E.call(xa,K)&&x)for(;q();)if(x=J(),F=x[0],u=x[1],F=x[2],x=
F.sameLine,I=F.startsLine,r()&&","!==B)p();else if(w()&&!this.insideForDeclaration&&x&&"TERMINATOR"!==K&&":"!==B)A();else if(!w()||"TERMINATOR"!==K||","===B||I&&this.looksObjectish(h+1))break;else{if("HERECOMMENT"===z)return y(1);A()}if(!(","!==K||this.looksObjectish(h+1)||!w()||this.insideForDeclaration||"TERMINATOR"===z&&this.looksObjectish(h+2)))for(z="OUTDENT"===z?1:0;w();)A(h+z);return y(1)})};k.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(a,c,f){var h,
m,g;if(a[2]||!a.generated&&!a.explicit)return 1;"{"===a[0]&&(h=null!=(g=f[c+1])?g[2]:void 0)?(m=h.first_line,h=h.first_column):(h=null!=(m=f[c-1])?m[2]:void 0)?(m=h.last_line,h=h.last_column):m=h=0;a[2]={first_line:m,first_column:h,last_line:m,last_column:h};return 1})};k.prototype.fixOutdentLocationData=function(){return this.scanTokens(function(a,c,f){if(!("OUTDENT"===a[0]||a.generated&&"CALL_END"===a[0]||a.generated&&"}"===a[0]))return 1;c=f[c-1][2];a[2]={first_line:c.last_line,first_column:c.last_column,
last_line:c.last_line,last_column:c.last_column};return 1})};k.prototype.normalizeLines=function(){var a,c,f,h,g;g=f=h=null;c=function(a,c){var f,h,m,k;return";"!==a[1]&&(f=a[0],0<=E.call(F,f))&&!("TERMINATOR"===a[0]&&(h=this.tag(c+1),0<=E.call(q,h)))&&!("ELSE"===a[0]&&"THEN"!==g)&&!!("CATCH"!==(m=a[0])&&"FINALLY"!==m||"-\x3e"!==g&&"\x3d\x3e"!==g)||(k=a[0],0<=E.call(xa,k))&&this.tokens[c-1].newLine};a=function(a,c){return this.tokens.splice(","===this.tag(c-1)?c-1:c,0,h)};return this.scanTokens(function(m,
k,t){var p,y,l;m=m[0];if("TERMINATOR"===m){if("ELSE"===this.tag(k+1)&&"OUTDENT"!==this.tag(k-1))return t.splice.apply(t,[k,1].concat(O.call(this.indentation()))),1;if(p=this.tag(k+1),0<=E.call(q,p))return t.splice(k,1),0}if("CATCH"===m)for(p=y=1;2>=y;p=++y)if("OUTDENT"===(l=this.tag(k+p))||"TERMINATOR"===l||"FINALLY"===l)return t.splice.apply(t,[k+p,0].concat(O.call(this.indentation()))),2+p;0<=E.call(x,m)&&"INDENT"!==this.tag(k+1)&&("ELSE"!==m||"IF"!==this.tag(k+1))&&(g=m,l=this.indentation(t[k]),
f=l[0],h=l[1],"THEN"===g&&(f.fromThen=!0),t.splice(k+1,0,f),this.detectEnd(k+2,c,a),"THEN"===m&&t.splice(k,1));return 1})};k.prototype.tagPostfixConditionals=function(){var a,c,f;f=null;c=function(a,c){a=a[0];c=this.tokens[c-1][0];return"TERMINATOR"===a||"INDENT"===a&&0>E.call(x,c)};a=function(a,c){if("INDENT"!==a[0]||a.generated&&!a.fromThen)return f[0]="POST_"+f[0]};return this.scanTokens(function(h,m){if("IF"!==h[0])return 1;f=h;this.detectEnd(m+1,c,a);return 1})};k.prototype.indentation=function(a){var c,
f;c=["INDENT",2];f=["OUTDENT",2];a?(c.generated=f.generated=!0,c.origin=f.origin=a):c.explicit=f.explicit=!0;return[c,f]};k.prototype.generate=v;k.prototype.tag=function(a){var c;return null!=(c=this.tokens[a])?c[0]:void 0};return k}();u=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]];g.INVERSES=w={};c=[];a=[];M=0;for(J=u.length;M<J;M++)r=u[M],N=r[0],r=r[1],
c.push(w[r]=N),a.push(w[N]=r);q=["CATCH","THEN","ELSE","FINALLY"].concat(a);D="IDENTIFIER PROPERTY SUPER ) CALL_END ] INDEX_END @ THIS".split(" ");Ca="IDENTIFIER PROPERTY NUMBER INFINITY NAN STRING STRING_START REGEX REGEX_START JS NEW PARAM_START CLASS IF TRY SWITCH THIS UNDEFINED NULL BOOL UNARY YIELD UNARY_MATH SUPER THROW @ -\x3e \x3d\x3e [ ( { -- ++".split(" ");l=["+","-"];f="POST_IF FOR WHILE UNTIL WHEN BY LOOP TERMINATOR".split(" ");x="ELSE -\x3e \x3d\x3e TRY FINALLY THEN".split(" ");F="TERMINATOR CATCH FINALLY ELSE OUTDENT LEADING_WHEN".split(" ");
G=["TERMINATOR","INDENT","OUTDENT"];xa=[".","?.","::","?::"]}).call(this);return g}();u["./lexer"]=function(){var g={};(function(){var ua,xa,q,a,c,Ca,f,D,l,w,G,F,x,v,M,N,J,r,E,O,k,m,t,p,h,y,P,A,H,U,T,I,aa,S,z,B,W,C,Q,X,Y,V,Z,K,ba,R,qa,ya,Xa,ka,ca,ea,ga,ha,la,pa,L,ja,ra,da=[].indexOf||function(a){for(var c=0,f=this.length;c<f;c++)if(c in this&&this[c]===a)return c;return-1},ma=[].slice;L=u("./rewriter");C=L.Rewriter;k=L.INVERSES;L=u("./helpers");ea=L.count;ja=L.repeat;ga=L.invertLiterate;ra=L.throwSyntaxError;
g.Lexer=function(){function g(){}g.prototype.tokenize=function(a,c){var f,ia,h,g;null==c&&(c={});this.literate=c.literate;this.outdebt=this.indebt=this.baseIndent=this.indent=0;this.indents=[];this.ends=[];this.tokens=[];this.exportSpecifierList=this.seenExport=this.seenImport=this.seenFor=!1;this.chunkLine=c.line||0;this.chunkColumn=c.column||0;a=this.clean(a);for(h=0;this.chunk=a.slice(h);)if(f=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||
this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),g=this.getLineAndColumnFromChunk(f),this.chunkLine=g[0],this.chunkColumn=g[1],h+=f,c.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:h};this.closeIndentation();(ia=this.ends.pop())&&this.error("missing "+ia.tag,ia.origin[2]);return!1===c.rewrite?this.tokens:(new C).rewrite(this.tokens)};g.prototype.clean=function(a){a.charCodeAt(0)===ua&&(a=a.slice(1));a=a.replace(/\r/g,"").replace(qa,"");ca.test(a)&&(a=
"\n"+a,this.chunkLine--);this.literate&&(a=ga(a));return a};g.prototype.identifierToken=function(){var f,g,k,m,p,y,l,A,q,v,r;if(!(g=J.exec(this.chunk)))return 0;p=g[0];k=g[1];g=g[2];m=k.length;y=void 0;if("own"===k&&"FOR"===this.tag())return this.token("OWN",k),k.length;if("from"===k&&"YIELD"===this.tag())return this.token("FROM",k),k.length;if("as"===k&&this.seenImport){if("*"===this.value())this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(l=this.value(),0<=da.call(Ca,l))this.tokens[this.tokens.length-
1][0]="IDENTIFIER";if("DEFAULT"===(A=this.tag())||"IMPORT_ALL"===A||"IDENTIFIER"===A)return this.token("AS",k),k.length}if("as"===k&&this.seenExport&&"IDENTIFIER"===this.tag())return this.token("AS",k),k.length;if("default"===k&&this.seenExport)return this.token("DEFAULT",k),k.length;l=this.tokens;l=l[l.length-1];r=g||null!=l&&("."===(q=l[0])||"?."===q||"::"===q||"?::"===q||!l.spaced&&"@"===l[0])?"PROPERTY":"IDENTIFIER";"IDENTIFIER"!==r||!(0<=da.call(t,k)||0<=da.call(Ca,k))||this.exportSpecifierList&&
0<=da.call(Ca,k)?"IDENTIFIER"===r&&this.seenFor&&"from"===k&&ha(l)&&(r="FORFROM",this.seenFor=!1):(r=k.toUpperCase(),"WHEN"===r&&(v=this.tag(),0<=da.call(h,v))?r="LEADING_WHEN":"FOR"===r?this.seenFor=!0:"UNLESS"===r?r="IF":"IMPORT"===r?this.seenImport=!0:"EXPORT"===r?this.seenExport=!0:0<=da.call(ya,r)?r="UNARY":0<=da.call(B,r)&&("INSTANCEOF"!==r&&this.seenFor?(r="FOR"+r,this.seenFor=!1):(r="RELATION","!"===this.value()&&(y=this.tokens.pop(),k="!"+k))));"IDENTIFIER"===r&&0<=da.call(W,k)&&this.error("reserved word '"+
k+"'",{length:k.length});"PROPERTY"!==r&&(0<=da.call(a,k)&&(f=k,k=c[k]),r=function(){switch(k){case "!":return"UNARY";case "\x3d\x3d":case "!\x3d":return"COMPARE";case "true":case "false":return"BOOL";case "break":case "continue":case "debugger":return"STATEMENT";case "\x26\x26":case "||":return k;default:return r}}());q=this.token(r,k,0,m);f&&(q.origin=[r,f,q[2]]);y&&(f=[y[2].first_line,y[2].first_column],q[2].first_line=f[0],q[2].first_column=f[1]);g&&(f=p.lastIndexOf(":"),this.token(":",":",f,
g.length));return p.length};g.prototype.numberToken=function(){var a,c,f,h;if(!(c=U.exec(this.chunk)))return 0;f=c[0];c=f.length;switch(!1){case !/^0[BOX]/.test(f):this.error("radix prefix in '"+f+"' must be lowercase",{offset:1});break;case !/^(?!0x).*E/.test(f):this.error("exponential notation in '"+f+"' must be indicated with a lowercase 'e'",{offset:f.indexOf("E")});break;case !/^0\d*[89]/.test(f):this.error("decimal literal '"+f+"' must not be prefixed with '0'",{length:c});break;case !/^0\d+/.test(f):this.error("octal literal '"+
f+"' must be prefixed with '0o'",{length:c})}a=function(){switch(f.charAt(1)){case "b":return 2;case "o":return 8;case "x":return 16;default:return null}}();a=null!=a?parseInt(f.slice(2),a):parseFloat(f);if("b"===(h=f.charAt(1))||"o"===h)f="0x"+a.toString(16);this.token(Infinity===a?"INFINITY":"NUMBER",f,0,c);return c};g.prototype.stringToken=function(){var a,c,f,h,g,k,m,t,l,r,y,q;l=(ba.exec(this.chunk)||[])[0];if(!l)return 0;this.tokens.length&&"from"===this.value()&&(this.seenImport||this.seenExport)&&
(this.tokens[this.tokens.length-1][0]="FROM");f=function(){switch(l){case "'":return K;case '"':return V;case "'''":return x;case '"""':return G}}();h=3===l.length;f=this.matchWithInterpolations(f,l);q=f.tokens;g=f.index;a=q.length-1;f=l.charAt(0);if(h){m=null;for(h=function(){var a,c,f;f=[];k=a=0;for(c=q.length;a<c;k=++a)y=q[k],"NEOSTRING"===y[0]&&f.push(y[1]);return f}().join("#{}");c=F.exec(h);)if(c=c[1],null===m||0<(r=c.length)&&r<m.length)m=c;m&&(t=RegExp("\\n"+m,"g"));this.mergeInterpolationTokens(q,
{delimiter:f},function(c){return function(f,h){f=c.formatString(f);t&&(f=f.replace(t,"\n"));0===h&&(f=f.replace(p,""));h===a&&(f=f.replace(R,""));return f}}(this))}else this.mergeInterpolationTokens(q,{delimiter:f},function(c){return function(f,h){f=c.formatString(f);return f=f.replace(X,function(c,g){return 0===h&&0===g||h===a&&g+c.length===f.length?"":" "})}}(this));return g};g.prototype.commentToken=function(){var a,c,h;if(!(h=this.chunk.match(f)))return 0;a=h[0];if(c=h[1])(h=w.exec(a))&&this.error("block comments cannot contain "+
h[0],{offset:h.index,length:h[0].length}),0<=c.indexOf("\n")&&(c=c.replace(RegExp("\\n"+ja(" ",this.indent),"g"),"\n")),this.token("HERECOMMENT",c,0,a.length);return a.length};g.prototype.jsToken=function(){var a,c;if("`"!==this.chunk.charAt(0)||!(a=N.exec(this.chunk)||m.exec(this.chunk)))return 0;c=a[1].replace(/\\+(`|$)/g,function(a){return a.slice(-Math.ceil(a.length/2))});this.token("JS",c,0,a[0].length);return a[0].length};g.prototype.regexToken=function(){var a,c,f,h,g,k,m,t;switch(!1){case !(c=
z.exec(this.chunk)):this.error("regular expressions cannot begin with "+c[2],{offset:c.index+c[1].length});break;case !(c=this.matchWithInterpolations(v,"///")):t=c.tokens;g=c.index;break;case !(c=aa.exec(this.chunk)):m=c[0];a=c[1];c=c[2];this.validateEscapes(a,{isRegex:!0,offsetInChunk:1});g=m.length;k=this.tokens;if(k=k[k.length-1])if(k.spaced&&(f=k[0],0<=da.call(xa,f))){if(!c||I.test(m))return 0}else if(h=k[0],0<=da.call(H,h))return 0;c||this.error("missing / (unclosed regex)");break;default:return 0}h=
S.exec(this.chunk.slice(g))[0];f=g+h.length;c=this.makeToken("REGEX",null,0,f);switch(!1){case !!ka.test(h):this.error("invalid regular expression flags "+h,{offset:g,length:h.length});break;case !(m||1===t.length):null==a&&(a=this.formatHeregex(t[0][1]));this.token("REGEX",""+this.makeDelimitedLiteral(a,{delimiter:"/"})+h,0,f,c);break;default:this.token("REGEX_START","(",0,0,c),this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),this.mergeInterpolationTokens(t,{delimiter:'"',double:!0},
this.formatHeregex),h&&(this.token(",",",",g,0),this.token("STRING",'"'+h+'"',g,h.length)),this.token(")",")",f,0),this.token("REGEX_END",")",f,0)}return f};g.prototype.lineToken=function(){var a,c,f;if(!(c=A.exec(this.chunk)))return 0;c=c[0];this.seenFor=!1;f=c.length-1-c.lastIndexOf("\n");a=this.unfinished();if(f-this.indebt===this.indent)return a?this.suppressNewlines():this.newlineToken(0),c.length;if(f>this.indent){if(a)return this.indebt=f-this.indent,this.suppressNewlines(),c.length;if(!this.tokens.length)return this.baseIndent=
this.indent=f,c.length;a=f-this.indent+this.outdebt;this.token("INDENT",a,c.length-f,f);this.indents.push(a);this.ends.push({tag:"OUTDENT"});this.outdebt=this.indebt=0;this.indent=f}else f<this.baseIndent?this.error("missing indentation",{offset:c.length}):(this.indebt=0,this.outdentToken(this.indent-f,a,c.length));return c.length};g.prototype.outdentToken=function(a,c,f){var h,g,k,m;for(h=this.indent-a;0<a;)(k=this.indents[this.indents.length-1])?k===this.outdebt?(a-=this.outdebt,this.outdebt=0):
k<this.outdebt?(this.outdebt-=k,a-=k):(g=this.indents.pop()+this.outdebt,f&&(m=this.chunk[f],0<=da.call(r,m))&&(h-=g-a,a=g),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",a,0,f),a-=g):a=0;g&&(this.outdebt-=a);for(;";"===this.value();)this.tokens.pop();"TERMINATOR"===this.tag()||c||this.token("TERMINATOR","\n",f,0);this.indent=h;return this};g.prototype.whitespaceToken=function(){var a,c;if(!(a=ca.exec(this.chunk))&&"\n"!==this.chunk.charAt(0))return 0;c=this.tokens;(c=c[c.length-1])&&(c[a?
"spaced":"newLine"]=!0);return a?a[0].length:0};g.prototype.newlineToken=function(a){for(;";"===this.value();)this.tokens.pop();"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",a,0);return this};g.prototype.suppressNewlines=function(){"\\"===this.value()&&this.tokens.pop();return this};g.prototype.literalToken=function(){var a,c,f,h,g,m,t,p;(a=T.exec(this.chunk))?(a=a[0],q.test(a)&&this.tagParameters()):a=this.chunk.charAt(0);p=a;h=this.tokens;if((h=h[h.length-1])&&0<=da.call(["\x3d"].concat(ma.call(l)),
a)&&(t=!1,"\x3d"!==a||"||"!==(f=h[1])&&"\x26\x26"!==f||h.spaced||(h[0]="COMPOUND_ASSIGN",h[1]+="\x3d",h=this.tokens[this.tokens.length-2],t=!0),h&&"PROPERTY"!==h[0]&&(f=null!=(c=h.origin)?c:h,(c=la(h[1],f[1]))&&this.error(c,f[2])),t))return a.length;"{"===a&&"EXPORT"===(null!=h?h[0]:void 0)?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===a&&(this.exportSpecifierList=!1);if(";"===a)this.seenFor=this.seenImport=this.seenExport=!1,p="TERMINATOR";else if("*"===a&&"EXPORT"===h[0])p="EXPORT_ALL";
else if(0<=da.call(P,a))p="MATH";else if(0<=da.call(D,a))p="COMPARE";else if(0<=da.call(l,a))p="COMPOUND_ASSIGN";else if(0<=da.call(ya,a))p="UNARY";else if(0<=da.call(Xa,a))p="UNARY_MATH";else if(0<=da.call(Q,a))p="SHIFT";else if("?"===a&&null!=h&&h.spaced)p="BIN?";else if(h&&!h.spaced)if("("===a&&(g=h[0],0<=da.call(xa,g)))"?"===h[0]&&(h[0]="FUNC_EXIST"),p="CALL_START";else if("["===a&&(m=h[0],0<=da.call(E,m)))switch(p="INDEX_START",h[0]){case "?":h[0]="INDEX_SOAK"}g=this.makeToken(p,a);switch(a){case "(":case "{":case "[":this.ends.push({tag:k[a],
origin:g});break;case ")":case "}":case "]":this.pair(a)}this.tokens.push(g);return a.length};g.prototype.tagParameters=function(){var a,c,f,h;if(")"!==this.tag())return this;c=[];h=this.tokens;a=h.length;for(h[--a][0]="PARAM_END";f=h[--a];)switch(f[0]){case ")":c.push(f);break;case "(":case "CALL_START":if(c.length)c.pop();else return"("===f[0]&&(f[0]="PARAM_START"),this}return this};g.prototype.closeIndentation=function(){return this.outdentToken(this.indent)};g.prototype.matchWithInterpolations=
function(a,c){var f,h,k,m,t,p,l,r;r=[];t=c.length;if(this.chunk.slice(0,t)!==c)return null;for(l=this.chunk.slice(t);;){m=a.exec(l)[0];this.validateEscapes(m,{isRegex:"/"===c.charAt(0),offsetInChunk:t});r.push(this.makeToken("NEOSTRING",m,t));l=l.slice(m.length);t+=m.length;if("#{"!==l.slice(0,2))break;f=this.getLineAndColumnFromChunk(t+1);m=f[0];f=f[1];f=(new g).tokenize(l.slice(1),{line:m,column:f,untilBalanced:!0});m=f.tokens;h=f.index;h+=1;p=m[0];f=m[m.length-1];p[0]=p[1]="(";f[0]=f[1]=")";f.origin=
["","end of interpolation",f[2]];"TERMINATOR"===(null!=(k=m[1])?k[0]:void 0)&&m.splice(1,1);r.push(["TOKENS",m]);l=l.slice(h);t+=h}l.slice(0,c.length)!==c&&this.error("missing "+c,{length:c.length});a=r[0];k=r[r.length-1];a[2].first_column-=c.length;"\n"===k[1].substr(-1)?(k[2].last_line+=1,k[2].last_column=c.length-1):k[2].last_column+=c.length;0===k[1].length&&--k[2].last_column;return{tokens:r,index:t+c.length}};g.prototype.mergeInterpolationTokens=function(a,c,f){var h,g,k,m,t,p,l,r,y,q,A,ia;
1<a.length&&(r=this.token("STRING_START","(",0,0));k=this.tokens.length;m=t=0;for(p=a.length;t<p;m=++t){q=a[m];h=q[0];ia=q[1];switch(h){case "TOKENS":if(2===ia.length)continue;l=ia[0];A=ia;break;case "NEOSTRING":h=f(q[1],m);if(0===h.length)if(0===m)g=this.tokens.length;else continue;2===m&&null!=g&&this.tokens.splice(g,2);q[0]="STRING";q[1]=this.makeDelimitedLiteral(h,c);l=q;A=[q]}this.tokens.length>k&&(m=this.token("+","+"),m[2]={first_line:l[2].first_line,first_column:l[2].first_column,last_line:l[2].first_line,
last_column:l[2].first_column});(y=this.tokens).push.apply(y,A)}if(r)return a=a[a.length-1],r.origin=["STRING",null,{first_line:r[2].first_line,first_column:r[2].first_column,last_line:a[2].last_line,last_column:a[2].last_column}],r=this.token("STRING_END",")"),r[2]={first_line:a[2].last_line,first_column:a[2].last_column,last_line:a[2].last_line,last_column:a[2].last_column}};g.prototype.pair=function(a){var c;c=this.ends;c=c[c.length-1];return a!==(c=null!=c?c.tag:void 0)?("OUTDENT"!==c&&this.error("unmatched "+
a),c=this.indents,c=c[c.length-1],this.outdentToken(c,!0),this.pair(a)):this.ends.pop()};g.prototype.getLineAndColumnFromChunk=function(a){var c,f;if(0===a)return[this.chunkLine,this.chunkColumn];f=a>=this.chunk.length?this.chunk:this.chunk.slice(0,+(a-1)+1||9E9);a=ea(f,"\n");c=this.chunkColumn;0<a?(c=f.split("\n"),c=c[c.length-1],c=c.length):c+=f.length;return[this.chunkLine+a,c]};g.prototype.makeToken=function(a,c,f,h){var g,k;null==f&&(f=0);null==h&&(h=c.length);g={};k=this.getLineAndColumnFromChunk(f);
g.first_line=k[0];g.first_column=k[1];f=this.getLineAndColumnFromChunk(f+(0<h?h-1:0));g.last_line=f[0];g.last_column=f[1];return[a,c,g]};g.prototype.token=function(a,c,f,h,g){a=this.makeToken(a,c,f,h);g&&(a.origin=g);this.tokens.push(a);return a};g.prototype.tag=function(){var a;a=this.tokens;a=a[a.length-1];return null!=a?a[0]:void 0};g.prototype.value=function(){var a;a=this.tokens;a=a[a.length-1];return null!=a?a[1]:void 0};g.prototype.unfinished=function(){var a;return y.test(this.chunk)||"\\"===
(a=this.tag())||"."===a||"?."===a||"?::"===a||"UNARY"===a||"MATH"===a||"UNARY_MATH"===a||"+"===a||"-"===a||"**"===a||"SHIFT"===a||"RELATION"===a||"COMPARE"===a||"\x26"===a||"^"===a||"|"===a||"\x26\x26"===a||"||"===a||"BIN?"===a||"THROW"===a||"EXTENDS"===a};g.prototype.formatString=function(a){return a.replace(Z,"$1")};g.prototype.formatHeregex=function(a){return a.replace(M,"$1$2")};g.prototype.validateEscapes=function(a,c){var f,h,g,k,m;null==c&&(c={});if(h=O.exec(a))if(h[0],a=h[1],g=h[2],f=h[3],
m=h[4],!c.isRegex||!g||"0"===g.charAt(0))return f="\\"+(g||f||m),this.error((g?"octal escape sequences are not allowed":"invalid escape sequence")+" "+f,{offset:(null!=(k=c.offsetInChunk)?k:0)+h.index+a.length,length:f.length})};g.prototype.makeDelimitedLiteral=function(a,c){null==c&&(c={});""===a&&"/"===c.delimiter&&(a="(?:)");a=a.replace(RegExp("(\\\\\\\\)|(\\\\0(?\x3d[1-7]))|\\\\?("+c.delimiter+")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)","g"),function(a,f,h,g,k,m,t,p,l){switch(!1){case !f:return c.double?
f+f:f;case !h:return"\\x00";case !g:return"\\"+g;case !k:return"\\n";case !m:return"\\r";case !t:return"\\u2028";case !p:return"\\u2029";case !l:return c.double?"\\"+l:l}});return""+c.delimiter+a+c.delimiter};g.prototype.error=function(a,c){var f,h,g,k,m;null==c&&(c={});c="first_line"in c?c:(k=this.getLineAndColumnFromChunk(null!=(g=c.offset)?g:0),h=k[0],f=k[1],k,{first_line:h,first_column:f,last_column:f+(null!=(m=c.length)?m:1)-1});return ra(a,c)};return g}();la=function(a,c){null==c&&(c=a);switch(!1){case 0>
da.call(ma.call(t).concat(ma.call(Ca)),a):return"keyword '"+c+"' can't be assigned";case 0>da.call(Y,a):return"'"+c+"' can't be assigned";case 0>da.call(W,a):return"reserved word '"+c+"' can't be assigned";default:return!1}};g.isUnassignable=la;ha=function(a){var c;return"IDENTIFIER"===a[0]?("from"===a[1]&&(a[1][0]="IDENTIFIER",!0),!0):"FOR"===a[0]?!1:"{"===(c=a[1])||"["===c||","===c||":"===c?!1:!0};t="true false null this new delete typeof in instanceof return throw break continue debugger yield if else switch for while do try catch finally class extends super import export default".split(" ");
Ca="undefined Infinity NaN then unless until loop of by when".split(" ");c={and:"\x26\x26",or:"||",is:"\x3d\x3d",isnt:"!\x3d",not:"!",yes:"true",no:"false",on:"true",off:"false"};a=function(){var a;a=[];for(pa in c)a.push(pa);return a}();Ca=Ca.concat(a);W="case function var void with const let enum native implements interface package private protected public static".split(" ");Y=["arguments","eval"];g.JS_FORBIDDEN=t.concat(W).concat(Y);ua=65279;J=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/;
U=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;T=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/;ca=/^[^\n\S]+/;f=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/;q=/^[-=]>/;A=/^(?:\n[^\n\S]*)+/;m=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/;N=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/;ba=/^(?:'''|"""|'|")/;K=/^(?:[^\\']|\\[\s\S])*/;V=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/;x=/^(?:[^\\']|\\[\s\S]|'(?!''))*/;G=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/;Z=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g;
X=/\s*\n\s*/g;F=/\n+([^\n\S]*)(?=\S)/g;aa=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/;S=/^\w*/;ka=/^(?!.*(.).*\1)[imgy]*$/;v=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/;M=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g;z=/^(\/|\/{3}\s*)(\*)/;I=/^\/=?\s/;w=/\*\//;y=/^\s*(?:,|\??\.(?![.\d])|::)/;O=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/;p=/^[^\n\S]*\n/;R=/\n[^\n\S]*$/;qa=/\s+$/;l="-\x3d +\x3d /\x3d *\x3d %\x3d ||\x3d \x26\x26\x3d ?\x3d \x3c\x3c\x3d \x3e\x3e\x3d \x3e\x3e\x3e\x3d \x26\x3d ^\x3d |\x3d **\x3d //\x3d %%\x3d".split(" ");
ya=["NEW","TYPEOF","DELETE","DO"];Xa=["!","~"];Q=["\x3c\x3c","\x3e\x3e","\x3e\x3e\x3e"];D="\x3d\x3d !\x3d \x3c \x3e \x3c\x3d \x3e\x3d".split(" ");P=["*","/","%","//","%%"];B=["IN","OF","INSTANCEOF"];xa="IDENTIFIER PROPERTY ) ] ? @ THIS SUPER".split(" ");E=xa.concat("NUMBER INFINITY NAN STRING STRING_END REGEX REGEX_END BOOL NULL UNDEFINED } ::".split(" "));H=E.concat(["++","--"]);h=["INDENT","OUTDENT","TERMINATOR"];r=[")","}","]"]}).call(this);return g}();u["./parser"]=function(){var g={},ua={exports:g},
xa=function(){function g(){this.yy={}}var a=function(a,n,na,b){na=na||{};for(b=a.length;b--;na[a[b]]=n);return na},c=[1,22],u=[1,25],f=[1,83],D=[1,79],l=[1,84],w=[1,85],G=[1,81],F=[1,82],x=[1,56],v=[1,58],M=[1,59],N=[1,60],J=[1,61],r=[1,62],E=[1,49],O=[1,50],k=[1,32],m=[1,68],t=[1,69],p=[1,78],h=[1,47],y=[1,51],P=[1,52],A=[1,67],H=[1,65],U=[1,66],T=[1,64],I=[1,42],aa=[1,48],S=[1,63],z=[1,73],B=[1,74],W=[1,75],C=[1,76],Q=[1,46],X=[1,72],Y=[1,34],V=[1,35],Z=[1,36],K=[1,37],ba=[1,38],R=[1,39],xa=[1,
86],ua=[1,6,32,42,131],qa=[1,101],ka=[1,89],ca=[1,88],ea=[1,87],ga=[1,90],ha=[1,91],la=[1,92],pa=[1,93],L=[1,94],ja=[1,95],ra=[1,96],da=[1,97],ma=[1,98],sa=[1,99],ia=[1,100],ya=[1,104],ta=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Ja=[2,165],Ta=[1,110],Ga=[1,111],Ua=[1,112],Fa=[1,113],Pa=[1,115],Qa=[1,116],Na=[1,109],za=[1,6,32,42,131,133,135,139,156],oa=[2,27],fa=[1,123],Ha=[1,121],Aa=[1,6,31,32,40,41,42,65,70,73,
82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Ia=[2,94],b=[1,6,31,32,42,46,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],n=[2,73],na=[1,128],e=[1,133],d=[1,134],va=[1,136],Ka=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,
173,174],wa=[2,91],Gb=[1,6,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],ab=[2,63],Hb=[1,166],bb=[1,178],Wa=[1,180],Ib=[1,175],Oa=[1,182],ub=[1,184],La=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],Jb=[2,110],Kb=[1,6,31,32,40,41,42,58,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,
135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Lb=[1,6,31,32,40,41,42,46,58,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Mb=[40,41,114],Nb=[1,241],vb=[1,240],Ma=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156],Ea=[2,71],Ob=[1,250],Va=[6,31,32,65,70],hb=[6,31,32,55,65,70,73],cb=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,164,166,
167,168,169,170,171,172,173,174],Pb=[40,41,82,83,84,85,87,90,113,114],ib=[1,269],db=[2,62],jb=[1,279],Ya=[1,281],wb=[1,286],eb=[1,288],Qb=[2,186],xb=[1,6,31,32,40,41,42,55,65,70,73,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],kb=[1,297],Ra=[6,31,32,70,115,120],Rb=[1,6,31,32,40,41,42,55,58,65,70,73,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,161,162,163,
164,165,166,167,168,169,170,171,172,173,174,175],Sb=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,140,156],Za=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,134,140,156],lb=[146,147,148],mb=[70,146,147,148],nb=[6,31,94],Tb=[1,311],Ba=[6,31,32,70,94],Ub=[6,31,32,58,70,94],yb=[6,31,32,55,58,70,94],Vb=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,166,167,168,169,170,171,172,173,174],Wb=[12,28,34,38,40,41,44,45,48,49,50,51,52,53,61,62,63,67,68,89,92,95,97,105,112,117,118,119,
125,129,130,133,135,137,139,149,155,157,158,159,160,161,162],Xb=[2,175],Sa=[6,31,32],fb=[2,72],Yb=[1,323],Zb=[1,324],$b=[1,6,31,32,42,65,70,73,89,94,115,120,122,127,128,131,133,134,135,139,140,151,153,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],ob=[32,151,153],ac=[1,6,32,42,65,70,73,89,94,115,120,122,131,134,140,156],pb=[1,350],zb=[1,356],Ab=[1,6,32,42,131,156],gb=[2,86],qb=[1,366],rb=[1,367],bc=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,151,156,159,160,163,
164,165,166,167,168,169,170,171,172,173,174],Bb=[1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,135,139,140,156],cc=[1,380],dc=[1,381],Cb=[6,31,32,94],ec=[6,31,32,70],Db=[1,6,31,32,42,65,70,73,89,94,115,120,122,127,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],fc=[31,70],sb=[1,407],tb=[1,408],Eb=[1,414],Fb=[1,415],gc={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,YieldReturn:9,Return:10,Comment:11,STATEMENT:12,
Import:13,Export:14,Value:15,Invocation:16,Code:17,Operation:18,Assign:19,If:20,Try:21,While:22,For:23,Switch:24,Class:25,Throw:26,Yield:27,YIELD:28,FROM:29,Block:30,INDENT:31,OUTDENT:32,Identifier:33,IDENTIFIER:34,Property:35,PROPERTY:36,AlphaNumeric:37,NUMBER:38,String:39,STRING:40,STRING_START:41,STRING_END:42,Regex:43,REGEX:44,REGEX_START:45,REGEX_END:46,Literal:47,JS:48,UNDEFINED:49,NULL:50,BOOL:51,INFINITY:52,NAN:53,Assignable:54,"\x3d":55,AssignObj:56,ObjAssignable:57,":":58,SimpleObjAssignable:59,
ThisProperty:60,RETURN:61,HERECOMMENT:62,PARAM_START:63,ParamList:64,PARAM_END:65,FuncGlyph:66,"-\x3e":67,"\x3d\x3e":68,OptComma:69,",":70,Param:71,ParamVar:72,"...":73,Array:74,Object:75,Splat:76,SimpleAssignable:77,Accessor:78,Parenthetical:79,Range:80,This:81,".":82,"?.":83,"::":84,"?::":85,Index:86,INDEX_START:87,IndexValue:88,INDEX_END:89,INDEX_SOAK:90,Slice:91,"{":92,AssignList:93,"}":94,CLASS:95,EXTENDS:96,IMPORT:97,ImportDefaultSpecifier:98,ImportNamespaceSpecifier:99,ImportSpecifierList:100,
ImportSpecifier:101,AS:102,DEFAULT:103,IMPORT_ALL:104,EXPORT:105,ExportSpecifierList:106,EXPORT_ALL:107,ExportSpecifier:108,OptFuncExist:109,Arguments:110,Super:111,SUPER:112,FUNC_EXIST:113,CALL_START:114,CALL_END:115,ArgList:116,THIS:117,"@":118,"[":119,"]":120,RangeDots:121,"..":122,Arg:123,SimpleArgs:124,TRY:125,Catch:126,FINALLY:127,CATCH:128,THROW:129,"(":130,")":131,WhileSource:132,WHILE:133,WHEN:134,UNTIL:135,Loop:136,LOOP:137,ForBody:138,FOR:139,BY:140,ForStart:141,ForSource:142,ForVariables:143,
OWN:144,ForValue:145,FORIN:146,FOROF:147,FORFROM:148,SWITCH:149,Whens:150,ELSE:151,When:152,LEADING_WHEN:153,IfBlock:154,IF:155,POST_IF:156,UNARY:157,UNARY_MATH:158,"-":159,"+":160,"--":161,"++":162,"?":163,MATH:164,"**":165,SHIFT:166,COMPARE:167,"\x26":168,"^":169,"|":170,"\x26\x26":171,"||":172,"BIN?":173,RELATION:174,COMPOUND_ASSIGN:175,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",12:"STATEMENT",28:"YIELD",29:"FROM",31:"INDENT",32:"OUTDENT",34:"IDENTIFIER",36:"PROPERTY",38:"NUMBER",40:"STRING",
41:"STRING_START",42:"STRING_END",44:"REGEX",45:"REGEX_START",46:"REGEX_END",48:"JS",49:"UNDEFINED",50:"NULL",51:"BOOL",52:"INFINITY",53:"NAN",55:"\x3d",58:":",61:"RETURN",62:"HERECOMMENT",63:"PARAM_START",65:"PARAM_END",67:"-\x3e",68:"\x3d\x3e",70:",",73:"...",82:".",83:"?.",84:"::",85:"?::",87:"INDEX_START",89:"INDEX_END",90:"INDEX_SOAK",92:"{",94:"}",95:"CLASS",96:"EXTENDS",97:"IMPORT",102:"AS",103:"DEFAULT",104:"IMPORT_ALL",105:"EXPORT",107:"EXPORT_ALL",112:"SUPER",113:"FUNC_EXIST",114:"CALL_START",
115:"CALL_END",117:"THIS",118:"@",119:"[",120:"]",122:"..",125:"TRY",127:"FINALLY",128:"CATCH",129:"THROW",130:"(",131:")",133:"WHILE",134:"WHEN",135:"UNTIL",137:"LOOP",139:"FOR",140:"BY",144:"OWN",146:"FORIN",147:"FOROF",148:"FORFROM",149:"SWITCH",151:"ELSE",153:"LEADING_WHEN",155:"IF",156:"POST_IF",157:"UNARY",158:"UNARY_MATH",159:"-",160:"+",161:"--",162:"++",163:"?",164:"MATH",165:"**",166:"SHIFT",167:"COMPARE",168:"\x26",169:"^",170:"|",171:"\x26\x26",172:"||",173:"BIN?",174:"RELATION",175:"COMPOUND_ASSIGN"},
productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[8,1],[8,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[27,1],[27,2],[27,3],[30,2],[30,3],[33,1],[35,1],[37,1],[37,1],[39,1],[39,3],[43,1],[43,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[19,3],[19,4],[19,5],[56,1],[56,3],[56,5],[56,3],[56,5],[56,1],[59,1],[59,1],[59,1],[57,1],[57,1],[10,2],[10,1],[9,3],[9,2],[11,1],[17,5],[17,2],[66,1],[66,1],[69,0],[69,1],[64,0],[64,
1],[64,3],[64,4],[64,6],[71,1],[71,2],[71,3],[71,1],[72,1],[72,1],[72,1],[72,1],[76,2],[77,1],[77,2],[77,2],[77,1],[54,1],[54,1],[54,1],[15,1],[15,1],[15,1],[15,1],[15,1],[78,2],[78,2],[78,2],[78,2],[78,1],[78,1],[86,3],[86,2],[88,1],[88,1],[75,4],[93,0],[93,1],[93,3],[93,4],[93,6],[25,1],[25,2],[25,3],[25,4],[25,2],[25,3],[25,4],[25,5],[13,2],[13,4],[13,4],[13,5],[13,7],[13,6],[13,9],[100,1],[100,3],[100,4],[100,4],[100,6],[101,1],[101,3],[101,1],[101,3],[98,1],[99,3],[14,3],[14,5],[14,2],[14,4],
[14,5],[14,6],[14,3],[14,4],[14,7],[106,1],[106,3],[106,4],[106,4],[106,6],[108,1],[108,3],[108,3],[108,1],[16,3],[16,3],[16,3],[16,1],[111,1],[111,2],[109,0],[109,1],[110,2],[110,4],[81,1],[81,1],[60,2],[74,2],[74,4],[121,1],[121,1],[80,5],[91,3],[91,2],[91,2],[91,1],[116,1],[116,3],[116,4],[116,4],[116,6],[123,1],[123,1],[123,1],[124,1],[124,3],[21,2],[21,3],[21,4],[21,5],[126,3],[126,3],[126,2],[26,2],[79,3],[79,5],[132,2],[132,4],[132,2],[132,4],[22,2],[22,2],[22,2],[22,1],[136,2],[136,2],[23,
2],[23,2],[23,2],[138,2],[138,4],[138,2],[141,2],[141,3],[145,1],[145,1],[145,1],[145,1],[143,1],[143,3],[142,2],[142,2],[142,4],[142,4],[142,4],[142,6],[142,6],[142,2],[142,4],[24,5],[24,7],[24,4],[24,6],[150,1],[150,2],[152,3],[152,4],[154,3],[154,5],[20,1],[20,3],[20,3],[20,3],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,5],[18,4],[18,3]],performAction:function(a,n,na,b,c,e,d){a=
e.length-1;switch(c){case 1:return this.$=b.addLocationDataFn(d[a],d[a])(new b.Block);case 2:return this.$=e[a];case 3:this.$=b.addLocationDataFn(d[a],d[a])(b.Block.wrap([e[a]]));break;case 4:this.$=b.addLocationDataFn(d[a-2],d[a])(e[a-2].push(e[a]));break;case 5:this.$=e[a-1];break;case 6:case 7:case 8:case 9:case 10:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 35:case 40:case 42:case 56:case 57:case 58:case 59:case 60:case 61:case 71:case 72:case 82:case 83:case 84:case 85:case 90:case 91:case 94:case 98:case 104:case 162:case 186:case 187:case 189:case 219:case 220:case 238:case 244:this.$=
e[a];break;case 11:this.$=b.addLocationDataFn(d[a],d[a])(new b.StatementLiteral(e[a]));break;case 27:this.$=b.addLocationDataFn(d[a],d[a])(new b.Op(e[a],new b.Value(new b.Literal(""))));break;case 28:case 248:case 249:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op(e[a-1],e[a]));break;case 29:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Op(e[a-2].concat(e[a-1]),e[a]));break;case 30:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Block);break;case 31:case 105:this.$=b.addLocationDataFn(d[a-2],d[a])(e[a-
1]);break;case 32:this.$=b.addLocationDataFn(d[a],d[a])(new b.IdentifierLiteral(e[a]));break;case 33:this.$=b.addLocationDataFn(d[a],d[a])(new b.PropertyName(e[a]));break;case 34:this.$=b.addLocationDataFn(d[a],d[a])(new b.NumberLiteral(e[a]));break;case 36:this.$=b.addLocationDataFn(d[a],d[a])(new b.StringLiteral(e[a]));break;case 37:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.StringWithInterpolations(e[a-1]));break;case 38:this.$=b.addLocationDataFn(d[a],d[a])(new b.RegexLiteral(e[a]));break;
case 39:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.RegexWithInterpolations(e[a-1].args));break;case 41:this.$=b.addLocationDataFn(d[a],d[a])(new b.PassthroughLiteral(e[a]));break;case 43:this.$=b.addLocationDataFn(d[a],d[a])(new b.UndefinedLiteral);break;case 44:this.$=b.addLocationDataFn(d[a],d[a])(new b.NullLiteral);break;case 45:this.$=b.addLocationDataFn(d[a],d[a])(new b.BooleanLiteral(e[a]));break;case 46:this.$=b.addLocationDataFn(d[a],d[a])(new b.InfinityLiteral(e[a]));break;case 47:this.$=
b.addLocationDataFn(d[a],d[a])(new b.NaNLiteral);break;case 48:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Assign(e[a-2],e[a]));break;case 49:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Assign(e[a-3],e[a]));break;case 50:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Assign(e[a-4],e[a-1]));break;case 51:case 87:case 92:case 93:case 95:case 96:case 97:case 221:case 222:this.$=b.addLocationDataFn(d[a],d[a])(new b.Value(e[a]));break;case 52:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Assign(b.addLocationDataFn(d[a-
2])(new b.Value(e[a-2])),e[a],"object",{operatorToken:b.addLocationDataFn(d[a-1])(new b.Literal(e[a-1]))}));break;case 53:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Assign(b.addLocationDataFn(d[a-4])(new b.Value(e[a-4])),e[a-1],"object",{operatorToken:b.addLocationDataFn(d[a-3])(new b.Literal(e[a-3]))}));break;case 54:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Assign(b.addLocationDataFn(d[a-2])(new b.Value(e[a-2])),e[a],null,{operatorToken:b.addLocationDataFn(d[a-1])(new b.Literal(e[a-1]))}));
break;case 55:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Assign(b.addLocationDataFn(d[a-4])(new b.Value(e[a-4])),e[a-1],null,{operatorToken:b.addLocationDataFn(d[a-3])(new b.Literal(e[a-3]))}));break;case 62:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Return(e[a]));break;case 63:this.$=b.addLocationDataFn(d[a],d[a])(new b.Return);break;case 64:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.YieldReturn(e[a]));break;case 65:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.YieldReturn);break;case 66:this.$=
b.addLocationDataFn(d[a],d[a])(new b.Comment(e[a]));break;case 67:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Code(e[a-3],e[a],e[a-1]));break;case 68:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Code([],e[a],e[a-1]));break;case 69:this.$=b.addLocationDataFn(d[a],d[a])("func");break;case 70:this.$=b.addLocationDataFn(d[a],d[a])("boundfunc");break;case 73:case 110:this.$=b.addLocationDataFn(d[a],d[a])([]);break;case 74:case 111:case 130:case 150:case 181:case 223:this.$=b.addLocationDataFn(d[a],
d[a])([e[a]]);break;case 75:case 112:case 131:case 151:case 182:this.$=b.addLocationDataFn(d[a-2],d[a])(e[a-2].concat(e[a]));break;case 76:case 113:case 132:case 152:case 183:this.$=b.addLocationDataFn(d[a-3],d[a])(e[a-3].concat(e[a]));break;case 77:case 114:case 134:case 154:case 185:this.$=b.addLocationDataFn(d[a-5],d[a])(e[a-5].concat(e[a-2]));break;case 78:this.$=b.addLocationDataFn(d[a],d[a])(new b.Param(e[a]));break;case 79:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Param(e[a-1],null,!0));
break;case 80:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Param(e[a-2],e[a]));break;case 81:case 188:this.$=b.addLocationDataFn(d[a],d[a])(new b.Expansion);break;case 86:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Splat(e[a-1]));break;case 88:this.$=b.addLocationDataFn(d[a-1],d[a])(e[a-1].add(e[a]));break;case 89:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Value(e[a-1],[].concat(e[a])));break;case 99:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Access(e[a]));break;case 100:this.$=b.addLocationDataFn(d[a-
1],d[a])(new b.Access(e[a],"soak"));break;case 101:this.$=b.addLocationDataFn(d[a-1],d[a])([b.addLocationDataFn(d[a-1])(new b.Access(new b.PropertyName("prototype"))),b.addLocationDataFn(d[a])(new b.Access(e[a]))]);break;case 102:this.$=b.addLocationDataFn(d[a-1],d[a])([b.addLocationDataFn(d[a-1])(new b.Access(new b.PropertyName("prototype"),"soak")),b.addLocationDataFn(d[a])(new b.Access(e[a]))]);break;case 103:this.$=b.addLocationDataFn(d[a],d[a])(new b.Access(new b.PropertyName("prototype")));
break;case 106:this.$=b.addLocationDataFn(d[a-1],d[a])(b.extend(e[a],{soak:!0}));break;case 107:this.$=b.addLocationDataFn(d[a],d[a])(new b.Index(e[a]));break;case 108:this.$=b.addLocationDataFn(d[a],d[a])(new b.Slice(e[a]));break;case 109:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Obj(e[a-2],e[a-3].generated));break;case 115:this.$=b.addLocationDataFn(d[a],d[a])(new b.Class);break;case 116:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Class(null,null,e[a]));break;case 117:this.$=b.addLocationDataFn(d[a-
2],d[a])(new b.Class(null,e[a]));break;case 118:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Class(null,e[a-1],e[a]));break;case 119:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Class(e[a]));break;case 120:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Class(e[a-1],null,e[a]));break;case 121:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Class(e[a-2],e[a]));break;case 122:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Class(e[a-3],e[a-1],e[a]));break;case 123:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.ImportDeclaration(null,
e[a]));break;case 124:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.ImportDeclaration(new b.ImportClause(e[a-2],null),e[a]));break;case 125:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.ImportDeclaration(new b.ImportClause(null,e[a-2]),e[a]));break;case 126:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.ImportDeclaration(new b.ImportClause(null,new b.ImportSpecifierList([])),e[a]));break;case 127:this.$=b.addLocationDataFn(d[a-6],d[a])(new b.ImportDeclaration(new b.ImportClause(null,new b.ImportSpecifierList(e[a-
4])),e[a]));break;case 128:this.$=b.addLocationDataFn(d[a-5],d[a])(new b.ImportDeclaration(new b.ImportClause(e[a-4],e[a-2]),e[a]));break;case 129:this.$=b.addLocationDataFn(d[a-8],d[a])(new b.ImportDeclaration(new b.ImportClause(e[a-7],new b.ImportSpecifierList(e[a-4])),e[a]));break;case 133:case 153:case 168:case 184:this.$=b.addLocationDataFn(d[a-3],d[a])(e[a-2]);break;case 135:this.$=b.addLocationDataFn(d[a],d[a])(new b.ImportSpecifier(e[a]));break;case 136:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ImportSpecifier(e[a-
2],e[a]));break;case 137:this.$=b.addLocationDataFn(d[a],d[a])(new b.ImportSpecifier(new b.Literal(e[a])));break;case 138:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ImportSpecifier(new b.Literal(e[a-2]),e[a]));break;case 139:this.$=b.addLocationDataFn(d[a],d[a])(new b.ImportDefaultSpecifier(e[a]));break;case 140:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ImportNamespaceSpecifier(new b.Literal(e[a-2]),e[a]));break;case 141:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ExportNamedDeclaration(new b.ExportSpecifierList([])));
break;case 142:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.ExportNamedDeclaration(new b.ExportSpecifierList(e[a-2])));break;case 143:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.ExportNamedDeclaration(e[a]));break;case 144:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.ExportNamedDeclaration(new b.Assign(e[a-2],e[a],null,{moduleDeclaration:"export"})));break;case 145:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.ExportNamedDeclaration(new b.Assign(e[a-3],e[a],null,{moduleDeclaration:"export"})));
break;case 146:this.$=b.addLocationDataFn(d[a-5],d[a])(new b.ExportNamedDeclaration(new b.Assign(e[a-4],e[a-1],null,{moduleDeclaration:"export"})));break;case 147:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ExportDefaultDeclaration(e[a]));break;case 148:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.ExportAllDeclaration(new b.Literal(e[a-2]),e[a]));break;case 149:this.$=b.addLocationDataFn(d[a-6],d[a])(new b.ExportNamedDeclaration(new b.ExportSpecifierList(e[a-4]),e[a]));break;case 155:this.$=b.addLocationDataFn(d[a],
d[a])(new b.ExportSpecifier(e[a]));break;case 156:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ExportSpecifier(e[a-2],e[a]));break;case 157:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.ExportSpecifier(e[a-2],new b.Literal(e[a])));break;case 158:this.$=b.addLocationDataFn(d[a],d[a])(new b.ExportSpecifier(new b.Literal(e[a])));break;case 159:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.TaggedTemplateCall(e[a-2],e[a],e[a-1]));break;case 160:case 161:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Call(e[a-
2],e[a],e[a-1]));break;case 163:this.$=b.addLocationDataFn(d[a],d[a])(new b.SuperCall);break;case 164:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.SuperCall(e[a]));break;case 165:this.$=b.addLocationDataFn(d[a],d[a])(!1);break;case 166:this.$=b.addLocationDataFn(d[a],d[a])(!0);break;case 167:this.$=b.addLocationDataFn(d[a-1],d[a])([]);break;case 169:case 170:this.$=b.addLocationDataFn(d[a],d[a])(new b.Value(new b.ThisLiteral));break;case 171:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Value(b.addLocationDataFn(d[a-
1])(new b.ThisLiteral),[b.addLocationDataFn(d[a])(new b.Access(e[a]))],"this"));break;case 172:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Arr([]));break;case 173:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Arr(e[a-2]));break;case 174:this.$=b.addLocationDataFn(d[a],d[a])("inclusive");break;case 175:this.$=b.addLocationDataFn(d[a],d[a])("exclusive");break;case 176:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Range(e[a-3],e[a-1],e[a-2]));break;case 177:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Range(e[a-
2],e[a],e[a-1]));break;case 178:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Range(e[a-1],null,e[a]));break;case 179:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Range(null,e[a],e[a-1]));break;case 180:this.$=b.addLocationDataFn(d[a],d[a])(new b.Range(null,null,e[a]));break;case 190:this.$=b.addLocationDataFn(d[a-2],d[a])([].concat(e[a-2],e[a]));break;case 191:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Try(e[a]));break;case 192:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Try(e[a-1],e[a][0],
e[a][1]));break;case 193:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Try(e[a-2],null,null,e[a]));break;case 194:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Try(e[a-3],e[a-2][0],e[a-2][1],e[a]));break;case 195:this.$=b.addLocationDataFn(d[a-2],d[a])([e[a-1],e[a]]);break;case 196:this.$=b.addLocationDataFn(d[a-2],d[a])([b.addLocationDataFn(d[a-1])(new b.Value(e[a-1])),e[a]]);break;case 197:this.$=b.addLocationDataFn(d[a-1],d[a])([null,e[a]]);break;case 198:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Throw(e[a]));
break;case 199:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Parens(e[a-1]));break;case 200:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Parens(e[a-2]));break;case 201:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.While(e[a]));break;case 202:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.While(e[a-2],{guard:e[a]}));break;case 203:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.While(e[a],{invert:!0}));break;case 204:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.While(e[a-2],{invert:!0,guard:e[a]}));
break;case 205:this.$=b.addLocationDataFn(d[a-1],d[a])(e[a-1].addBody(e[a]));break;case 206:case 207:this.$=b.addLocationDataFn(d[a-1],d[a])(e[a].addBody(b.addLocationDataFn(d[a-1])(b.Block.wrap([e[a-1]]))));break;case 208:this.$=b.addLocationDataFn(d[a],d[a])(e[a]);break;case 209:this.$=b.addLocationDataFn(d[a-1],d[a])((new b.While(b.addLocationDataFn(d[a-1])(new b.BooleanLiteral("true")))).addBody(e[a]));break;case 210:this.$=b.addLocationDataFn(d[a-1],d[a])((new b.While(b.addLocationDataFn(d[a-
1])(new b.BooleanLiteral("true")))).addBody(b.addLocationDataFn(d[a])(b.Block.wrap([e[a]]))));break;case 211:case 212:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.For(e[a-1],e[a]));break;case 213:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.For(e[a],e[a-1]));break;case 214:this.$=b.addLocationDataFn(d[a-1],d[a])({source:b.addLocationDataFn(d[a])(new b.Value(e[a]))});break;case 215:this.$=b.addLocationDataFn(d[a-3],d[a])({source:b.addLocationDataFn(d[a-2])(new b.Value(e[a-2])),step:e[a]});break;
case 216:b=b.addLocationDataFn(d[a-1],d[a]);e[a].own=e[a-1].own;e[a].ownTag=e[a-1].ownTag;e[a].name=e[a-1][0];e[a].index=e[a-1][1];this.$=b(e[a]);break;case 217:this.$=b.addLocationDataFn(d[a-1],d[a])(e[a]);break;case 218:c=b.addLocationDataFn(d[a-2],d[a]);e[a].own=!0;e[a].ownTag=b.addLocationDataFn(d[a-1])(new b.Literal(e[a-1]));this.$=c(e[a]);break;case 224:this.$=b.addLocationDataFn(d[a-2],d[a])([e[a-2],e[a]]);break;case 225:this.$=b.addLocationDataFn(d[a-1],d[a])({source:e[a]});break;case 226:this.$=
b.addLocationDataFn(d[a-1],d[a])({source:e[a],object:!0});break;case 227:this.$=b.addLocationDataFn(d[a-3],d[a])({source:e[a-2],guard:e[a]});break;case 228:this.$=b.addLocationDataFn(d[a-3],d[a])({source:e[a-2],guard:e[a],object:!0});break;case 229:this.$=b.addLocationDataFn(d[a-3],d[a])({source:e[a-2],step:e[a]});break;case 230:this.$=b.addLocationDataFn(d[a-5],d[a])({source:e[a-4],guard:e[a-2],step:e[a]});break;case 231:this.$=b.addLocationDataFn(d[a-5],d[a])({source:e[a-4],step:e[a-2],guard:e[a]});
break;case 232:this.$=b.addLocationDataFn(d[a-1],d[a])({source:e[a],from:!0});break;case 233:this.$=b.addLocationDataFn(d[a-3],d[a])({source:e[a-2],guard:e[a],from:!0});break;case 234:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Switch(e[a-3],e[a-1]));break;case 235:this.$=b.addLocationDataFn(d[a-6],d[a])(new b.Switch(e[a-5],e[a-3],e[a-1]));break;case 236:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Switch(null,e[a-1]));break;case 237:this.$=b.addLocationDataFn(d[a-5],d[a])(new b.Switch(null,e[a-
3],e[a-1]));break;case 239:this.$=b.addLocationDataFn(d[a-1],d[a])(e[a-1].concat(e[a]));break;case 240:this.$=b.addLocationDataFn(d[a-2],d[a])([[e[a-1],e[a]]]);break;case 241:this.$=b.addLocationDataFn(d[a-3],d[a])([[e[a-2],e[a-1]]]);break;case 242:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.If(e[a-1],e[a],{type:e[a-2]}));break;case 243:this.$=b.addLocationDataFn(d[a-4],d[a])(e[a-4].addElse(b.addLocationDataFn(d[a-2],d[a])(new b.If(e[a-1],e[a],{type:e[a-2]}))));break;case 245:this.$=b.addLocationDataFn(d[a-
2],d[a])(e[a-2].addElse(e[a]));break;case 246:case 247:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.If(e[a],b.addLocationDataFn(d[a-2])(b.Block.wrap([e[a-2]])),{type:e[a-1],statement:!0}));break;case 250:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op("-",e[a]));break;case 251:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op("+",e[a]));break;case 252:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op("--",e[a]));break;case 253:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op("++",e[a]));break;case 254:this.$=
b.addLocationDataFn(d[a-1],d[a])(new b.Op("--",e[a-1],null,!0));break;case 255:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Op("++",e[a-1],null,!0));break;case 256:this.$=b.addLocationDataFn(d[a-1],d[a])(new b.Existence(e[a-1]));break;case 257:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Op("+",e[a-2],e[a]));break;case 258:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Op("-",e[a-2],e[a]));break;case 259:case 260:case 261:case 262:case 263:case 264:case 265:case 266:case 267:case 268:this.$=b.addLocationDataFn(d[a-
2],d[a])(new b.Op(e[a-1],e[a-2],e[a]));break;case 269:d=b.addLocationDataFn(d[a-2],d[a]);e="!"===e[a-1].charAt(0)?(new b.Op(e[a-1].slice(1),e[a-2],e[a])).invert():new b.Op(e[a-1],e[a-2],e[a]);this.$=d(e);break;case 270:this.$=b.addLocationDataFn(d[a-2],d[a])(new b.Assign(e[a-2],e[a],e[a-1]));break;case 271:this.$=b.addLocationDataFn(d[a-4],d[a])(new b.Assign(e[a-4],e[a-1],e[a-3]));break;case 272:this.$=b.addLocationDataFn(d[a-3],d[a])(new b.Assign(e[a-3],e[a],e[a-2]));break;case 273:this.$=b.addLocationDataFn(d[a-
2],d[a])(new b.Extends(e[a-2],e[a]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,
158:V,159:Z,160:K,161:ba,162:R},{1:[3]},{1:[2,2],6:xa},a(ua,[2,3]),a(ua,[2,6],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(ua,[2,7],{141:77,132:105,138:106,133:z,135:B,139:C,156:ya}),a(ua,[2,8]),a(ta,[2,14],{109:107,78:108,86:114,40:Ja,41:Ja,114:Ja,82:Ta,83:Ga,84:Ua,85:Fa,87:Pa,90:Qa,113:Na}),a(ta,[2,15],{86:114,109:117,78:118,82:Ta,83:Ga,84:Ua,85:Fa,87:Pa,90:Qa,113:Na,114:Ja}),a(ta,[2,16]),a(ta,
[2,17]),a(ta,[2,18]),a(ta,[2,19]),a(ta,[2,20]),a(ta,[2,21]),a(ta,[2,22]),a(ta,[2,23]),a(ta,[2,24]),a(ta,[2,25]),a(ta,[2,26]),a(za,[2,9]),a(za,[2,10]),a(za,[2,11]),a(za,[2,12]),a(za,[2,13]),a([1,6,32,42,131,133,135,139,156,163,164,165,166,167,168,169,170,171,172,173,174],oa,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,
8:122,12:c,28:fa,29:Ha,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,51:N,52:J,53:r,61:[1,119],62:O,63:k,67:m,68:t,92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,137:W,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),a(Aa,Ia,{55:[1,124]}),a(Aa,[2,95]),a(Aa,[2,96]),a(Aa,[2,97]),a(Aa,[2,98]),a(b,[2,162]),a([6,31,65,70],n,{64:125,71:126,72:127,33:129,60:130,74:131,75:132,34:f,73:na,92:p,118:e,119:d}),{30:135,31:va},{7:137,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,
20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:138,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,
25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:139,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,
34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:140,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,
43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{15:142,16:143,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:144,60:71,74:53,75:54,77:141,79:28,80:29,81:30,92:p,111:31,112:A,117:H,118:U,119:T,
130:S},{15:142,16:143,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:144,60:71,74:53,75:54,77:145,79:28,80:29,81:30,92:p,111:31,112:A,117:H,118:U,119:T,130:S},a(Ka,wa,{96:[1,149],161:[1,146],162:[1,147],175:[1,148]}),a(ta,[2,244],{151:[1,150]}),{30:151,31:va},{30:152,31:va},a(ta,[2,208]),{30:153,31:va},{7:154,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:[1,155],33:70,34:f,37:55,
38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Gb,[2,115],{47:27,79:28,80:29,81:30,111:31,74:53,75:54,37:55,43:57,33:70,60:71,39:80,15:142,16:143,54:144,30:156,77:158,31:va,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,
51:N,52:J,53:r,92:p,96:[1,157],112:A,117:H,118:U,119:T,130:S}),{7:159,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,
158:V,159:Z,160:K,161:ba,162:R},a(za,ab,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,7:160,12:c,28:fa,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,51:N,52:J,53:r,61:E,62:O,63:k,67:m,68:t,92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,137:W,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),a([1,6,
31,32,42,70,94,131,133,135,139,156],[2,66]),{33:165,34:f,39:161,40:l,41:w,92:[1,164],98:162,99:163,104:Hb},{25:168,33:169,34:f,92:[1,167],95:h,103:[1,170],107:[1,171]},a(Ka,[2,92]),a(Ka,[2,93]),a(Aa,[2,40]),a(Aa,[2,41]),a(Aa,[2,42]),a(Aa,[2,43]),a(Aa,[2,44]),a(Aa,[2,45]),a(Aa,[2,46]),a(Aa,[2,47]),{4:172,5:3,7:4,8:5,9:6,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,31:[1,173],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,
48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:174,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:bb,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,
53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,116:176,117:H,118:U,119:T,120:Ib,123:177,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Aa,[2,169]),a(Aa,[2,170],{35:181,36:Oa}),a([1,6,31,32,42,46,65,70,73,82,83,84,85,87,89,90,94,113,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,163],
{110:183,114:ub}),{31:[2,69]},{31:[2,70]},a(La,[2,87]),a(La,[2,90]),{7:185,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,
157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:186,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,
162:R},{7:187,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:189,8:122,10:20,11:21,
12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,30:188,31:va,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{33:194,34:f,60:195,74:196,75:197,80:190,
92:p,118:e,119:T,143:191,144:[1,192],145:193},{142:198,146:[1,199],147:[1,200],148:[1,201]},a([6,31,70,94],Jb,{39:80,93:202,56:203,57:204,59:205,11:206,37:207,33:208,35:209,60:210,34:f,36:Oa,38:D,40:l,41:w,62:O,118:e}),a(Kb,[2,34]),a(Kb,[2,35]),a(Aa,[2,38]),{15:142,16:211,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:144,60:71,74:53,75:54,77:212,79:28,80:29,81:30,92:p,111:31,112:A,117:H,118:U,119:T,130:S},a([1,6,29,31,32,40,41,42,55,58,65,70,73,82,83,
84,85,87,89,90,94,96,102,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],[2,32]),a(Lb,[2,36]),{4:213,5:3,7:4,8:5,9:6,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,
112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ua,[2,5],{7:4,8:5,9:6,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,5:214,12:c,28:u,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,51:N,52:J,53:r,61:E,62:O,63:k,67:m,68:t,
92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,133:z,135:B,137:W,139:C,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),a(ta,[2,256]),{7:215,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,
129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:216,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,
136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:217,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,
149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:218,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,
159:Z,160:K,161:ba,162:R},{7:219,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:220,
8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:221,8:122,10:20,11:21,12:c,13:23,
14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:222,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,
20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:223,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,
25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:224,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,
34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:225,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,
43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:226,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,
50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:227,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,
61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:228,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,
74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ta,[2,207]),a(ta,[2,212]),{7:229,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,
75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ta,[2,206]),a(ta,[2,211]),{39:230,40:l,41:w,110:231,114:ub},a(La,[2,88]),a(Mb,[2,166]),{35:232,36:Oa},{35:233,36:Oa},a(La,[2,103],{35:234,36:Oa}),{35:235,36:Oa},a(La,[2,104]),{7:237,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,
28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Nb,74:53,75:54,77:40,79:28,80:29,81:30,88:236,91:238,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,121:239,122:vb,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{86:242,87:Pa,90:Qa},{110:243,114:ub},a(La,[2,89]),a(ua,[2,65],{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,
24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,7:244,12:c,28:fa,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,51:N,52:J,53:r,61:E,62:O,63:k,67:m,68:t,92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,133:ab,135:ab,139:ab,156:ab,137:W,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),a(Ma,[2,28],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,
166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:245,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,
158:V,159:Z,160:K,161:ba,162:R},{132:105,133:z,135:B,138:106,139:C,141:77,156:ya},a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,163,164,165,166,167,168,169,170,171,172,173,174],oa,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,8:122,12:c,28:fa,29:Ha,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,50:M,
51:N,52:J,53:r,61:E,62:O,63:k,67:m,68:t,92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,137:W,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),{6:[1,247],7:246,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:[1,248],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,
112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a([6,31],Ea,{69:251,65:[1,249],70:Ob}),a(Va,[2,74]),a(Va,[2,78],{55:[1,253],73:[1,252]}),a(Va,[2,81]),a(hb,[2,82]),a(hb,[2,83]),a(hb,[2,84]),a(hb,[2,85]),{35:181,36:Oa},{7:254,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:bb,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,
47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,116:176,117:H,118:U,119:T,120:Ib,123:177,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ta,[2,68]),{4:256,5:3,7:4,8:5,9:6,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,32:[1,255],33:70,34:f,37:55,
38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,159,160,164,165,166,167,168,169,170,171,172,173,174],[2,248],{141:77,132:102,138:103,163:ea}),a(cb,
[2,249],{141:77,132:102,138:103,163:ea,165:ha}),a(cb,[2,250],{141:77,132:102,138:103,163:ea,165:ha}),a(cb,[2,251],{141:77,132:102,138:103,163:ea,165:ha}),a(ta,[2,252],{40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa}),a(Mb,Ja,{109:107,78:108,86:114,82:Ta,83:Ga,84:Ua,85:Fa,87:Pa,90:Qa,113:Na}),{78:118,82:Ta,83:Ga,84:Ua,85:Fa,86:114,87:Pa,90:Qa,109:117,113:Na,114:Ja},a(Pb,Ia),a(ta,[2,253],{40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa}),a(ta,[2,254]),a(ta,[2,255]),{6:[1,
259],7:257,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:[1,258],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:260,8:122,10:20,
11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{30:261,31:va,155:[1,262]},a(ta,[2,191],{126:263,
127:[1,264],128:[1,265]}),a(ta,[2,205]),a(ta,[2,213]),{31:[1,266],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{150:267,152:268,153:ib},a(ta,[2,116]),{7:270,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,
68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Gb,[2,119],{30:271,31:va,40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa,96:[1,272]}),a(Ma,[2,198],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(za,db,{141:77,132:102,138:103,159:ka,160:ca,
163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(za,[2,123]),{29:[1,273],70:[1,274]},{29:[1,275]},{31:jb,33:280,34:f,94:[1,276],100:277,101:278,103:Ya},a([29,70],[2,139]),{102:[1,282]},{31:wb,33:287,34:f,94:[1,283],103:eb,106:284,108:285},a(za,[2,143]),{55:[1,289]},{7:290,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,
51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{29:[1,291]},{6:xa,131:[1,292]},{4:293,5:3,7:4,8:5,9:6,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,
49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a([6,31,70,120],Qb,{141:77,132:102,138:103,121:294,73:[1,295],122:vb,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(xb,[2,172]),a([6,31,120],
Ea,{69:296,70:kb}),a(Ra,[2,181]),{7:254,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:bb,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,116:298,117:H,118:U,119:T,123:177,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,
157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ra,[2,187]),a(Ra,[2,188]),a(Rb,[2,171]),a(Rb,[2,33]),a(b,[2,164]),{7:254,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:bb,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,115:[1,299],116:300,117:H,118:U,119:T,123:177,125:I,
129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{30:301,31:va,132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},a(Sb,[2,201],{141:77,132:102,138:103,133:z,134:[1,302],135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Sb,[2,203],{141:77,132:102,138:103,133:z,134:[1,303],
135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(ta,[2,209]),a(Za,[2,210],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,214],{140:[1,304]}),a(lb,[2,217]),{33:194,34:f,60:195,74:196,75:197,92:p,118:e,119:d,143:305,145:193},
a(lb,[2,223],{70:[1,306]}),a(mb,[2,219]),a(mb,[2,220]),a(mb,[2,221]),a(mb,[2,222]),a(ta,[2,216]),{7:307,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,
141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:308,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,
158:V,159:Z,160:K,161:ba,162:R},{7:309,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},
a(nb,Ea,{69:310,70:Tb}),a(Ba,[2,111]),a(Ba,[2,51],{58:[1,312]}),a(Ub,[2,60],{55:[1,313]}),a(Ba,[2,56]),a(Ub,[2,61]),a(yb,[2,57]),a(yb,[2,58]),a(yb,[2,59]),{46:[1,314],78:118,82:Ta,83:Ga,84:Ua,85:Fa,86:114,87:Pa,90:Qa,109:117,113:Na,114:Ja},a(Pb,wa),{6:xa,42:[1,315]},a(ua,[2,4]),a(Vb,[2,257],{141:77,132:102,138:103,163:ea,164:ga,165:ha}),a(Vb,[2,258],{141:77,132:102,138:103,163:ea,164:ga,165:ha}),a(cb,[2,259],{141:77,132:102,138:103,163:ea,165:ha}),a(cb,[2,260],{141:77,132:102,138:103,163:ea,165:ha}),
a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,166,167,168,169,170,171,172,173,174],[2,261],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173],[2,262],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,168,169,170,171,172,173],[2,263],{141:77,132:102,138:103,159:ka,160:ca,
163:ea,164:ga,165:ha,166:la,167:pa,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,169,170,171,172,173],[2,264],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,170,171,172,173],[2,265],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,171,172,
173],[2,266],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,172,173],[2,267],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,173],[2,268],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,
174:ia}),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173,174],[2,269],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la}),a(Za,[2,247],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Za,[2,246],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(b,
[2,159]),a(b,[2,160]),a(La,[2,99]),a(La,[2,100]),a(La,[2,101]),a(La,[2,102]),{89:[1,316]},{73:Nb,89:[2,107],121:317,122:vb,132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{89:[2,108]},{7:318,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,
60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,89:[2,180],92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Wb,[2,174]),a(Wb,Xb),a(La,[2,106]),a(b,[2,161]),a(ua,[2,64],{141:77,132:102,138:103,133:db,135:db,139:db,156:db,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ma,[2,29],{141:77,132:102,
138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ma,[2,48],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:319,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,
75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:320,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,
92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{66:321,67:m,68:t},a(Sa,fb,{72:127,33:129,60:130,74:131,75:132,71:322,34:f,73:na,92:p,118:e,119:d}),{6:Yb,31:Zb},a(Va,[2,79]),{7:325,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,
51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ra,Qb,{141:77,132:102,138:103,73:[1,326],133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a($b,[2,30]),{6:xa,32:[1,327]},a(Ma,[2,270],{141:77,132:102,
138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:328,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,
138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:329,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,
155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ma,[2,273],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(ta,[2,245]),{7:330,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,
105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ta,[2,192],{127:[1,331]}),{30:332,31:va},{30:335,31:va,33:333,34:f,75:334,92:p},{150:336,152:268,153:ib},{32:[1,337],151:[1,338],152:339,153:ib},a(ob,[2,238]),{7:341,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,
47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,124:340,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(ac,[2,117],{141:77,132:102,138:103,30:342,31:va,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(ta,[2,120]),{7:343,8:122,10:20,
11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{39:344,40:l,41:w},{92:[1,346],99:345,104:Hb},{39:347,
40:l,41:w},{29:[1,348]},a(nb,Ea,{69:349,70:pb}),a(Ba,[2,130]),{31:jb,33:280,34:f,100:351,101:278,103:Ya},a(Ba,[2,135],{102:[1,352]}),a(Ba,[2,137],{102:[1,353]}),{33:354,34:f},a(za,[2,141]),a(nb,Ea,{69:355,70:zb}),a(Ba,[2,150]),{31:wb,33:287,34:f,103:eb,106:357,108:285},a(Ba,[2,155],{102:[1,358]}),a(Ba,[2,158]),{6:[1,360],7:359,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:[1,361],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,
45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ab,[2,147],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{39:362,40:l,41:w},a(Aa,[2,199]),{6:xa,32:[1,363]},
{7:364,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a([12,28,34,38,40,41,44,45,48,
49,50,51,52,53,61,62,63,67,68,92,95,97,105,112,117,118,119,125,129,130,133,135,137,139,149,155,157,158,159,160,161,162],Xb,{6:gb,31:gb,70:gb,120:gb}),{6:qb,31:rb,120:[1,365]},a([6,31,32,115,120],fb,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,66:33,77:40,154:41,132:43,136:44,138:45,74:53,75:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,76:179,7:254,123:368,12:c,28:fa,34:f,38:D,40:l,41:w,44:G,45:F,48:x,49:v,
50:M,51:N,52:J,53:r,61:E,62:O,63:k,67:m,68:t,73:Wa,92:p,95:h,97:y,105:P,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,133:z,135:B,137:W,139:C,149:Q,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R}),a(Sa,Ea,{69:369,70:kb}),a(b,[2,167]),a([6,31,115],Ea,{69:370,70:kb}),a(bc,[2,242]),{7:371,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,
62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:372,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,
75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:373,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,
92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(lb,[2,218]),{33:194,34:f,60:195,74:196,75:197,92:p,118:e,119:d,145:374},a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,135,139,156],[2,225],{141:77,132:102,138:103,134:[1,375],140:[1,376],159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Bb,[2,226],{141:77,132:102,
138:103,134:[1,377],159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Bb,[2,232],{141:77,132:102,138:103,134:[1,378],159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{6:cc,31:dc,94:[1,379]},a(Cb,fb,{39:80,57:204,59:205,11:206,37:207,33:208,35:209,60:210,56:382,34:f,36:Oa,38:D,40:l,41:w,62:O,118:e}),{7:383,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,
26:18,27:19,28:fa,31:[1,384],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:385,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,
31:[1,386],33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Aa,[2,39]),a(Lb,[2,37]),a(La,[2,105]),{7:387,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,
26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,89:[2,178],92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{89:[2,179],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,
171:da,172:ma,173:sa,174:ia},a(Ma,[2,49],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{32:[1,388],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{30:389,31:va},a(Va,[2,75]),{33:129,34:f,60:130,71:390,72:127,73:na,74:131,75:132,92:p,118:e,119:d},a(ec,n,{71:126,72:127,33:129,60:130,74:131,75:132,64:391,34:f,73:na,92:p,118:e,
119:d}),a(Va,[2,80],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ra,gb),a($b,[2,31]),{32:[1,392],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},a(Ma,[2,272],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{30:393,31:va,132:102,
133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{30:394,31:va},a(ta,[2,193]),{30:395,31:va},{30:396,31:va},a(Db,[2,197]),{32:[1,397],151:[1,398],152:339,153:ib},a(ta,[2,236]),{30:399,31:va},a(ob,[2,239]),{30:400,31:va,70:[1,401]},a(fc,[2,189],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(ta,[2,118]),a(ac,[2,
121],{141:77,132:102,138:103,30:402,31:va,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(za,[2,124]),{29:[1,403]},{31:jb,33:280,34:f,100:404,101:278,103:Ya},a(za,[2,125]),{39:405,40:l,41:w},{6:sb,31:tb,94:[1,406]},a(Cb,fb,{33:280,101:409,34:f,103:Ya}),a(Sa,Ea,{69:410,70:pb}),{33:411,34:f},{33:412,34:f},{29:[2,140]},{6:Eb,31:Fb,94:[1,413]},a(Cb,fb,{33:287,108:416,34:f,103:eb}),a(Sa,Ea,{69:417,70:zb}),{33:418,34:f,103:[1,419]},
a(Ab,[2,144],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:420,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,
129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:421,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,
136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(za,[2,148]),{131:[1,422]},{120:[1,423],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},a(xb,[2,173]),{7:254,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,
54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,123:424,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:254,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,31:bb,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,
60:71,61:E,62:O,63:k,66:33,67:m,68:t,73:Wa,74:53,75:54,76:179,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,116:425,117:H,118:U,119:T,123:177,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ra,[2,182]),{6:qb,31:rb,32:[1,426]},{6:qb,31:rb,115:[1,427]},a(Za,[2,202],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Za,
[2,204],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Za,[2,215],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(lb,[2,224]),{7:428,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,
49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:429,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,
60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:430,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,
68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:431,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,
80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(xb,[2,109]),{11:206,33:208,34:f,35:209,36:Oa,37:207,38:D,39:80,40:l,41:w,56:432,57:204,59:205,60:210,62:O,118:e},a(ec,Jb,{39:80,56:203,57:204,59:205,11:206,37:207,33:208,35:209,60:210,93:433,34:f,36:Oa,38:D,40:l,41:w,62:O,118:e}),a(Ba,[2,112]),a(Ba,[2,52],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,
160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:434,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,
149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},a(Ba,[2,54],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{7:435,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,
81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{89:[2,177],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},a(ta,[2,50]),a(ta,[2,67]),a(Va,[2,76]),a(Sa,Ea,{69:436,70:Ob}),a(ta,[2,271]),a(bc,[2,243]),a(ta,[2,194]),a(Db,[2,195]),a(Db,[2,196]),a(ta,[2,234]),{30:437,31:va},
{32:[1,438]},a(ob,[2,240],{6:[1,439]}),{7:440,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,
162:R},a(ta,[2,122]),{39:441,40:l,41:w},a(nb,Ea,{69:442,70:pb}),a(za,[2,126]),{29:[1,443]},{33:280,34:f,101:444,103:Ya},{31:jb,33:280,34:f,100:445,101:278,103:Ya},a(Ba,[2,131]),{6:sb,31:tb,32:[1,446]},a(Ba,[2,136]),a(Ba,[2,138]),a(za,[2,142],{29:[1,447]}),{33:287,34:f,103:eb,108:448},{31:wb,33:287,34:f,103:eb,106:449,108:285},a(Ba,[2,151]),{6:Eb,31:Fb,32:[1,450]},a(Ba,[2,156]),a(Ba,[2,157]),a(Ab,[2,145],{141:77,132:102,138:103,133:z,135:B,139:C,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,
169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),{32:[1,451],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},a(Aa,[2,200]),a(Aa,[2,176]),a(Ra,[2,183]),a(Sa,Ea,{69:452,70:kb}),a(Ra,[2,184]),a(b,[2,168]),a([1,6,31,32,42,65,70,73,89,94,115,120,122,131,133,134,135,139,156],[2,227],{141:77,132:102,138:103,140:[1,453],159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),
a(Bb,[2,229],{141:77,132:102,138:103,134:[1,454],159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ma,[2,228],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ma,[2,233],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ba,[2,113]),a(Sa,Ea,{69:455,70:Tb}),{32:[1,456],132:102,133:z,135:B,138:103,139:C,
141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{32:[1,457],132:102,133:z,135:B,138:103,139:C,141:77,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia},{6:Yb,31:Zb,32:[1,458]},{32:[1,459]},a(ta,[2,237]),a(ob,[2,241]),a(fc,[2,190],{141:77,132:102,138:103,133:z,135:B,139:C,156:qa,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(za,
[2,128]),{6:sb,31:tb,94:[1,460]},{39:461,40:l,41:w},a(Ba,[2,132]),a(Sa,Ea,{69:462,70:pb}),a(Ba,[2,133]),{39:463,40:l,41:w},a(Ba,[2,152]),a(Sa,Ea,{69:464,70:zb}),a(Ba,[2,153]),a(za,[2,146]),{6:qb,31:rb,32:[1,465]},{7:466,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,
92:p,95:h,97:y,105:P,111:31,112:A,117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{7:467,8:122,10:20,11:21,12:c,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:fa,33:70,34:f,37:55,38:D,39:80,40:l,41:w,43:57,44:G,45:F,47:27,48:x,49:v,50:M,51:N,52:J,53:r,54:26,60:71,61:E,62:O,63:k,66:33,67:m,68:t,74:53,75:54,77:40,79:28,80:29,81:30,92:p,95:h,97:y,105:P,111:31,112:A,
117:H,118:U,119:T,125:I,129:aa,130:S,132:43,133:z,135:B,136:44,137:W,138:45,139:C,141:77,149:Q,154:41,155:X,157:Y,158:V,159:Z,160:K,161:ba,162:R},{6:cc,31:dc,32:[1,468]},a(Ba,[2,53]),a(Ba,[2,55]),a(Va,[2,77]),a(ta,[2,235]),{29:[1,469]},a(za,[2,127]),{6:sb,31:tb,32:[1,470]},a(za,[2,149]),{6:Eb,31:Fb,32:[1,471]},a(Ra,[2,185]),a(Ma,[2,230],{141:77,132:102,138:103,159:ka,160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ma,[2,231],{141:77,132:102,138:103,159:ka,
160:ca,163:ea,164:ga,165:ha,166:la,167:pa,168:L,169:ja,170:ra,171:da,172:ma,173:sa,174:ia}),a(Ba,[2,114]),{39:472,40:l,41:w},a(Ba,[2,134]),a(Ba,[2,154]),a(za,[2,129])],defaultActions:{68:[2,69],69:[2,70],238:[2,108],354:[2,140]},parseError:function(a,b){if(b.recoverable)this.trace(a);else{var d=function(a,b){this.message=a;this.hash=b};d.prototype=Error;throw new d(a,b);}},parse:function(a){var b=[0],d=[null],e=[],n=this.table,na="",c=0,f=0,h=0,g=e.slice.call(arguments,1),va=Object.create(this.lexer),
k={},Ka;for(Ka in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ka)&&(k[Ka]=this.yy[Ka]);va.setInput(a,k);k.lexer=va;k.parser=this;"undefined"==typeof va.yylloc&&(va.yylloc={});Ka=va.yylloc;e.push(Ka);var m=va.options&&va.options.ranges;this.parseError="function"===typeof k.parseError?k.parseError:Object.getPrototypeOf(this).parseError;for(var t,p,Ia,l,r={},y,q;;){Ia=b[b.length-1];if(this.defaultActions[Ia])l=this.defaultActions[Ia];else{if(null===t||"undefined"==typeof t)t=va.lex()||1,"number"!==
typeof t&&(t=this.symbols_[t]||t);l=n[Ia]&&n[Ia][t]}if("undefined"===typeof l||!l.length||!l[0]){var wa;q=[];for(y in n[Ia])this.terminals_[y]&&2<y&&q.push("'"+this.terminals_[y]+"'");wa=va.showPosition?"Parse error on line "+(c+1)+":\n"+va.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[t]||t)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==t?"end of input":"'"+(this.terminals_[t]||t)+"'");this.parseError(wa,{text:va.match,token:this.terminals_[t]||t,line:va.yylineno,loc:Ka,
expected:q})}if(l[0]instanceof Array&&1<l.length)throw Error("Parse Error: multiple actions possible at state: "+Ia+", token: "+t);switch(l[0]){case 1:b.push(t);d.push(va.yytext);e.push(va.yylloc);b.push(l[1]);t=null;p?(t=p,p=null):(f=va.yyleng,na=va.yytext,c=va.yylineno,Ka=va.yylloc,0<h&&h--);break;case 2:q=this.productions_[l[1]][1];r.$=d[d.length-q];r._$={first_line:e[e.length-(q||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(q||1)].first_column,last_column:e[e.length-
1].last_column};m&&(r._$.range=[e[e.length-(q||1)].range[0],e[e.length-1].range[1]]);Ia=this.performAction.apply(r,[na,f,c,k,l[1],d,e].concat(g));if("undefined"!==typeof Ia)return Ia;q&&(b=b.slice(0,-2*q),d=d.slice(0,-1*q),e=e.slice(0,-1*q));b.push(this.productions_[l[1]][0]);d.push(r.$);e.push(r._$);l=n[b[b.length-2]][b[b.length-1]];b.push(l);break;case 3:return!0}}}};g.prototype=gc;gc.Parser=g;return new g}();"undefined"!==typeof u&&"undefined"!==typeof g&&(g.parser=xa,g.Parser=xa.Parser,g.parse=
function(){return xa.parse.apply(xa,arguments)},g.main=function(q){q[1]||(console.log("Usage: "+q[0]+" FILE"),process.exit(1));var a="",c=u("fs");"undefined"!==typeof c&&null!==c&&(a=c.readFileSync(u("path").normalize(q[1]),"utf8"));return g.parser.parse(a)},"undefined"!==typeof ua&&u.main===ua&&g.main(process.argv.slice(1)));return ua.exports}();u["./scope"]=function(){var g={};(function(){var u=[].indexOf||function(g){for(var q=0,a=this.length;q<a;q++)if(q in this&&this[q]===g)return q;return-1};
g.Scope=function(){function g(g,a,c,u){var f,q;this.parent=g;this.expressions=a;this.method=c;this.referencedVars=u;this.variables=[{name:"arguments",type:"arguments"}];this.positions={};this.parent||(this.utilities={});this.root=null!=(f=null!=(q=this.parent)?q.root:void 0)?f:this}g.prototype.add=function(g,a,c){return this.shared&&!c?this.parent.add(g,a,c):Object.prototype.hasOwnProperty.call(this.positions,g)?this.variables[this.positions[g]].type=a:this.positions[g]=this.variables.push({name:g,
type:a})-1};g.prototype.namedMethod=function(){var g;return null!=(g=this.method)&&g.name||!this.parent?this.method:this.parent.namedMethod()};g.prototype.find=function(g){if(this.check(g))return!0;this.add(g,"var");return!1};g.prototype.parameter=function(g){if(!this.shared||!this.parent.check(g,!0))return this.add(g,"param")};g.prototype.check=function(g){var a;return!!(this.type(g)||null!=(a=this.parent)&&a.check(g))};g.prototype.temporary=function(g,a,c){null==c&&(c=!1);return c?(c=g.charCodeAt(0),
g=122-c,c=String.fromCharCode(c+a%(g+1)),a=Math.floor(a/(g+1)),""+c+(a||"")):""+g+(a||"")};g.prototype.type=function(g){var a,c,q,f;q=this.variables;a=0;for(c=q.length;a<c;a++)if(f=q[a],f.name===g)return f.type;return null};g.prototype.freeVariable=function(g,a){var c,q,f;null==a&&(a={});for(c=0;;){f=this.temporary(g,c,a.single);if(!(this.check(f)||0<=u.call(this.root.referencedVars,f)))break;c++}(null!=(q=a.reserve)?q:1)&&this.add(f,"var",!0);return f};g.prototype.assign=function(g,a){this.add(g,
{value:a,assigned:!0},!0);return this.hasAssignments=!0};g.prototype.hasDeclarations=function(){return!!this.declaredVariables().length};g.prototype.declaredVariables=function(){var g,a,c,u,f;u=this.variables;f=[];a=0;for(c=u.length;a<c;a++)g=u[a],"var"===g.type&&f.push(g.name);return f.sort()};g.prototype.assignedVariables=function(){var g,a,c,u,f;c=this.variables;u=[];g=0;for(a=c.length;g<a;g++)f=c[g],f.type.assigned&&u.push(f.name+" \x3d "+f.type.value);return u};return g}()}).call(this);return g}();
u["./nodes"]=function(){var g={};(function(){var ua,qa,q,a,c,Ca,f,D,l,w,G,F,x,v,M,N,J,r,E,O,k,m,t,p,h,y,P,A,H,U,T,I,aa,S,z,B,W,C,Q,X,Y,V,Z,K,ba,R,ya,$a,Xa,ka,ca,ea,ga,ha,la,pa,L,ja,ra,da,ma,sa,ia,Da,ta,Ja,Ta,Ga,Ua,Fa,Pa,Qa,Na,za,oa=function(a,b){function n(){this.constructor=a}for(var na in b)fa.call(b,na)&&(a[na]=b[na]);n.prototype=b.prototype;a.prototype=new n;a.__super__=b.prototype;return a},fa={}.hasOwnProperty,Ha=[].indexOf||function(a){for(var b=0,n=this.length;b<n;b++)if(b in this&&this[b]===
a)return b;return-1},Aa=[].slice;Error.stackTraceLimit=Infinity;K=u("./scope").Scope;a=u("./lexer");Ga=a.isUnassignable;m=a.JS_FORBIDDEN;v=u("./helpers");da=v.compact;ia=v.flatten;sa=v.extend;Fa=v.merge;ma=v.del;a=v.addLocationDataFn;Ua=v.locationDataToString;Qa=v.throwSyntaxError;g.extend=sa;g.addLocationDataFn=a;ja=function(){return!0};I=function(){return!1};ea=function(){return this};T=function(){this.negated=!this.negated;return this};g.CodeFragment=w=function(){function a(a,n){var b;this.code=
""+n;this.locationData=null!=a?a.locationData:void 0;this.type=(null!=a?null!=(b=a.constructor)?b.name:void 0:void 0)||"unknown"}a.prototype.toString=function(){return""+this.code+(this.locationData?": "+Ua(this.locationData):"")};return a}();Da=function(a){var b,n,na,e;e=[];n=0;for(na=a.length;n<na;n++)b=a[n],e.push(b.code);return e.join("")};g.Base=a=function(){function a(){}a.prototype.compile=function(a,n){return Da(this.compileToFragments(a,n))};a.prototype.compileToFragments=function(a,n){a=
sa({},a);n&&(a.level=n);n=this.unfoldSoak(a)||this;n.tab=a.indent;return a.level!==A&&n.isStatement(a)?n.compileClosure(a):n.compileNode(a)};a.prototype.compileClosure=function(a){var b,na,e,d;(e=this.jumps())&&e.error("cannot use a pure statement in an expression");a.sharedScope=!0;e=new l([],c.wrap([this]));b=[];if((na=this.contains(Ja))||this.contains(Ta))b=[new ga],na?(na="apply",b.push(new r("arguments"))):na="call",e=new L(e,[new ua(new Q(na))]);a=(new f(e,b)).compileNode(a);if(e.isGenerator||
null!=(d=e.base)&&d.isGenerator)a.unshift(this.makeCode("(yield* ")),a.push(this.makeCode(")"));return a};a.prototype.cache=function(a,n,na){var b;if(null!=na?na(this):this.isComplex())return na=new r(a.scope.freeVariable("ref")),b=new q(na,this),n?[b.compileToFragments(a,n),[this.makeCode(na.value)]]:[b,na];na=n?this.compileToFragments(a,n):this;return[na,na]};a.prototype.cacheToCodeFragments=function(a){return[Da(a[0]),Da(a[1])]};a.prototype.makeReturn=function(a){var b;b=this.unwrapAll();return a?
new f(new H(a+".push"),[b]):new V(b)};a.prototype.contains=function(a){var b;b=void 0;this.traverseChildren(!1,function(n){if(a(n))return b=n,!1});return b};a.prototype.lastNonComment=function(a){var b;for(b=a.length;b--;)if(!(a[b]instanceof G))return a[b];return null};a.prototype.toString=function(a,n){var b;null==a&&(a="");null==n&&(n=this.constructor.name);b="\n"+a+n;this.soak&&(b+="?");this.eachChild(function(e){return b+=e.toString(a+ca)});return b};a.prototype.eachChild=function(a){var b,na,
e,d,c,f,g;if(!this.children)return this;f=this.children;na=0;for(d=f.length;na<d;na++)if(b=f[na],this[b])for(g=ia([this[b]]),e=0,c=g.length;e<c;e++)if(b=g[e],!1===a(b))return this;return this};a.prototype.traverseChildren=function(a,n){return this.eachChild(function(b){if(!1!==n(b))return b.traverseChildren(a,n)})};a.prototype.invert=function(){return new B("!",this)};a.prototype.unwrapAll=function(){var a;for(a=this;a!==(a=a.unwrap()););return a};a.prototype.children=[];a.prototype.isStatement=I;
a.prototype.jumps=I;a.prototype.isComplex=ja;a.prototype.isChainable=I;a.prototype.isAssignable=I;a.prototype.isNumber=I;a.prototype.unwrap=ea;a.prototype.unfoldSoak=I;a.prototype.assigns=I;a.prototype.updateLocationDataIfMissing=function(a){if(this.locationData)return this;this.locationData=a;return this.eachChild(function(b){return b.updateLocationDataIfMissing(a)})};a.prototype.error=function(a){return Qa(a,this.locationData)};a.prototype.makeCode=function(a){return new w(this,a)};a.prototype.wrapInBraces=
function(a){return[].concat(this.makeCode("("),a,this.makeCode(")"))};a.prototype.joinFragmentArrays=function(a,n){var b,e,d,c,f;b=[];d=c=0;for(f=a.length;c<f;d=++c)e=a[d],d&&b.push(this.makeCode(n)),b=b.concat(e);return b};return a}();g.Block=c=function(a){function b(a){this.expressions=da(ia(a||[]))}oa(b,a);b.prototype.children=["expressions"];b.prototype.push=function(a){this.expressions.push(a);return this};b.prototype.pop=function(){return this.expressions.pop()};b.prototype.unshift=function(a){this.expressions.unshift(a);
return this};b.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this};b.prototype.isEmpty=function(){return!this.expressions.length};b.prototype.isStatement=function(a){var b,e,d,n;n=this.expressions;e=0;for(d=n.length;e<d;e++)if(b=n[e],b.isStatement(a))return!0;return!1};b.prototype.jumps=function(a){var b,e,d,n;n=this.expressions;e=0;for(d=n.length;e<d;e++)if(b=n[e],b=b.jumps(a))return b};b.prototype.makeReturn=function(a){var b,e;for(e=this.expressions.length;e--;)if(b=
this.expressions[e],!(b instanceof G)){this.expressions[e]=b.makeReturn(a);b instanceof V&&!b.expression&&this.expressions.splice(e,1);break}return this};b.prototype.compileToFragments=function(a,na){null==a&&(a={});return a.scope?b.__super__.compileToFragments.call(this,a,na):this.compileRoot(a)};b.prototype.compileNode=function(a){var n,e,d,c,f,g,k;this.tab=a.indent;k=a.level===A;e=[];g=this.expressions;d=n=0;for(c=g.length;n<c;d=++n)f=g[d],f=f.unwrapAll(),f=f.unfoldSoak(a)||f,f instanceof b?e.push(f.compileNode(a)):
k?(f.front=!0,d=f.compileToFragments(a),f.isStatement(a)||(d.unshift(this.makeCode(""+this.tab)),d.push(this.makeCode(";"))),e.push(d)):e.push(f.compileToFragments(a,h));if(k)return this.spaced?[].concat(this.joinFragmentArrays(e,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(e,"\n");n=e.length?this.joinFragmentArrays(e,", "):[this.makeCode("void 0")];return 1<e.length&&a.level>=h?this.wrapInBraces(n):n};b.prototype.compileRoot=function(a){var b,e,d,n,c;a.indent=a.bare?"":ca;a.level=A;this.spaced=
!0;a.scope=new K(null,this,null,null!=(d=a.referencedVars)?d:[]);c=a.locals||[];d=0;for(e=c.length;d<e;d++)n=c[d],a.scope.parameter(n);d=[];if(!a.bare){var f;f=this.expressions;e=[];b=n=0;for(c=f.length;n<c;b=++n){b=f[b];if(!(b.unwrap()instanceof G))break;e.push(b)}n=this.expressions.slice(e.length);this.expressions=e;e.length&&(d=this.compileNode(Fa(a,{indent:""})),d.push(this.makeCode("\n")));this.expressions=n}e=this.compileWithDeclarations(a);return a.bare?e:[].concat(d,this.makeCode("(function() {\n"),
e,this.makeCode("\n}).call(this);\n"))};b.prototype.compileWithDeclarations=function(a){var b,e,d,n,c,f;d=[];f=this.expressions;n=c=0;for(b=f.length;c<b&&(e=f[n],e=e.unwrap(),e instanceof G||e instanceof H);n=++c);a=Fa(a,{level:A});n&&(e=this.expressions.splice(n,9E9),d=[this.spaced,!1],c=d[0],this.spaced=d[1],c=[this.compileNode(a),c],d=c[0],this.spaced=c[1],this.expressions=e);e=this.compileNode(a);c=a.scope;c.expressions===this&&(b=a.scope.hasDeclarations(),a=c.hasAssignments,b||a?(n&&d.push(this.makeCode("\n")),
d.push(this.makeCode(this.tab+"var ")),b&&d.push(this.makeCode(c.declaredVariables().join(", "))),a&&(b&&d.push(this.makeCode(",\n"+(this.tab+ca))),d.push(this.makeCode(c.assignedVariables().join(",\n"+(this.tab+ca))))),d.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):d.length&&e.length&&d.push(this.makeCode("\n")));return d.concat(e)};b.wrap=function(a){return 1===a.length&&a[0]instanceof b?a[0]:new b(a)};return b}(a);g.Literal=H=function(a){function b(a){this.value=a}oa(b,a);b.prototype.isComplex=
I;b.prototype.assigns=function(a){return a===this.value};b.prototype.compileNode=function(a){return[this.makeCode(this.value)]};b.prototype.toString=function(){return" "+(this.isStatement()?b.__super__.toString.apply(this,arguments):this.constructor.name)+": "+this.value};return b}(a);g.NumberLiteral=S=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(H);g.InfinityLiteral=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,
a);b.prototype.compileNode=function(){return[this.makeCode("2e308")]};return b}(S);g.NaNLiteral=function(a){function b(){b.__super__.constructor.call(this,"NaN")}oa(b,a);b.prototype.compileNode=function(a){var b;b=[this.makeCode("0/0")];return a.level>=y?this.wrapInBraces(b):b};return b}(S);g.StringLiteral=$a=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(H);g.RegexLiteral=Y=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}
oa(b,a);return b}(H);g.PassthroughLiteral=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(H);g.IdentifierLiteral=r=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.isAssignable=ja;return b}(H);g.PropertyName=Q=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.isAssignable=ja;return b}(H);g.StatementLiteral=ya=function(a){function b(){return b.__super__.constructor.apply(this,
arguments)}oa(b,a);b.prototype.isStatement=ja;b.prototype.makeReturn=ea;b.prototype.jumps=function(a){if("break"===this.value&&!(null!=a&&a.loop||null!=a&&a.block)||"continue"===this.value&&(null==a||!a.loop))return this};b.prototype.compileNode=function(a){return[this.makeCode(""+this.tab+this.value+";")]};return b}(H);g.ThisLiteral=ga=function(a){function b(){b.__super__.constructor.call(this,"this")}oa(b,a);b.prototype.compileNode=function(a){var b;a=null!=(b=a.scope.method)&&b.bound?a.scope.method.context:
this.value;return[this.makeCode(a)]};return b}(H);g.UndefinedLiteral=pa=function(a){function b(){b.__super__.constructor.call(this,"undefined")}oa(b,a);b.prototype.compileNode=function(a){return[this.makeCode(a.level>=t?"(void 0)":"void 0")]};return b}(H);g.NullLiteral=aa=function(a){function b(){b.__super__.constructor.call(this,"null")}oa(b,a);return b}(H);g.BooleanLiteral=Ca=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(H);g.Return=V=function(a){function b(a){this.expression=
a}oa(b,a);b.prototype.children=["expression"];b.prototype.isStatement=ja;b.prototype.makeReturn=ea;b.prototype.jumps=ea;b.prototype.compileToFragments=function(a,na){var e,d;e=null!=(d=this.expression)?d.makeReturn():void 0;return!e||e instanceof b?b.__super__.compileToFragments.call(this,a,na):e.compileToFragments(a,na)};b.prototype.compileNode=function(a){var b;b=[];b.push(this.makeCode(this.tab+("return"+(this.expression?" ":""))));this.expression&&(b=b.concat(this.expression.compileToFragments(a,
P)));b.push(this.makeCode(";"));return b};return b}(a);g.YieldReturn=ra=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.compileNode=function(a){null==a.scope.parent&&this.error("yield can only occur inside functions");return b.__super__.compileNode.apply(this,arguments)};return b}(V);g.Value=L=function(a){function b(a,na,e){if(!na&&a instanceof b)return a;this.base=a;this.properties=na||[];e&&(this[e]=!0);return this}oa(b,a);b.prototype.children=["base",
"properties"];b.prototype.add=function(a){this.properties=this.properties.concat(a);return this};b.prototype.hasProperties=function(){return!!this.properties.length};b.prototype.bareLiteral=function(a){return!this.properties.length&&this.base instanceof a};b.prototype.isArray=function(){return this.bareLiteral(qa)};b.prototype.isRange=function(){return this.bareLiteral(X)};b.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()};b.prototype.isAssignable=function(){return this.hasProperties()||
this.base.isAssignable()};b.prototype.isNumber=function(){return this.bareLiteral(S)};b.prototype.isString=function(){return this.bareLiteral($a)};b.prototype.isRegex=function(){return this.bareLiteral(Y)};b.prototype.isUndefined=function(){return this.bareLiteral(pa)};b.prototype.isNull=function(){return this.bareLiteral(aa)};b.prototype.isBoolean=function(){return this.bareLiteral(Ca)};b.prototype.isAtomic=function(){var a,b,e,d;d=this.properties.concat(this.base);a=0;for(b=d.length;a<b;a++)if(e=
d[a],e.soak||e instanceof f)return!1;return!0};b.prototype.isNotCallable=function(){return this.isNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()||this.isUndefined()||this.isNull()||this.isBoolean()};b.prototype.isStatement=function(a){return!this.properties.length&&this.base.isStatement(a)};b.prototype.assigns=function(a){return!this.properties.length&&this.base.assigns(a)};b.prototype.jumps=function(a){return!this.properties.length&&this.base.jumps(a)};
b.prototype.isObject=function(a){return this.properties.length?!1:this.base instanceof z&&(!a||this.base.generated)};b.prototype.isSplice=function(){var a;a=this.properties;return a[a.length-1]instanceof ba};b.prototype.looksStatic=function(a){var b;return this.base.value===a&&1===this.properties.length&&"prototype"!==(null!=(b=this.properties[0].name)?b.value:void 0)};b.prototype.unwrap=function(){return this.properties.length?this:this.base};b.prototype.cacheReference=function(a){var n,e,d,c;n=
this.properties;d=n[n.length-1];if(2>this.properties.length&&!this.base.isComplex()&&(null==d||!d.isComplex()))return[this,this];n=new b(this.base,this.properties.slice(0,-1));n.isComplex()&&(e=new r(a.scope.freeVariable("base")),n=new b(new C(new q(e,n))));if(!d)return[n,e];d.isComplex()&&(c=new r(a.scope.freeVariable("name")),d=new k(new q(c,d.index)),c=new k(c));return[n.add(d),new b(e||n.base,[c||d])]};b.prototype.compileNode=function(a){var b,e,d,n,c;this.base.front=this.front;c=this.properties;
b=this.base.compileToFragments(a,c.length?t:null);c.length&&Z.test(Da(b))&&b.push(this.makeCode("."));e=0;for(d=c.length;e<d;e++)n=c[e],b.push.apply(b,n.compileToFragments(a));return b};b.prototype.unfoldSoak=function(a){return null!=this.unfoldedSoak?this.unfoldedSoak:this.unfoldedSoak=function(n){return function(){var e,d,c,na,f;if(d=n.base.unfoldSoak(a))return(e=d.body.properties).push.apply(e,n.properties),d;f=n.properties;d=e=0;for(c=f.length;e<c;d=++e)if(na=f[d],na.soak)return na.soak=!1,e=
new b(n.base,n.properties.slice(0,d)),c=new b(n.base,n.properties.slice(d)),e.isComplex()&&(d=new r(a.scope.freeVariable("ref")),e=new C(new q(d,e)),c.base=d),new E(new F(e),c,{soak:!0});return!1}}(this)()};return b}(a);g.Comment=G=function(a){function b(a){this.comment=a}oa(b,a);b.prototype.isStatement=ja;b.prototype.makeReturn=ea;b.prototype.compileNode=function(a,b){var e;e=this.comment.replace(/^(\s*)#(?=\s)/gm,"$1 *");e="/*"+Pa(e,this.tab)+(0<=Ha.call(e,"\n")?"\n"+this.tab:"")+" */";(b||a.level)===
A&&(e=a.indent+e);return[this.makeCode("\n"),this.makeCode(e)]};return b}(a);g.Call=f=function(a){function b(a,b,e){this.variable=a;this.args=null!=b?b:[];this.soak=e;this.isNew=!1;this.variable instanceof L&&this.variable.isNotCallable()&&this.variable.error("literal is not a function")}oa(b,a);b.prototype.children=["variable","args"];b.prototype.newInstance=function(){var a,c;a=(null!=(c=this.variable)?c.base:void 0)||this.variable;a instanceof b&&!a.isNew?a.newInstance():this.isNew=!0;return this};
b.prototype.unfoldSoak=function(a){var n,e,d,c,f;if(this.soak){if(this instanceof ka)n=new H(this.superReference(a)),e=new L(n);else{if(e=Na(a,this,"variable"))return e;e=(new L(this.variable)).cacheReference(a);n=e[0];e=e[1]}e=new b(e,this.args);e.isNew=this.isNew;n=new H("typeof "+n.compile(a)+' \x3d\x3d\x3d "function"');return new E(n,new L(e),{soak:!0})}n=this;for(d=[];;)if(n.variable instanceof b)d.push(n),n=n.variable;else{if(!(n.variable instanceof L))break;d.push(n);if(!((n=n.variable.base)instanceof
b))break}f=d.reverse();d=0;for(c=f.length;d<c;d++)n=f[d],e&&(n.variable instanceof b?n.variable=e:n.variable.base=e),e=Na(a,n,"variable");return e};b.prototype.compileNode=function(a){var b,e,d,n,c,f;null!=(d=this.variable)&&(d.front=this.front);d=R.compileSplattedArray(a,this.args,!0);if(d.length)return this.compileSplat(a,d);d=[];f=this.args;e=n=0;for(c=f.length;n<c;e=++n)b=f[e],e&&d.push(this.makeCode(", ")),d.push.apply(d,b.compileToFragments(a,h));b=[];this instanceof ka?(a=this.superReference(a)+
(".call("+this.superThis(a)),d.length&&(a+=", "),b.push(this.makeCode(a))):(this.isNew&&b.push(this.makeCode("new ")),b.push.apply(b,this.variable.compileToFragments(a,t)),b.push(this.makeCode("(")));b.push.apply(b,d);b.push(this.makeCode(")"));return b};b.prototype.compileSplat=function(a,b){var e,d,n,c;if(this instanceof ka)return[].concat(this.makeCode(this.superReference(a)+".apply("+this.superThis(a)+", "),b,this.makeCode(")"));if(this.isNew)return e=this.tab+ca,[].concat(this.makeCode("(function(func, args, ctor) {\n"+
e+"ctor.prototype \x3d func.prototype;\n"+e+"var child \x3d new ctor, result \x3d func.apply(child, args);\n"+e+"return Object(result) \x3d\x3d\x3d result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(a,h),this.makeCode(", "),b,this.makeCode(", function(){})"));e=[];d=new L(this.variable);(n=d.properties.pop())&&d.isComplex()?(c=a.scope.freeVariable("ref"),e=e.concat(this.makeCode("("+c+" \x3d "),d.compileToFragments(a,h),this.makeCode(")"),n.compileToFragments(a))):(d=d.compileToFragments(a,
t),Z.test(Da(d))&&(d=this.wrapInBraces(d)),n?(c=Da(d),d.push.apply(d,n.compileToFragments(a))):c="null",e=e.concat(d));return e.concat(this.makeCode(".apply("+c+", "),b,this.makeCode(")"))};return b}(a);g.SuperCall=ka=function(a){function b(a){b.__super__.constructor.call(this,null,null!=a?a:[new R(new r("arguments"))]);this.isBare=null!=a}oa(b,a);b.prototype.superReference=function(a){var b,e,d,c,n,f,g;c=a.scope.namedMethod();if(null!=c&&c.klass){d=c.klass;n=c.name;g=c.variable;d.isComplex()&&(e=
new r(a.scope.parent.freeVariable("base")),b=new L(new C(new q(e,d))),g.base=b,g.properties.splice(0,d.properties.length));if(n.isComplex()||n instanceof k&&n.index.isAssignable())f=new r(a.scope.parent.freeVariable("name")),n=new k(new q(f,n.index)),g.properties.pop(),g.properties.push(n);b=[new ua(new Q("__super__"))];c["static"]&&b.push(new ua(new Q("constructor")));b.push(null!=f?new k(f):n);return(new L(null!=e?e:d,b)).compile(a)}return null!=c&&c.ctor?c.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")};
b.prototype.superThis=function(a){return(a=a.scope.method)&&!a.klass&&a.context||"this"};return b}(f);g.RegexWithInterpolations=function(a){function b(a){null==a&&(a=[]);b.__super__.constructor.call(this,new L(new r("RegExp")),a,!1)}oa(b,a);return b}(f);g.TaggedTemplateCall=function(a){function b(a,na,e){na instanceof $a&&(na=new Xa(c.wrap([new L(na)])));b.__super__.constructor.call(this,a,[na],e)}oa(b,a);b.prototype.compileNode=function(a){a.inTaggedTemplateCall=!0;return this.variable.compileToFragments(a,
t).concat(this.args[0].compileToFragments(a,h))};return b}(f);g.Extends=N=function(a){function b(a,b){this.child=a;this.parent=b}oa(b,a);b.prototype.children=["child","parent"];b.prototype.compileToFragments=function(a){return(new f(new L(new H(za("extend",a))),[this.child,this.parent])).compileToFragments(a)};return b}(a);g.Access=ua=function(a){function b(a,b){this.name=a;this.soak="soak"===b}oa(b,a);b.prototype.children=["name"];b.prototype.compileToFragments=function(a){var b,e;a=this.name.compileToFragments(a);
b=this.name.unwrap();return b instanceof Q?(e=b.value,0<=Ha.call(m,e))?[this.makeCode('["')].concat(Aa.call(a),[this.makeCode('"]')]):[this.makeCode(".")].concat(Aa.call(a)):[this.makeCode("[")].concat(Aa.call(a),[this.makeCode("]")])};b.prototype.isComplex=I;return b}(a);g.Index=k=function(a){function b(a){this.index=a}oa(b,a);b.prototype.children=["index"];b.prototype.compileToFragments=function(a){return[].concat(this.makeCode("["),this.index.compileToFragments(a,P),this.makeCode("]"))};b.prototype.isComplex=
function(){return this.index.isComplex()};return b}(a);g.Range=X=function(a){function b(a,b,e){this.from=a;this.to=b;this.equals=(this.exclusive="exclusive"===e)?"":"\x3d"}oa(b,a);b.prototype.children=["from","to"];b.prototype.compileVariables=function(a){var b,e;a=Fa(a,{top:!0});b=ma(a,"isComplex");e=this.cacheToCodeFragments(this.from.cache(a,h,b));this.fromC=e[0];this.fromVar=e[1];e=this.cacheToCodeFragments(this.to.cache(a,h,b));this.toC=e[0];this.toVar=e[1];if(e=ma(a,"step"))a=this.cacheToCodeFragments(e.cache(a,
h,b)),this.step=a[0],this.stepVar=a[1];this.fromNum=this.from.isNumber()?Number(this.fromVar):null;this.toNum=this.to.isNumber()?Number(this.toVar):null;return this.stepNum=null!=e&&e.isNumber()?Number(this.stepVar):null};b.prototype.compileNode=function(a){var b,e,d,c,n,f,g,h,k,m;this.fromVar||this.compileVariables(a);if(!a.index)return this.compileArray(a);f=null!=this.fromNum&&null!=this.toNum;n=ma(a,"index");g=(a=ma(a,"name"))&&a!==n;m=n+" \x3d "+this.fromC;this.toC!==this.toVar&&(m+=", "+this.toC);
this.step!==this.stepVar&&(m+=", "+this.step);c=[n+" \x3c"+this.equals,n+" \x3e"+this.equals];e=c[0];c=c[1];e=null!=this.stepNum?0<this.stepNum?e+" "+this.toVar:c+" "+this.toVar:f?(h=[this.fromNum,this.toNum],d=h[0],k=h[1],h,d<=k?e+" "+k:c+" "+k):(b=this.stepVar?this.stepVar+" \x3e 0":this.fromVar+" \x3c\x3d "+this.toVar,b+" ? "+e+" "+this.toVar+" : "+c+" "+this.toVar);b=this.stepVar?n+" +\x3d "+this.stepVar:f?g?d<=k?"++"+n:"--"+n:d<=k?n+"++":n+"--":g?b+" ? ++"+n+" : --"+n:b+" ? "+n+"++ : "+n+"--";
g&&(m=a+" \x3d "+m);g&&(b=a+" \x3d "+b);return[this.makeCode(m+"; "+e+"; "+b)]};b.prototype.compileArray=function(a){var b,e,d,c,n,f,g,h,k;if((e=null!=this.fromNum&&null!=this.toNum)&&20>=Math.abs(this.fromNum-this.toNum))return b=function(){h=[];for(var a=f=this.fromNum,b=this.toNum;f<=b?a<=b:a>=b;f<=b?a++:a--)h.push(a);return h}.apply(this),this.exclusive&&b.pop(),[this.makeCode("["+b.join(", ")+"]")];c=this.tab+ca;d=a.scope.freeVariable("i",{single:!0});g=a.scope.freeVariable("results");n="\n"+
c+g+" \x3d [];";e?(a.index=d,e=Da(this.compileNode(a))):(k=d+" \x3d "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),e=this.fromVar+" \x3c\x3d "+this.toVar,e="var "+k+"; "+e+" ? "+d+" \x3c"+this.equals+" "+this.toVar+" : "+d+" \x3e"+this.equals+" "+this.toVar+"; "+e+" ? "+d+"++ : "+d+"--");d="{ "+g+".push("+d+"); }\n"+c+"return "+g+";\n"+a.indent;a=function(a){return null!=a?a.contains(Ja):void 0};if(a(this.from)||a(this.to))b=", arguments";return[this.makeCode("(function() {"+n+"\n"+c+"for ("+
e+")"+d+"}).apply(this"+(null!=b?b:"")+")")]};return b}(a);g.Slice=ba=function(a){function b(a){this.range=a;b.__super__.constructor.call(this)}oa(b,a);b.prototype.children=["range"];b.prototype.compileNode=function(a){var b,e,d,c,n;b=this.range;c=b.to;d=(b=b.from)&&b.compileToFragments(a,P)||[this.makeCode("0")];c&&(b=c.compileToFragments(a,P),e=Da(b),this.range.exclusive||-1!==+e)&&(n=", "+(this.range.exclusive?e:c.isNumber()?""+(+e+1):(b=c.compileToFragments(a,t),"+"+Da(b)+" + 1 || 9e9")));return[this.makeCode(".slice("+
Da(d)+(n||"")+")")]};return b}(a);g.Obj=z=function(a){function b(a,b){this.generated=null!=b?b:!1;this.objects=this.properties=a||[]}oa(b,a);b.prototype.children=["properties"];b.prototype.compileNode=function(a){var b,e,d,c,n,f,g,h,k,m,t,l,p;p=this.properties;if(this.generated)for(e=0,b=p.length;e<b;e++)d=p[e],d instanceof L&&d.error("cannot have an implicit value in an implicit object");e=b=0;for(d=p.length;b<d&&!(l=p[e],(l.variable||l).base instanceof C);e=++b);d=e<p.length;n=a.indent+=ca;k=this.lastNonComment(this.properties);
b=[];d&&(t=a.scope.freeVariable("obj"),b.push(this.makeCode("(\n"+n+t+" \x3d ")));b.push(this.makeCode("{"+(0===p.length||0===e?"}":"\n")));c=h=0;for(m=p.length;h<m;c=++h)l=p[c],c===e&&(0!==c&&b.push(this.makeCode("\n"+n+"}")),b.push(this.makeCode(",\n"))),g=c===p.length-1||c===e-1?"":l===k||l instanceof G?"\n":",\n",f=l instanceof G?"":n,d&&c<e&&(f+=ca),l instanceof q&&("object"!==l.context&&l.operatorToken.error("unexpected "+l.operatorToken.value),l.variable instanceof L&&l.variable.hasProperties()&&
l.variable.error("invalid object key")),l instanceof L&&l["this"]&&(l=new q(l.properties[0].name,l,"object")),l instanceof G||(c<e?l instanceof q||(l=new q(l,l,"object")):(l instanceof q?(c=l.variable,l=l.value):(l=l.base.cache(a),c=l[0],l=l[1],c instanceof r&&(c=new Q(c.value))),l=new q(new L(new r(t),[new ua(c)]),l))),f&&b.push(this.makeCode(f)),b.push.apply(b,l.compileToFragments(a,A)),g&&b.push(this.makeCode(g));d?b.push(this.makeCode(",\n"+n+t+"\n"+this.tab+")")):0!==p.length&&b.push(this.makeCode("\n"+
this.tab+"}"));return this.front&&!d?this.wrapInBraces(b):b};b.prototype.assigns=function(a){var b,e,d,c;c=this.properties;b=0;for(e=c.length;b<e;b++)if(d=c[b],d.assigns(a))return!0;return!1};return b}(a);g.Arr=qa=function(a){function b(a){this.objects=a||[]}oa(b,a);b.prototype.children=["objects"];b.prototype.compileNode=function(a){var b,e,d,c,n;if(!this.objects.length)return[this.makeCode("[]")];a.indent+=ca;b=R.compileSplattedArray(a,this.objects);if(b.length)return b;b=[];var f;n=this.objects;
f=[];d=0;for(c=n.length;d<c;d++)e=n[d],f.push(e.compileToFragments(a,h));d=c=0;for(n=f.length;c<n;d=++c)e=f[d],d&&b.push(this.makeCode(", ")),b.push.apply(b,e);0<=Da(b).indexOf("\n")?(b.unshift(this.makeCode("[\n"+a.indent)),b.push(this.makeCode("\n"+this.tab+"]"))):(b.unshift(this.makeCode("[")),b.push(this.makeCode("]")));return b};b.prototype.assigns=function(a){var b,e,d,c;c=this.objects;b=0;for(e=c.length;b<e;b++)if(d=c[b],d.assigns(a))return!0;return!1};return b}(a);g.Class=D=function(a){function b(a,
b,e){this.variable=a;this.parent=b;this.body=null!=e?e:new c;this.boundFuncs=[];this.body.classBody=!0}oa(b,a);b.prototype.children=["variable","parent","body"];b.prototype.defaultClassVariableName="_Class";b.prototype.determineName=function(){var a,b;if(!this.variable)return this.defaultClassVariableName;b=this.variable.properties;b=(a=b[b.length-1])?a instanceof ua&&a.name:this.variable.base;if(!(b instanceof r||b instanceof Q))return this.defaultClassVariableName;b=b.value;a||(a=Ga(b))&&this.variable.error(a);
return 0<=Ha.call(m,b)?"_"+b:b};b.prototype.setContext=function(a){return this.body.traverseChildren(!1,function(b){if(b.classBody)return!1;if(b instanceof ga)return b.value=a;if(b instanceof l&&b.bound)return b.context=a})};b.prototype.addBoundFunctions=function(a){var b,e,d,c;c=this.boundFuncs;e=0;for(d=c.length;e<d;e++)b=c[e],b=(new L(new ga,[new ua(b)])).compile(a),this.ctor.body.unshift(new H(b+" \x3d "+za("bind",a)+"("+b+", this)"))};b.prototype.addProperties=function(a,b,e){var d,c,n,f;f=a.base.properties.slice(0);
var na;for(na=[];d=f.shift();)d instanceof q&&(c=d.variable.base,delete d.context,n=d.value,"constructor"===c.value?(this.ctor&&d.error("cannot define more than one constructor in a class"),n.bound&&d.error("cannot define a constructor as a bound function"),n instanceof l?d=this.ctor=n:(this.externalCtor=e.classScope.freeVariable("ctor"),d=new q(new r(this.externalCtor),n))):d.variable["this"]?n["static"]=!0:(a=c.isComplex()?new k(c):new ua(c),d.variable=new L(new r(b),[new ua(new Q("prototype")),
a]),n instanceof l&&n.bound&&(this.boundFuncs.push(c),n.bound=!1))),na.push(d);return da(na)};b.prototype.walkBody=function(a,f){return this.traverseChildren(!1,function(e){return function(d){var n,na,g,h,k,m,l;n=!0;if(d instanceof b)return!1;if(d instanceof c){l=na=d.expressions;g=h=0;for(k=l.length;h<k;g=++h)m=l[g],m instanceof q&&m.variable.looksStatic(a)?m.value["static"]=!0:m instanceof L&&m.isObject(!0)&&(n=!1,na[g]=e.addProperties(m,a,f));d.expressions=ia(na)}return n&&!(d instanceof b)}}(this))};
b.prototype.hoistDirectivePrologue=function(){var a,b,e;b=0;for(a=this.body.expressions;(e=a[b])&&e instanceof G||e instanceof L&&e.isString();)++b;return this.directives=a.splice(0,b)};b.prototype.ensureConstructor=function(a){this.ctor||(this.ctor=new l,this.externalCtor?this.ctor.body.push(new H(this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new H(a+".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor));
this.ctor.ctor=this.ctor.name=a;this.ctor.klass=null;return this.ctor.noReturn=!0};b.prototype.compileNode=function(a){var b,e,d,n,g;(e=this.body.jumps())&&e.error("Class bodies cannot contain pure statements");(b=this.body.contains(Ja))&&b.error("Class bodies shouldn't reference arguments");g=this.determineName();n=new r(g);e=new l([],c.wrap([this.body]));b=[];a.classScope=e.makeScope(a.scope);this.hoistDirectivePrologue();this.setContext(g);this.walkBody(g,a);this.ensureConstructor(g);this.addBoundFunctions(a);
this.body.spaced=!0;this.body.expressions.push(n);this.parent&&(g=new r(a.classScope.freeVariable("superClass",{reserve:!1})),this.body.expressions.unshift(new N(n,g)),e.params.push(new W(g)),b.push(this.parent));(d=this.body.expressions).unshift.apply(d,this.directives);d=new C(new f(e,b));this.variable&&(d=new q(this.variable,d,null,{moduleDeclaration:this.moduleDeclaration}));return d.compileToFragments(a)};return b}(a);g.ModuleDeclaration=v=function(a){function b(a,b){this.clause=a;this.source=
b;this.checkSource()}oa(b,a);b.prototype.children=["clause","source"];b.prototype.isStatement=ja;b.prototype.jumps=ea;b.prototype.makeReturn=ea;b.prototype.checkSource=function(){if(null!=this.source&&this.source instanceof Xa)return this.source.error("the name of the module to be imported from must be an uninterpolated string")};b.prototype.checkScope=function(a,b){if(0!==a.indent.length)return this.error(b+" statements must be at top-level scope")};return b}(a);g.ImportDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,
arguments)}oa(b,a);b.prototype.compileNode=function(a){var b,e;this.checkScope(a,"import");a.importedSymbols=[];b=[];b.push(this.makeCode(this.tab+"import "));null!=this.clause&&b.push.apply(b,this.clause.compileNode(a));null!=(null!=(e=this.source)?e.value:void 0)&&(null!==this.clause&&b.push(this.makeCode(" from ")),b.push(this.makeCode(this.source.value)));b.push(this.makeCode(";"));return b};return b}(v);g.ImportClause=function(a){function b(a,b){this.defaultBinding=a;this.namedImports=b}oa(b,
a);b.prototype.children=["defaultBinding","namedImports"];b.prototype.compileNode=function(a){var b;b=[];null!=this.defaultBinding&&(b.push.apply(b,this.defaultBinding.compileNode(a)),null!=this.namedImports&&b.push(this.makeCode(", ")));null!=this.namedImports&&b.push.apply(b,this.namedImports.compileNode(a));return b};return b}(a);g.ExportDeclaration=v=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.compileNode=function(a){var b,e;this.checkScope(a,
"export");b=[];b.push(this.makeCode(this.tab+"export "));this instanceof M&&b.push(this.makeCode("default "));this instanceof M||!(this.clause instanceof q||this.clause instanceof D)||(this.clause instanceof D&&!this.clause.variable&&this.clause.error("anonymous classes cannot be exported"),b.push(this.makeCode("var ")),this.clause.moduleDeclaration="export");b=null!=this.clause.body&&this.clause.body instanceof c?b.concat(this.clause.compileToFragments(a,A)):b.concat(this.clause.compileNode(a));
null!=(null!=(e=this.source)?e.value:void 0)&&b.push(this.makeCode(" from "+this.source.value));b.push(this.makeCode(";"));return b};return b}(v);g.ExportNamedDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ExportDefaultDeclaration=M=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ExportAllDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,
a);return b}(v);g.ModuleSpecifierList=v=function(a){function b(a){this.specifiers=a}oa(b,a);b.prototype.children=["specifiers"];b.prototype.compileNode=function(a){var b,e,d,c,f;b=[];a.indent+=ca;var n;f=this.specifiers;n=[];d=0;for(c=f.length;d<c;d++)e=f[d],n.push(e.compileToFragments(a,h));if(0!==this.specifiers.length){b.push(this.makeCode("{\n"+a.indent));d=c=0;for(f=n.length;c<f;d=++c)e=n[d],d&&b.push(this.makeCode(",\n"+a.indent)),b.push.apply(b,e);b.push(this.makeCode("\n}"))}else b.push(this.makeCode("{}"));
return b};return b}(a);g.ImportSpecifierList=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ExportSpecifierList=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ModuleSpecifier=U=function(a){function b(a,b,e){this.original=a;this.alias=b;this.moduleDeclarationType=e;this.identifier=null!=this.alias?this.alias.value:this.original.value}oa(b,a);b.prototype.children=["original","alias"];b.prototype.compileNode=
function(a){a.scope.add(this.identifier,this.moduleDeclarationType);a=[];a.push(this.makeCode(this.original.value));null!=this.alias&&a.push(this.makeCode(" as "+this.alias.value));return a};return b}(a);g.ImportSpecifier=v=function(a){function b(a,c){b.__super__.constructor.call(this,a,c,"import")}oa(b,a);b.prototype.compileNode=function(a){var c;(c=this.identifier,0<=Ha.call(a.importedSymbols,c))||a.scope.check(this.identifier)?this.error("'"+this.identifier+"' has already been declared"):a.importedSymbols.push(this.identifier);
return b.__super__.compileNode.call(this,a)};return b}(U);g.ImportDefaultSpecifier=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ImportNamespaceSpecifier=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);return b}(v);g.ExportSpecifier=function(a){function b(a,c){b.__super__.constructor.call(this,a,c,"export")}oa(b,a);return b}(U);g.Assign=q=function(a){function b(a,b,e,d){this.variable=a;this.value=b;this.context=
e;null==d&&(d={});this.param=d.param;this.subpattern=d.subpattern;this.operatorToken=d.operatorToken;this.moduleDeclaration=d.moduleDeclaration}oa(b,a);b.prototype.children=["variable","value"];b.prototype.isStatement=function(a){return(null!=a?a.level:void 0)===A&&null!=this.context&&(this.moduleDeclaration||0<=Ha.call(this.context,"?"))};b.prototype.checkAssignability=function(a,b){if(Object.prototype.hasOwnProperty.call(a.scope.positions,b.value)&&"import"===a.scope.variables[a.scope.positions[b.value]].type)return b.error("'"+
b.value+"' is read-only")};b.prototype.assigns=function(a){return this["object"===this.context?"value":"variable"].assigns(a)};b.prototype.unfoldSoak=function(a){return Na(a,this,"variable")};b.prototype.compileNode=function(a){var b,e,d,c,f,n,g;if(e=this.variable instanceof L){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(a);if(this.variable.isSplice())return this.compileSplice(a);if("||\x3d"===(c=this.context)||"\x26\x26\x3d"===c||"?\x3d"===c)return this.compileConditional(a);
if("**\x3d"===(f=this.context)||"//\x3d"===f||"%%\x3d"===f)return this.compileSpecialMath(a)}this.value instanceof l&&(this.value["static"]?(this.value.klass=this.variable.base,this.value.name=this.variable.properties[0],this.value.variable=this.variable):2<=(null!=(n=this.variable.properties)?n.length:void 0)&&(n=this.variable.properties,c=3<=n.length?Aa.call(n,0,d=n.length-2):(d=0,[]),f=n[d++],d=n[d++],"prototype"===(null!=(g=f.name)?g.value:void 0)&&(this.value.klass=new L(this.variable.base,c),
this.value.name=d,this.value.variable=this.variable)));this.context||(g=this.variable.unwrapAll(),g.isAssignable()||this.variable.error("'"+this.variable.compile(a)+"' can't be assigned"),"function"===typeof g.hasProperties&&g.hasProperties()||(this.moduleDeclaration?(this.checkAssignability(a,g),a.scope.add(g.value,this.moduleDeclaration)):this.param?a.scope.add(g.value,"var"):(this.checkAssignability(a,g),a.scope.find(g.value))));g=this.value.compileToFragments(a,h);e&&this.variable.base instanceof
z&&(this.variable.front=!0);e=this.variable.compileToFragments(a,h);if("object"===this.context){if(b=Da(e),0<=Ha.call(m,b))e.unshift(this.makeCode('"')),e.push(this.makeCode('"'));return e.concat(this.makeCode(": "),g)}b=e.concat(this.makeCode(" "+(this.context||"\x3d")+" "),g);return a.level<=h?b:this.wrapInBraces(b)};b.prototype.compilePatternMatch=function(a){var c,e,d,f,n,g,m,l,t,p,q,v,u,w,C,z;w=a.level===A;l=this.value;v=this.variable.base.objects;if(!(u=v.length))return e=l.compileToFragments(a),
a.level>=y?this.wrapInBraces(e):e;q=v[0];1===u&&q instanceof x&&q.error("Destructuring assignment has no target");g=this.variable.isObject();if(w&&1===u&&!(q instanceof R))return d=null,q instanceof b&&"object"===q.context?(e=q,f=e.variable,n=f.base,q=e.value,q instanceof b&&(d=q.value,q=q.variable)):(q instanceof b&&(d=q.value,q=q.variable),n=g?q["this"]?q.properties[0].name:new Q(q.unwrap().value):new S(0)),c=n.unwrap()instanceof Q,l=new L(l),l.properties.push(new (c?ua:k)(n)),(p=Ga(q.unwrap().value))&&
q.error(p),d&&(l=new B("?",l,d)),(new b(q,l,null,{param:this.param})).compileToFragments(a,A);C=l.compileToFragments(a,h);z=Da(C);e=[];f=!1;l.unwrap()instanceof r&&!this.variable.assigns(z)||(e.push([this.makeCode((d=a.scope.freeVariable("ref"))+" \x3d ")].concat(Aa.call(C))),C=[this.makeCode(d)],z=d);d=l=0;for(t=v.length;l<t;d=++l){q=v[d];n=d;if(!f&&q instanceof R)p=q.name.unwrap().value,q=q.unwrap(),n=u+" \x3c\x3d "+z+".length ? "+za("slice",a)+".call("+z+", "+d,(c=u-d-1)?(m=a.scope.freeVariable("i",
{single:!0}),n+=", "+m+" \x3d "+z+".length - "+c+") : ("+m+" \x3d "+d+", [])"):n+=") : []",n=new H(n),f=m+"++";else if(!f&&q instanceof x){if(c=u-d-1)1===c?f=z+".length - 1":(m=a.scope.freeVariable("i",{single:!0}),n=new H(m+" \x3d "+z+".length - "+c),f=m+"++",e.push(n.compileToFragments(a,h)));continue}else(q instanceof R||q instanceof x)&&q.error("multiple splats/expansions are disallowed in an assignment"),d=null,q instanceof b&&"object"===q.context?(n=q.variable,n=n.base,q=q.value,q instanceof
b&&(d=q.value,q=q.variable)):(q instanceof b&&(d=q.value,q=q.variable),n=g?q["this"]?q.properties[0].name:new Q(q.unwrap().value):new H(f||n)),p=q.unwrap().value,c=n.unwrap()instanceof Q,n=new L(new H(z),[new (c?ua:k)(n)]),d&&(n=new B("?",n,d));null!=p&&(p=Ga(p))&&q.error(p);e.push((new b(q,n,null,{param:this.param,subpattern:!0})).compileToFragments(a,h))}w||this.subpattern||e.push(C);e=this.joinFragmentArrays(e,", ");return a.level<h?e:this.wrapInBraces(e)};b.prototype.compileConditional=function(a){var c,
e;e=this.variable.cacheReference(a);c=e[0];e=e[1];c.properties.length||!(c.base instanceof H)||c.base instanceof ga||a.scope.check(c.base.value)||this.variable.error('the variable "'+c.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before");if(0<=Ha.call(this.context,"?"))return a.isExistentialEquals=!0,(new E(new F(c),e,{type:"if"})).addElse(new b(e,this.value,"\x3d")).compileToFragments(a);c=(new B(this.context.slice(0,-1),c,new b(e,this.value,"\x3d"))).compileToFragments(a);
return a.level<=h?c:this.wrapInBraces(c)};b.prototype.compileSpecialMath=function(a){var c,e;e=this.variable.cacheReference(a);c=e[0];e=e[1];return(new b(c,new B(this.context.slice(0,-1),e,this.value))).compileToFragments(a)};b.prototype.compileSplice=function(a){var b,e,d,c,f,n;c=this.variable.properties.pop().range;d=c.from;b=c.to;e=c.exclusive;n=this.variable.compile(a);d?(f=this.cacheToCodeFragments(d.cache(a,y)),c=f[0],f=f[1]):c=f="0";b?null!=d&&d.isNumber()&&b.isNumber()?(b=b.compile(a)-f,e||
(b+=1)):(b=b.compile(a,t)+" - "+f,e||(b+=" + 1")):b="9e9";e=this.value.cache(a,h);d=e[0];e=e[1];b=[].concat(this.makeCode("[].splice.apply("+n+", ["+c+", "+b+"].concat("),d,this.makeCode(")), "),e);return a.level>A?this.wrapInBraces(b):b};return b}(a);g.Code=l=function(a){function b(a,b,e){this.params=a||[];this.body=b||new c;this.bound="boundfunc"===e;this.isGenerator=!!this.body.contains(function(a){return a instanceof B&&a.isYield()||a instanceof ra})}oa(b,a);b.prototype.children=["params","body"];
b.prototype.isStatement=function(){return!!this.ctor};b.prototype.jumps=I;b.prototype.makeScope=function(a){return new K(a,this.body,this)};b.prototype.compileNode=function(a){var n,e,d,g,h,k,m,l,p,y,A,u,v;this.bound&&null!=(e=a.scope.method)&&e.bound&&(this.context=a.scope.method.context);if(this.bound&&!this.context)return this.context="_this",e=new b([new W(new r(this.context))],new c([this])),e=new f(e,[new ga]),e.updateLocationDataIfMissing(this.locationData),e.compileNode(a);a.scope=ma(a,"classScope")||
this.makeScope(a.scope);a.scope.shared=ma(a,"sharedScope");a.indent+=ca;delete a.bare;delete a.isExistentialEquals;e=[];n=[];l=this.params;g=0;for(k=l.length;g<k;g++)m=l[g],m instanceof x||a.scope.parameter(m.asReference(a));l=this.params;g=0;for(k=l.length;g<k;g++)if(m=l[g],m.splat||m instanceof x){g=this.params;h=0;for(m=g.length;h<m;h++)p=g[h],p instanceof x||!p.name.value||a.scope.add(p.name.value,"var",!0);h=new q(new L(new qa(function(){var b,d,e,c;e=this.params;c=[];d=0;for(b=e.length;d<b;d++)p=
e[d],c.push(p.asReference(a));return c}.call(this))),new L(new r("arguments")));break}A=this.params;l=0;for(g=A.length;l<g;l++)m=A[l],m.isComplex()?(v=y=m.asReference(a),m.value&&(v=new B("?",y,m.value)),n.push(new q(new L(m.name),v,"\x3d",{param:!0}))):(y=m,m.value&&(k=new H(y.name.value+" \x3d\x3d null"),v=new q(new L(m.name),m.value,"\x3d"),n.push(new E(k,v)))),h||e.push(y);m=this.body.isEmpty();h&&n.unshift(h);n.length&&(d=this.body.expressions).unshift.apply(d,n);d=h=0;for(n=e.length;h<n;d=++h)p=
e[d],e[d]=p.compileToFragments(a),a.scope.parameter(Da(e[d]));u=[];this.eachParamName(function(a,b){0<=Ha.call(u,a)&&b.error("multiple parameters named "+a);return u.push(a)});m||this.noReturn||this.body.makeReturn();d="function";this.isGenerator&&(d+="*");this.ctor&&(d+=" "+this.name);n=[this.makeCode(d+"(")];d=m=0;for(h=e.length;m<h;d=++m)p=e[d],d&&n.push(this.makeCode(", ")),n.push.apply(n,p);n.push(this.makeCode(") {"));this.body.isEmpty()||(n=n.concat(this.makeCode("\n"),this.body.compileWithDeclarations(a),
this.makeCode("\n"+this.tab)));n.push(this.makeCode("}"));return this.ctor?[this.makeCode(this.tab)].concat(Aa.call(n)):this.front||a.level>=t?this.wrapInBraces(n):n};b.prototype.eachParamName=function(a){var b,e,d,c,f;c=this.params;f=[];b=0;for(e=c.length;b<e;b++)d=c[b],f.push(d.eachName(a));return f};b.prototype.traverseChildren=function(a,c){if(a)return b.__super__.traverseChildren.call(this,a,c)};return b}(a);g.Param=W=function(a){function b(a,b,e){this.name=a;this.value=b;this.splat=e;(a=Ga(this.name.unwrapAll().value))&&
this.name.error(a);this.name instanceof z&&this.name.generated&&(a=this.name.objects[0].operatorToken,a.error("unexpected "+a.value))}oa(b,a);b.prototype.children=["name","value"];b.prototype.compileToFragments=function(a){return this.name.compileToFragments(a,h)};b.prototype.asReference=function(a){var b;if(this.reference)return this.reference;b=this.name;b["this"]?(b=b.properties[0].name.value,0<=Ha.call(m,b)&&(b="_"+b),b=new r(a.scope.freeVariable(b))):b.isComplex()&&(b=new r(a.scope.freeVariable("arg")));
b=new L(b);this.splat&&(b=new R(b));b.updateLocationDataIfMissing(this.locationData);return this.reference=b};b.prototype.isComplex=function(){return this.name.isComplex()};b.prototype.eachName=function(a,b){var e,d,c,f;null==b&&(b=this.name);e=function(b){return a("@"+b.properties[0].name.value,b)};if(b instanceof H)return a(b.value,b);if(b instanceof L)return e(b);b=null!=(d=b.objects)?d:[];d=0;for(c=b.length;d<c;d++)f=b[d],f instanceof q&&null==f.context&&(f=f.variable),f instanceof q?(f.value instanceof
q&&(f=f.value),this.eachName(a,f.value.unwrap())):f instanceof R?(f=f.name.unwrap(),a(f.value,f)):f instanceof L?f.isArray()||f.isObject()?this.eachName(a,f.base):f["this"]?e(f):a(f.base.value,f.base):f instanceof x||f.error("illegal parameter "+f.compile())};return b}(a);g.Splat=R=function(a){function b(a){this.name=a.compile?a:new H(a)}oa(b,a);b.prototype.children=["name"];b.prototype.isAssignable=ja;b.prototype.assigns=function(a){return this.name.assigns(a)};b.prototype.compileToFragments=function(a){return this.name.compileToFragments(a)};
b.prototype.unwrap=function(){return this.name};b.compileSplattedArray=function(a,c,e){var d,f,g,n,k,m;for(n=-1;(d=c[++n])&&!(d instanceof b););if(n>=c.length)return[];if(1===c.length)return d=c[0],c=d.compileToFragments(a,h),e?c:[].concat(d.makeCode(za("slice",a)+".call("),c,d.makeCode(")"));e=c.slice(n);g=k=0;for(m=e.length;k<m;g=++k)d=e[g],f=d.compileToFragments(a,h),e[g]=d instanceof b?[].concat(d.makeCode(za("slice",a)+".call("),f,d.makeCode(")")):[].concat(d.makeCode("["),f,d.makeCode("]"));
if(0===n)return d=c[0],a=d.joinFragmentArrays(e.slice(1),", "),e[0].concat(d.makeCode(".concat("),a,d.makeCode(")"));k=c.slice(0,n);m=[];f=0;for(g=k.length;f<g;f++)d=k[f],m.push(d.compileToFragments(a,h));d=c[0].joinFragmentArrays(m,", ");a=c[n].joinFragmentArrays(e,", ");e=c[c.length-1];return[].concat(c[0].makeCode("["),d,c[n].makeCode("].concat("),a,e.makeCode(")"))};return b}(a);g.Expansion=x=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.isComplex=
I;b.prototype.compileNode=function(a){return this.error("Expansion must be used inside a destructuring assignment or parameter list")};b.prototype.asReference=function(a){return this};b.prototype.eachName=function(a){};return b}(a);g.While=v=function(a){function b(a,b){this.condition=null!=b&&b.invert?a.invert():a;this.guard=null!=b?b.guard:void 0}oa(b,a);b.prototype.children=["condition","guard","body"];b.prototype.isStatement=ja;b.prototype.makeReturn=function(a){if(a)return b.__super__.makeReturn.apply(this,
arguments);this.returns=!this.jumps({loop:!0});return this};b.prototype.addBody=function(a){this.body=a;return this};b.prototype.jumps=function(){var a,b,e,d;a=this.body.expressions;if(!a.length)return!1;b=0;for(d=a.length;b<d;b++)if(e=a[b],e=e.jumps({loop:!0}))return e;return!1};b.prototype.compileNode=function(a){var b,e,d;a.indent+=ca;d="";b=this.body;b.isEmpty()?b=this.makeCode(""):(this.returns&&(b.makeReturn(e=a.scope.freeVariable("results")),d=""+this.tab+e+" \x3d [];\n"),this.guard&&(1<b.expressions.length?
b.expressions.unshift(new E((new C(this.guard)).invert(),new ya("continue"))):this.guard&&(b=c.wrap([new E(this.guard,b)]))),b=[].concat(this.makeCode("\n"),b.compileToFragments(a,A),this.makeCode("\n"+this.tab)));a=[].concat(this.makeCode(d+this.tab+"while ("),this.condition.compileToFragments(a,P),this.makeCode(") {"),b,this.makeCode("}"));this.returns&&a.push(this.makeCode("\n"+this.tab+"return "+e+";"));return a};return b}(a);g.Op=B=function(a){function b(a,b,g,n){if("in"===a)return new O(b,g);
if("do"===a)return this.generateDo(b);if("new"===a){if(b instanceof f&&!b["do"]&&!b.isNew)return b.newInstance();if(b instanceof l&&b.bound||b["do"])b=new C(b)}this.operator=c[a]||a;this.first=b;this.second=g;this.flip=!!n;return this}var c,g;oa(b,a);c={"\x3d\x3d":"\x3d\x3d\x3d","!\x3d":"!\x3d\x3d",of:"in",yieldfrom:"yield*"};g={"!\x3d\x3d":"\x3d\x3d\x3d","\x3d\x3d\x3d":"!\x3d\x3d"};b.prototype.children=["first","second"];b.prototype.isNumber=function(){var a;return this.isUnary()&&("+"===(a=this.operator)||
"-"===a)&&this.first instanceof L&&this.first.isNumber()};b.prototype.isYield=function(){var a;return"yield"===(a=this.operator)||"yield*"===a};b.prototype.isUnary=function(){return!this.second};b.prototype.isComplex=function(){return!this.isNumber()};b.prototype.isChainable=function(){var a;return"\x3c"===(a=this.operator)||"\x3e"===a||"\x3e\x3d"===a||"\x3c\x3d"===a||"\x3d\x3d\x3d"===a||"!\x3d\x3d"===a};b.prototype.invert=function(){var a,d,c;if(this.isChainable()&&this.first.isChainable()){a=!0;
for(d=this;d&&d.operator;)a&&(a=d.operator in g),d=d.first;if(!a)return(new C(this)).invert();for(d=this;d&&d.operator;)d.invert=!d.invert,d.operator=g[d.operator],d=d.first;return this}return(d=g[this.operator])?(this.operator=d,this.first.unwrap()instanceof b&&this.first.invert(),this):this.second?(new C(this)).invert():"!"===this.operator&&(a=this.first.unwrap())instanceof b&&("!"===(c=a.operator)||"in"===c||"instanceof"===c)?a:new b("!",this)};b.prototype.unfoldSoak=function(a){var b;return("++"===
(b=this.operator)||"--"===b||"delete"===b)&&Na(a,this,"first")};b.prototype.generateDo=function(a){var b,e,c,g,n;g=[];n=(a instanceof q&&(b=a.value.unwrap())instanceof l?b:a).params||[];b=0;for(e=n.length;b<e;b++)c=n[b],c.value?(g.push(c.value),delete c.value):g.push(c);a=new f(a,g);a["do"]=!0;return a};b.prototype.compileNode=function(a){var b,e;b=this.isChainable()&&this.first.isChainable();b||(this.first.front=this.front);"delete"===this.operator&&a.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var");
("--"===(e=this.operator)||"++"===e)&&(e=Ga(this.first.unwrapAll().value))&&this.first.error(e);if(this.isYield())return this.compileYield(a);if(this.isUnary())return this.compileUnary(a);if(b)return this.compileChain(a);switch(this.operator){case "?":return this.compileExistence(a);case "**":return this.compilePower(a);case "//":return this.compileFloorDivision(a);case "%%":return this.compileModulo(a);default:return b=this.first.compileToFragments(a,y),e=this.second.compileToFragments(a,y),b=[].concat(b,
this.makeCode(" "+this.operator+" "),e),a.level<=y?b:this.wrapInBraces(b)}};b.prototype.compileChain=function(a){var b;b=this.first.second.cache(a);this.first.second=b[0];b=b[1];a=this.first.compileToFragments(a,y).concat(this.makeCode(" "+(this.invert?"\x26\x26":"||")+" "),b.compileToFragments(a),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(a,y));return this.wrapInBraces(a)};b.prototype.compileExistence=function(a){var b,e;this.first.isComplex()?(e=new r(a.scope.freeVariable("ref")),
b=new C(new q(e,this.first))):e=b=this.first;return(new E(new F(b),e,{type:"if"})).addElse(this.second).compileToFragments(a)};b.prototype.compileUnary=function(a){var d,e,c;e=[];d=this.operator;e.push([this.makeCode(d)]);if("!"===d&&this.first instanceof F)return this.first.negated=!this.first.negated,this.first.compileToFragments(a);if(a.level>=t)return(new C(this)).compileToFragments(a);c="+"===d||"-"===d;("new"===d||"typeof"===d||"delete"===d||c&&this.first instanceof b&&this.first.operator===
d)&&e.push([this.makeCode(" ")]);if(c&&this.first instanceof b||"new"===d&&this.first.isStatement(a))this.first=new C(this.first);e.push(this.first.compileToFragments(a,y));this.flip&&e.reverse();return this.joinFragmentArrays(e,"")};b.prototype.compileYield=function(a){var b,e,c;e=[];b=this.operator;null==a.scope.parent&&this.error("yield can only occur inside functions");0<=Ha.call(Object.keys(this.first),"expression")&&!(this.first instanceof ha)?null!=this.first.expression&&e.push(this.first.expression.compileToFragments(a,
y)):(a.level>=P&&e.push([this.makeCode("(")]),e.push([this.makeCode(b)]),""!==(null!=(c=this.first.base)?c.value:void 0)&&e.push([this.makeCode(" ")]),e.push(this.first.compileToFragments(a,y)),a.level>=P&&e.push([this.makeCode(")")]));return this.joinFragmentArrays(e,"")};b.prototype.compilePower=function(a){var b;b=new L(new r("Math"),[new ua(new Q("pow"))]);return(new f(b,[this.first,this.second])).compileToFragments(a)};b.prototype.compileFloorDivision=function(a){var d,e;e=new L(new r("Math"),
[new ua(new Q("floor"))]);d=this.second.isComplex()?new C(this.second):this.second;d=new b("/",this.first,d);return(new f(e,[d])).compileToFragments(a)};b.prototype.compileModulo=function(a){var b;b=new L(new H(za("modulo",a)));return(new f(b,[this.first,this.second])).compileToFragments(a)};b.prototype.toString=function(a){return b.__super__.toString.call(this,a,this.constructor.name+" "+this.operator)};return b}(a);g.In=O=function(a){function b(a,b){this.object=a;this.array=b}oa(b,a);b.prototype.children=
["object","array"];b.prototype.invert=T;b.prototype.compileNode=function(a){var b,e,d,c,f;if(this.array instanceof L&&this.array.isArray()&&this.array.base.objects.length){f=this.array.base.objects;e=0;for(d=f.length;e<d;e++)if(c=f[e],c instanceof R){b=!0;break}if(!b)return this.compileOrTest(a)}return this.compileLoopTest(a)};b.prototype.compileOrTest=function(a){var b,e,d,c,f,g,n,h,k,m;b=this.object.cache(a,y);k=b[0];n=b[1];e=this.negated?[" !\x3d\x3d "," \x26\x26 "]:[" \x3d\x3d\x3d "," || "];b=
e[0];e=e[1];m=[];h=this.array.base.objects;d=f=0;for(g=h.length;f<g;d=++f)c=h[d],d&&m.push(this.makeCode(e)),m=m.concat(d?n:k,this.makeCode(b),c.compileToFragments(a,t));return a.level<y?m:this.wrapInBraces(m)};b.prototype.compileLoopTest=function(a){var b,e,d;b=this.object.cache(a,h);d=b[0];e=b[1];b=[].concat(this.makeCode(za("indexOf",a)+".call("),this.array.compileToFragments(a,h),this.makeCode(", "),e,this.makeCode(") "+(this.negated?"\x3c 0":"\x3e\x3d 0")));if(Da(d)===Da(e))return b;b=d.concat(this.makeCode(", "),
b);return a.level<h?b:this.wrapInBraces(b)};b.prototype.toString=function(a){return b.__super__.toString.call(this,a,this.constructor.name+(this.negated?"!":""))};return b}(a);g.Try=function(a){function b(a,b,e,d){this.attempt=a;this.errorVariable=b;this.recovery=e;this.ensure=d}oa(b,a);b.prototype.children=["attempt","recovery","ensure"];b.prototype.isStatement=ja;b.prototype.jumps=function(a){var b;return this.attempt.jumps(a)||(null!=(b=this.recovery)?b.jumps(a):void 0)};b.prototype.makeReturn=
function(a){this.attempt&&(this.attempt=this.attempt.makeReturn(a));this.recovery&&(this.recovery=this.recovery.makeReturn(a));return this};b.prototype.compileNode=function(a){var b,e,d,c,f;a.indent+=ca;f=this.attempt.compileToFragments(a,A);b=this.recovery?(e=a.scope.freeVariable("error",{reserve:!1}),c=new r(e),this.errorVariable?(d=Ga(this.errorVariable.unwrapAll().value),d?this.errorVariable.error(d):void 0,this.recovery.unshift(new q(this.errorVariable,c))):void 0,[].concat(this.makeCode(" catch ("),
c.compileToFragments(a),this.makeCode(") {\n"),this.recovery.compileToFragments(a,A),this.makeCode("\n"+this.tab+"}"))):this.ensure||this.recovery?[]:(e=a.scope.freeVariable("error",{reserve:!1}),[this.makeCode(" catch ("+e+") {}")]);a=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(a,A),this.makeCode("\n"+this.tab+"}")):[];return[].concat(this.makeCode(this.tab+"try {\n"),f,this.makeCode("\n"+this.tab+"}"),b,a)};return b}(a);g.Throw=ha=function(a){function b(a){this.expression=
a}oa(b,a);b.prototype.children=["expression"];b.prototype.isStatement=ja;b.prototype.jumps=I;b.prototype.makeReturn=ea;b.prototype.compileNode=function(a){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(a),this.makeCode(";"))};return b}(a);g.Existence=F=function(a){function b(a){this.expression=a}oa(b,a);b.prototype.children=["expression"];b.prototype.invert=T;b.prototype.compileNode=function(a){var b,c,d;this.expression.front=this.front;d=this.expression.compile(a,
y);this.expression.unwrap()instanceof r&&!a.scope.check(d)?(c=this.negated?["\x3d\x3d\x3d","||"]:["!\x3d\x3d","\x26\x26"],b=c[0],c=c[1],d="typeof "+d+" "+b+' "undefined" '+c+" "+d+" "+b+" null"):d=d+" "+(this.negated?"\x3d\x3d":"!\x3d")+" null";return[this.makeCode(a.level<=p?d:"("+d+")")]};return b}(a);g.Parens=C=function(a){function b(a){this.body=a}oa(b,a);b.prototype.children=["body"];b.prototype.unwrap=function(){return this.body};b.prototype.isComplex=function(){return this.body.isComplex()};
b.prototype.compileNode=function(a){var b,c;b=this.body.unwrap();if(b instanceof L&&b.isAtomic())return b.front=this.front,b.compileToFragments(a);c=b.compileToFragments(a,P);return a.level<y&&(b instanceof B||b instanceof f||b instanceof J&&b.returns)?c:this.wrapInBraces(c)};return b}(a);g.StringWithInterpolations=Xa=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}oa(b,a);b.prototype.compileNode=function(a){var c,e,d,f,g;if(!a.inTaggedTemplateCall)return b.__super__.compileNode.apply(this,
arguments);d=this.body.unwrap();e=[];d.traverseChildren(!1,function(a){if(a instanceof $a)e.push(a);else if(a instanceof C)return e.push(a),!1;return!0});d=[];d.push(this.makeCode("`"));f=0;for(g=e.length;f<g;f++)c=e[f],c instanceof $a?(c=c.value.slice(1,-1),c=c.replace(/(\\*)(`|\$\{)/g,function(a,b,d){return 0===b.length%2?b+"\\"+d:a}),d.push(this.makeCode(c))):(d.push(this.makeCode("${")),d.push.apply(d,c.compileToFragments(a,P)),d.push(this.makeCode("}")));d.push(this.makeCode("`"));return d};
return b}(C);g.For=J=function(a){function b(a,b){this.source=b.source;this.guard=b.guard;this.step=b.step;this.name=b.name;this.index=b.index;this.body=c.wrap([a]);this.own=!!b.own;this.object=!!b.object;(this.from=!!b.from)&&this.index&&this.index.error("cannot use index with for-from");this.own&&!this.object&&b.ownTag.error("cannot use own with for-"+(this.from?"from":"in"));this.object&&(a=[this.index,this.name],this.name=a[0],this.index=a[1]);this.index instanceof L&&!this.index.isAssignable()&&
this.index.error("index cannot be a pattern matching expression");this.range=this.source instanceof L&&this.source.base instanceof X&&!this.source.properties.length&&!this.from;this.pattern=this.name instanceof L;this.range&&this.index&&this.index.error("indexes do not apply to range loops");this.range&&this.pattern&&this.name.error("cannot pattern match over range loops");this.returns=!1}oa(b,a);b.prototype.children=["body","source","guard","step"];b.prototype.compileNode=function(a){var b,e,d,f,
g,k,n,m,l,t,p,y,v,u,z,w,B,x,D,I,P;b=c.wrap([this.body]);l=b.expressions;l=l[l.length-1];(null!=l?l.jumps():void 0)instanceof V&&(this.returns=!1);z=this.range?this.source.base:this.source;d=a.scope;this.pattern||(m=this.name&&this.name.compile(a,h));l=this.index&&this.index.compile(a,h);m&&!this.pattern&&d.find(m);!l||this.index instanceof L||d.find(l);this.returns&&(n=d.freeVariable("results"));this.from?this.pattern&&(p=d.freeVariable("x",{single:!0})):p=this.object&&l||d.freeVariable("i",{single:!0});
y=(this.range||this.from)&&m||l||p;v=y!==p?y+" \x3d ":"";this.step&&!this.range&&(l=this.cacheToCodeFragments(this.step.cache(a,h,ta)),g=l[0],D=l[1],this.step.isNumber()&&(x=Number(D)));this.pattern&&(m=p);k=l=P="";t=this.tab+ca;this.range?f=z.compileToFragments(Fa(a,{index:p,name:m,step:this.step,isComplex:ta})):(I=this.source.compile(a,h),!m&&!this.own||this.source.unwrap()instanceof r||(k+=""+this.tab+(z=d.freeVariable("ref"))+" \x3d "+I+";\n",I=z),!m||this.pattern||this.from||(u=m+" \x3d "+I+
"["+y+"]"),this.object||this.from||(g!==D&&(k+=""+this.tab+g+";\n"),m=0>x,this.step&&null!=x&&m||(e=d.freeVariable("len")),f=""+v+p+" \x3d 0, "+e+" \x3d "+I+".length",g=""+v+p+" \x3d "+I+".length - 1",e=p+" \x3c "+e,d=p+" \x3e\x3d 0",this.step?(null!=x?m&&(e=d,f=g):(e=D+" \x3e 0 ? "+e+" : "+d,f="("+D+" \x3e 0 ? ("+f+") : "+g+")"),p=p+" +\x3d "+D):p=""+(y!==p?"++"+p:p+"++"),f=[this.makeCode(f+"; "+e+"; "+v+p)]));this.returns&&(w=""+this.tab+n+" \x3d [];\n",B="\n"+this.tab+"return "+n+";",b.makeReturn(n));
this.guard&&(1<b.expressions.length?b.expressions.unshift(new E((new C(this.guard)).invert(),new ya("continue"))):this.guard&&(b=c.wrap([new E(this.guard,b)])));this.pattern&&b.expressions.unshift(new q(this.name,this.from?new r(y):new H(I+"["+y+"]")));n=[].concat(this.makeCode(k),this.pluckDirectCall(a,b));u&&(P="\n"+t+u+";");this.object?(f=[this.makeCode(y+" in "+I)],this.own&&(l="\n"+t+"if (!"+za("hasProp",a)+".call("+I+", "+y+")) continue;")):this.from&&(f=[this.makeCode(y+" of "+I)]);(a=b.compileToFragments(Fa(a,
{indent:t}),A))&&0<a.length&&(a=[].concat(this.makeCode("\n"),a,this.makeCode("\n")));return[].concat(n,this.makeCode(""+(w||"")+this.tab+"for ("),f,this.makeCode(") {"+l+P),a,this.makeCode(this.tab+"}"+(B||"")))};b.prototype.pluckDirectCall=function(a,b){var c,d,g,h,k,m,n,p,t,y,v,u,z,w,x;d=[];t=b.expressions;k=m=0;for(n=t.length;m<n;k=++m)if(g=t[k],g=g.unwrapAll(),g instanceof f&&(x=null!=(y=g.variable)?y.unwrapAll():void 0,x instanceof l||x instanceof L&&(null!=(v=x.base)?v.unwrapAll():void 0)instanceof
l&&1===x.properties.length&&("call"===(u=null!=(z=x.properties[0].name)?z.value:void 0)||"apply"===u)))h=(null!=(w=x.base)?w.unwrapAll():void 0)||x,p=new r(a.scope.freeVariable("fn")),c=new L(p),x.base&&(c=[c,x],x.base=c[0],c=c[1]),b.expressions[k]=new f(c,g.args),d=d.concat(this.makeCode(this.tab),(new q(p,h)).compileToFragments(a,A),this.makeCode(";\n"));return d};return b}(v);g.Switch=function(a){function b(a,b,c){this.subject=a;this.cases=b;this.otherwise=c}oa(b,a);b.prototype.children=["subject",
"cases","otherwise"];b.prototype.isStatement=ja;b.prototype.jumps=function(a){var b,c,d,f,g;null==a&&(a={block:!0});f=this.cases;c=0;for(d=f.length;c<d;c++)if(b=f[c],b=b[1],b=b.jumps(a))return b;return null!=(g=this.otherwise)?g.jumps(a):void 0};b.prototype.makeReturn=function(a){var b,e,d,f,g;f=this.cases;b=0;for(e=f.length;b<e;b++)d=f[b],d[1].makeReturn(a);a&&(this.otherwise||(this.otherwise=new c([new H("void 0")])));null!=(g=this.otherwise)&&g.makeReturn(a);return this};b.prototype.compileNode=
function(a){var b,c,d,f,g,h,k,m,n,l,p,t,q;k=a.indent+ca;m=a.indent=k+ca;h=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(a,P):this.makeCode("false"),this.makeCode(") {\n"));t=this.cases;g=n=0;for(l=t.length;n<l;g=++n){b=t[g];f=b[0];b=b[1];q=ia([f]);f=0;for(p=q.length;f<p;f++)d=q[f],this.subject||(d=d.invert()),h=h.concat(this.makeCode(k+"case "),d.compileToFragments(a,P),this.makeCode(":\n"));0<(c=b.compileToFragments(a,A)).length&&(h=h.concat(c,this.makeCode("\n")));
if(g===this.cases.length-1&&!this.otherwise)break;g=this.lastNonComment(b.expressions);g instanceof V||g instanceof H&&g.jumps()&&"debugger"!==g.value||h.push(d.makeCode(m+"break;\n"))}this.otherwise&&this.otherwise.expressions.length&&h.push.apply(h,[this.makeCode(k+"default:\n")].concat(Aa.call(this.otherwise.compileToFragments(a,A)),[this.makeCode("\n")]));h.push(this.makeCode(this.tab+"}"));return h};return b}(a);g.If=E=function(a){function b(a,b,c){this.body=b;null==c&&(c={});this.condition=
"unless"===c.type?a.invert():a;this.elseBody=null;this.isChain=!1;this.soak=c.soak}oa(b,a);b.prototype.children=["condition","body","elseBody"];b.prototype.bodyNode=function(){var a;return null!=(a=this.body)?a.unwrap():void 0};b.prototype.elseBodyNode=function(){var a;return null!=(a=this.elseBody)?a.unwrap():void 0};b.prototype.addElse=function(a){this.isChain?this.elseBodyNode().addElse(a):(this.isChain=a instanceof b,this.elseBody=this.ensureBlock(a),this.elseBody.updateLocationDataIfMissing(a.locationData));
return this};b.prototype.isStatement=function(a){var b;return(null!=a?a.level:void 0)===A||this.bodyNode().isStatement(a)||(null!=(b=this.elseBodyNode())?b.isStatement(a):void 0)};b.prototype.jumps=function(a){var b;return this.body.jumps(a)||(null!=(b=this.elseBody)?b.jumps(a):void 0)};b.prototype.compileNode=function(a){return this.isStatement(a)?this.compileStatement(a):this.compileExpression(a)};b.prototype.makeReturn=function(a){a&&(this.elseBody||(this.elseBody=new c([new H("void 0")])));this.body&&
(this.body=new c([this.body.makeReturn(a)]));this.elseBody&&(this.elseBody=new c([this.elseBody.makeReturn(a)]));return this};b.prototype.ensureBlock=function(a){return a instanceof c?a:new c([a])};b.prototype.compileStatement=function(a){var c,e,d,f;c=ma(a,"chainChild");if(ma(a,"isExistentialEquals"))return(new b(this.condition.invert(),this.elseBodyNode(),{type:"if"})).compileToFragments(a);f=a.indent+ca;d=this.condition.compileToFragments(a,P);e=this.ensureBlock(this.body).compileToFragments(Fa(a,
{indent:f}));e=[].concat(this.makeCode("if ("),d,this.makeCode(") {\n"),e,this.makeCode("\n"+this.tab+"}"));c||e.unshift(this.makeCode(this.tab));if(!this.elseBody)return e;c=e.concat(this.makeCode(" else "));this.isChain?(a.chainChild=!0,c=c.concat(this.elseBody.unwrap().compileToFragments(a,A))):c=c.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(Fa(a,{indent:f}),A),this.makeCode("\n"+this.tab+"}"));return c};b.prototype.compileExpression=function(a){var b,c,d;d=this.condition.compileToFragments(a,
p);c=this.bodyNode().compileToFragments(a,h);b=this.elseBodyNode()?this.elseBodyNode().compileToFragments(a,h):[this.makeCode("void 0")];b=d.concat(this.makeCode(" ? "),c,this.makeCode(" : "),b);return a.level>=p?this.wrapInBraces(b):b};b.prototype.unfoldSoak=function(){return this.soak&&this};return b}(a);la={extend:function(a){return"function(child, parent) { for (var key in parent) { if ("+za("hasProp",a)+".call(parent, key)) child[key] \x3d parent[key]; } function ctor() { this.constructor \x3d child; } ctor.prototype \x3d parent.prototype; child.prototype \x3d new ctor(); child.__super__ \x3d parent.prototype; return child; }"},
bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i \x3d 0, l \x3d this.length; i \x3c l; i++) { if (i in this \x26\x26 this[i] \x3d\x3d\x3d item) return i; } return -1; }"},modulo:function(){return"function(a, b) { return (+a % (b \x3d +b) + b) % b; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}};A=1;P=2;h=3;p=4;y=5;t=6;ca=" ";Z=/^[+-]?\d+$/;za=
function(a,b){var c,f;f=b.scope.root;if(a in f.utilities)return f.utilities[a];c=f.freeVariable(a);f.assign(c,la[a](b));return f.utilities[a]=c};Pa=function(a,b){a=a.replace(/\n/g,"$\x26"+b);return a.replace(/\s+$/,"")};Ja=function(a){return a instanceof r&&"arguments"===a.value};Ta=function(a){return a instanceof ga||a instanceof l&&a.bound||a instanceof ka};ta=function(a){return a.isComplex()||("function"===typeof a.isAssignable?a.isAssignable():void 0)};Na=function(a,b,c){if(a=b[c].unfoldSoak(a))return b[c]=
a.body,a.body=new L(b),a}}).call(this);return g}();u["./sourcemap"]=function(){var g={};(function(){var u;u=function(){function g(g){this.line=g;this.columns=[]}g.prototype.add=function(g,a,c){var q;q=a[0];a=a[1];null==c&&(c={});if(!this.columns[g]||!c.noReplace)return this.columns[g]={line:this.line,column:g,sourceLine:q,sourceColumn:a}};g.prototype.sourceLocation=function(g){for(var a;!((a=this.columns[g])||0>=g);)g--;return a&&[a.sourceLine,a.sourceColumn]};return g}();g=function(){function g(){this.lines=
[]}g.prototype.add=function(g,a,c){var q,f;null==c&&(c={});f=a[0];a=a[1];return((q=this.lines)[f]||(q[f]=new u(f))).add(a,g,c)};g.prototype.sourceLocation=function(g){var a,c;a=g[0];for(g=g[1];!((c=this.lines[a])||0>=a);)a--;return c&&c.sourceLocation(g)};g.prototype.generate=function(g,a){var c,q,f,u,l,w,G,F,x,v,M,N,J;null==g&&(g={});null==a&&(a=null);l=w=u=J=0;v=!1;c="";M=this.lines;f=q=0;for(G=M.length;q<G;f=++q)if(f=M[f])for(N=f.columns,f=0,F=N.length;f<F;f++)if(x=N[f]){for(;J<x.line;)u=0,v=!1,
c+=";",J++;v&&(c+=",");c+=this.encodeVlq(x.column-u);u=x.column;c+=this.encodeVlq(0);c+=this.encodeVlq(x.sourceLine-w);w=x.sourceLine;c+=this.encodeVlq(x.sourceColumn-l);l=x.sourceColumn;v=!0}c={version:3,file:g.generatedFile||"",sourceRoot:g.sourceRoot||"",sources:g.sourceFiles||[""],names:[],mappings:c};g.inlineMap&&(c.sourcesContent=[a]);return c};g.prototype.encodeVlq=function(g){var a,c;a="";for(c=(Math.abs(g)<<1)+(0>g?1:0);c||!a;)g=c&31,(c>>=5)&&(g|=32),a+=this.encodeBase64(g);return a};g.prototype.encodeBase64=
function(g){var a;if(!(a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[g]))throw Error("Cannot Base64 encode value: "+g);return a};return g}()}).call(this);return g}();u["./coffee-script"]=function(){var g={};(function(){var qa,xa,q,a,c,Ca,f,D,l,w,G,F,x,v,M,N,J,r,E,O={}.hasOwnProperty;D=u("fs");E=u("vm");M=u("path");qa=u("./lexer").Lexer;v=u("./parser").parser;w=u("./helpers");xa=u("./sourcemap");c=u("../../package.json");g.VERSION=c.version;g.FILE_EXTENSIONS=[".coffee",".litcoffee",
".coffee.md"];g.helpers=w;q=function(a){switch(!1){case "function"!==typeof Buffer:return(new Buffer(a)).toString("base64");case "function"!==typeof btoa:return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(a,c){return String.fromCharCode("0x"+c)}));default:throw Error("Unable to base64 encode inline sourcemap.");}};c=function(a){return function(c,f){null==f&&(f={});try{return a.call(this,c,f)}catch(p){if("string"!==typeof c)throw p;throw w.updateSyntaxError(p,c,f.filename);}}};r=
{};J={};g.compile=a=c(function(a,c){var f,g,h,k,m,l,u,D,E,I,F,G,z;h=w.extend;c=h({},c);l=c.sourceMap||c.inlineMap||null==c.filename;h=c.filename||"\x3canonymous\x3e";r[h]=a;l&&(I=new xa);g=x.tokenize(a,c);k=c;E=[];m=0;for(u=g.length;m<u;m++)f=g[m],"IDENTIFIER"===f[0]&&E.push(f[1]);k.referencedVars=E;if(null==c.bare||!0!==c.bare)for(k=0,m=g.length;k<m;k++)if(f=g[k],"IMPORT"===(D=f[0])||"EXPORT"===D){c.bare=!0;break}m=v.parse(g).compileToFragments(c);g=0;c.header&&(g+=1);c.shiftLine&&(g+=1);f=0;D="";
u=0;for(E=m.length;u<E;u++)k=m[u],l&&(k.locationData&&!/^[;\s]*$/.test(k.code)&&I.add([k.locationData.first_line,k.locationData.first_column],[g,f],{noReplace:!0}),F=w.count(k.code,"\n"),g+=F,f=F?k.code.length-(k.code.lastIndexOf("\n")+1):f+k.code.length),D+=k.code;c.header&&(f="Generated by CoffeeScript "+this.VERSION,D="// "+f+"\n"+D);l&&(z=I.generate(c,a),J[h]=I);c.inlineMap&&(a=q(JSON.stringify(z)),h="//# sourceURL\x3d"+(null!=(G=c.filename)?G:"coffeescript"),D=D+"\n"+("//# sourceMappingURL\x3ddata:application/json;base64,"+
a)+"\n"+h);return c.sourceMap?{js:D,sourceMap:I,v3SourceMap:JSON.stringify(z,null,2)}:D});g.tokens=c(function(a,c){return x.tokenize(a,c)});g.nodes=c(function(a,c){return"string"===typeof a?v.parse(x.tokenize(a,c)):v.parse(a)});g.run=function(c,f){var g,k,h;null==f&&(f={});k=u.main;k.filename=process.argv[1]=f.filename?D.realpathSync(f.filename):"\x3canonymous\x3e";k.moduleCache&&(k.moduleCache={});g=null!=f.filename?M.dirname(D.realpathSync(f.filename)):D.realpathSync(".");k.paths=u("module")._nodeModulePaths(g);
if(!w.isCoffee(k.filename)||u.extensions)c=a(c,f),c=null!=(h=c.js)?h:c;return k._compile(c,k.filename)};g.eval=function(c,f){var g,k,h,m,l,r,q,v,x,w;null==f&&(f={});if(c=c.trim()){m=null!=(l=E.Script.createContext)?l:E.createContext;l=null!=(h=E.isContext)?h:function(a){return f.sandbox instanceof m().constructor};if(m){if(null!=f.sandbox){if(l(f.sandbox))w=f.sandbox;else for(r in w=m(),l=f.sandbox,l)O.call(l,r)&&(h=l[r],w[r]=h);w.global=w.root=w.GLOBAL=w}else w=global;w.__filename=f.filename||"eval";
w.__dirname=M.dirname(w.__filename);if(w===global&&!w.module&&!w.require){g=u("module");w.module=k=new g(f.modulename||"eval");w.require=h=function(a){return g._load(a,k,!0)};k.filename=w.__filename;x=Object.getOwnPropertyNames(u);l=0;for(q=x.length;l<q;l++)v=x[l],"paths"!==v&&"arguments"!==v&&"caller"!==v&&(h[v]=u[v]);h.paths=k.paths=g._nodeModulePaths(process.cwd());h.resolve=function(a){return g._resolveFilename(a,k)}}}l={};for(r in f)O.call(f,r)&&(h=f[r],l[r]=h);l.bare=!0;c=a(c,l);return w===
global?E.runInThisContext(c):E.runInContext(c,w)}};g.register=function(){return u("./register")};if(u.extensions)for(N=this.FILE_EXTENSIONS,Ca=function(a){var c;return null!=(c=u.extensions)[a]?c[a]:c[a]=function(){throw Error("Use CoffeeScript.register() or require the coffee-script/register module to require "+a+" files.");}},G=0,F=N.length;G<F;G++)c=N[G],Ca(c);g._compileFile=function(c,f,g){var k,h;null==f&&(f=!1);null==g&&(g=!1);h=D.readFileSync(c,"utf8");h=65279===h.charCodeAt(0)?h.substring(1):
h;try{k=a(h,{filename:c,sourceMap:f,inlineMap:g,sourceFiles:[c],literate:w.isLiterate(c)})}catch(y){throw w.updateSyntaxError(y,h,c);}return k};x=new qa;v.lexer={lex:function(){var a,c;(c=v.tokens[this.pos++])?(a=c[0],this.yytext=c[1],this.yylloc=c[2],v.errorToken=c.origin||c,this.yylineno=this.yylloc.first_line):a="";return a},setInput:function(a){v.tokens=a;return this.pos=0},upcomingInput:function(){return""}};v.yy=u("./nodes");v.yy.parseError=function(a,c){var f,g,h,k;h=v.errorToken;k=v.tokens;
f=h[0];g=h[1];a=h[2];g=function(){switch(!1){case h!==k[k.length-1]:return"end of input";case "INDENT"!==f&&"OUTDENT"!==f:return"indentation";case "IDENTIFIER"!==f&&"NUMBER"!==f&&"INFINITY"!==f&&"STRING"!==f&&"STRING_START"!==f&&"REGEX"!==f&&"REGEX_START"!==f:return f.replace(/_START$/,"").toLowerCase();default:return w.nameWhitespaceCharacter(g)}}();return w.throwSyntaxError("unexpected "+g,a)};f=function(a,c){var f,g,h,k;a.isNative()?f="native":(a.isEval()?(g=a.getScriptNameOrSourceURL())||a.getEvalOrigin():
g=a.getFileName(),g||(g="\x3canonymous\x3e"),h=a.getLineNumber(),f=a.getColumnNumber(),f=(c=c(g,h,f))?g+":"+c[0]+":"+c[1]:g+":"+h+":"+f);g=a.getFunctionName();h=a.isConstructor();if(a.isToplevel()||h)return h?"new "+(g||"\x3canonymous\x3e")+" ("+f+")":g?g+" ("+f+")":f;h=a.getMethodName();k=a.getTypeName();return g?(c=a="",k&&g.indexOf(k)&&(c=k+"."),h&&g.indexOf("."+h)!==g.length-h.length-1&&(a=" [as "+h+"]"),""+c+g+a+" ("+f+")"):k+"."+(h||"\x3canonymous\x3e")+" ("+f+")"};l=function(c){return null!=
J[c]?J[c]:null!=J["\x3canonymous\x3e"]?J["\x3canonymous\x3e"]:null!=r[c]?(c=a(r[c],{filename:c,sourceMap:!0}),c.sourceMap):null};Error.prepareStackTrace=function(a,c){var k,m,h;h=function(a,c,f){var g;a=l(a);null!=a&&(g=a.sourceLocation([c-1,f-1]));return null!=g?[g[0]+1,g[1]+1]:null};m=function(){var a,l,m;m=[];a=0;for(l=c.length;a<l;a++){k=c[a];if(k.getFunction()===g.run)break;m.push(" at "+f(k,h))}return m}();return a.toString()+"\n"+m.join("\n")+"\n"}}).call(this);return g}();u["./browser"]=
function(){(function(){var g,qa,xa,q=[].indexOf||function(a){for(var c=0,g=this.length;c<g;c++)if(c in this&&this[c]===a)return c;return-1};g=u("./coffee-script");g.require=u;qa=g.compile;g.eval=function(a,c){null==c&&(c={});null==c.bare&&(c.bare=!0);return eval(qa(a,c))};g.run=function(a,c){null==c&&(c={});c.bare=!0;c.shiftLine=!0;return Function(qa(a,c))()};"undefined"!==typeof window&&null!==window&&("undefined"!==typeof btoa&&null!==btoa&&"undefined"!==typeof JSON&&null!==JSON&&(qa=function(a,
c){null==c&&(c={});c.inlineMap=!0;return g.compile(a,c)}),g.load=function(a,c,q,f){var u;null==q&&(q={});null==f&&(f=!1);q.sourceFiles=[a];u=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest;u.open("GET",a,!0);"overrideMimeType"in u&&u.overrideMimeType("text/plain");u.onreadystatechange=function(){var l;if(4===u.readyState){if(0===(l=u.status)||200===l)l=[u.responseText,q],f||g.run.apply(g,l);else throw Error("Could not load "+a);if(c)return c(l)}};return u.send(null)},
xa=function(){var a,c,u,f,D,l,w,G,F,x,v;v=window.document.getElementsByTagName("script");c=["text/coffeescript","text/literate-coffeescript"];a=function(){var a,f,g,l;l=[];a=0;for(f=v.length;a<f;a++)F=v[a],(g=F.type,0<=q.call(c,g))&&l.push(F);return l}();l=0;u=function(){var c;c=a[l];if(c instanceof Array)return g.run.apply(g,c),l++,u()};f=function(f,l){var q,r;q={literate:f.type===c[1]};if(r=f.src||f.getAttribute("data-src"))return g.load(r,function(c){a[l]=c;return u()},q,!0);q.sourceFiles=["embedded"];
return a[l]=[f.innerHTML,q]};D=w=0;for(G=a.length;w<G;D=++w)x=a[D],f(x,D);return u()},window.addEventListener?window.addEventListener("DOMContentLoaded",xa,!1):window.attachEvent("onload",xa))}).call(this);return{}}();return u["./coffee-script"]}();"function"===typeof define&&define.amd?define(function(){return ya}):u.CoffeeScript=ya})(this);
$jscomp.arrayIterator=function(u){var xa=0;return $jscomp.iteratorPrototype(function(){return xa<u.length?{done:!1,value:u[xa++]}:{done:!0}})};$jscomp.iteratorPrototype=function(u){$jscomp.initSymbolIterator();u={next:u};u[$jscomp.global.Symbol.iterator]=function(){return this};return u};
$jscomp.iteratorFromArray=function(u,xa){$jscomp.initSymbolIterator();u instanceof String&&(u+="");var ya=0,e={next:function(){if(ya<u.length){var ra=ya++;return{value:xa(ra,u[ra]),done:!1}}e.next=function(){return{done:!0,value:void 0}};return e.next()}};e[Symbol.iterator]=function(){return e};return e};$jscomp.polyfill("Array.prototype.keys",function(u){return u?u:function(){return $jscomp.iteratorFromArray(this,function(u){return u})}},"es6","es3");
(function(u){var xa=function(){function u(e){return u[e]}u["../../package.json"]={name:"coffee-script",description:"Unfancy JavaScript",keywords:["javascript","language","coffeescript","compiler"],author:"Jeremy Ashkenas",version:"1.12.8",license:"MIT",engines:{node:"\x3e\x3d0.8.0"},directories:{lib:"./lib/coffee-script"},main:"./lib/coffee-script/coffee-script",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{postinstall:'node --eval \'if (require("./package.json").name \x3d\x3d\x3d "coffee-script") { var red, yellow, cyan, reset; red \x3d yellow \x3d cyan \x3d reset \x3d ""; if (!process.env.NODE_DISABLE_COLORS) { red \x3d "\\x1b[31m"; yellow \x3d "\\x1b[33m"; cyan \x3d "\\x1b[36m"; reset \x3d "\\x1b[0m"; } console.warn(red + "CoffeeScript has moved!" + reset + " Please update references to " + yellow + "\\"coffee-script\\"" + reset + " to use " + yellow + "\\"coffeescript\\"" + reset + " (no hyphen) instead."); console.warn("Also, a new major version has been released under the " + yellow + "coffeescript" + reset + " name on NPM. This new release targets modern JavaScript, with minimal breaking changes. Learn more at " + cyan + "http://coffeescript.org" + reset + "."); console.warn(""); }\'',
test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{docco:"~0.7.0","google-closure-compiler-js":"~20170910.0.1","highlight.js":"~9.12.0",jison:"~0.4.18","markdown-it":"~8.4.0",underscore:"~1.8.3"}};u["./helpers"]=function(){var e={};(function(){var u,r,x;e.starts=function(a,k,t){return k===a.substr(t,
k.length)};e.ends=function(a,k,t){var f=k.length;return k===a.substr(a.length-f-(t||0),f)};e.repeat=x=function(a,k){var f;for(f="";0<k;)k&1&&(f+=a),k>>>=1,a+=a;return f};e.compact=function(a){var f,b;var p=[];var x=0;for(b=a.length;x<b;x++)(f=a[x])&&p.push(f);return p};e.count=function(a,k){var f;var b=f=0;if(!k.length)return 1/0;for(;f=1+a.indexOf(k,f);)b++;return b};e.merge=function(f,k){return a(a({},f),k)};var a=e.extend=function(a,k){var f;for(f in k){var b=k[f];a[f]=b}return a};e.flatten=u=
function(a){var f;var b=[];var x=0;for(f=a.length;x<f;x++){var e=a[x];"[object Array]"===Object.prototype.toString.call(e)?b=b.concat(u(e)):b.push(e)}return b};e.del=function(a,k){var f=a[k];delete a[k];return f};e.some=null!=(r=Array.prototype.some)?r:function(a){var f;var b=0;for(f=this.length;b<f;b++){var x=this[b];if(a(x))return!0}return!1};e.invertLiterate=function(a){var f=!0;var b;var x=a.split("\n");var e=[];var I=0;for(b=x.length;I<b;I++)a=x[I],f&&/^([ ]{4}|[ ]{0,3}\t)/.test(a)?e.push(a):
(f=/^\s*$/.test(a))?e.push(a):e.push("# "+a);return e.join("\n")};var b=function(a,b){return b?{first_line:a.first_line,first_column:a.first_column,last_line:b.last_line,last_column:b.last_column}:a};e.addLocationDataFn=function(a,k){return function(f){"object"===typeof f&&f.updateLocationDataIfMissing&&f.updateLocationDataIfMissing(b(a,k));return f}};e.locationDataToString=function(a){var f;"2"in a&&"first_line"in a[2]?f=a[2]:"first_line"in a&&(f=a);return f?f.first_line+1+":"+(f.first_column+1)+
"-"+(f.last_line+1+":"+(f.last_column+1)):"No location data"};e.baseFileName=function(a,b,x){null==b&&(b=!1);null==x&&(x=!1);a=a.split(x?/\\|\//:/\//);a=a[a.length-1];if(!(b&&0<=a.indexOf(".")))return a;a=a.split(".");a.pop();"coffee"===a[a.length-1]&&1<a.length&&a.pop();return a.join(".")};e.isCoffee=function(a){return/\.((lit)?coffee|coffee\.md)$/.test(a)};e.isLiterate=function(a){return/\.(litcoffee|coffee\.md)$/.test(a)};e.throwSyntaxError=function(a,b){a=new SyntaxError(a);a.location=b;a.toString=
za;a.stack=a.toString();throw a;};e.updateSyntaxError=function(a,b,x){a.toString===za&&(a.code||(a.code=b),a.filename||(a.filename=x),a.stack=a.toString());return a};var za=function(){var a,b,e;if(!this.code||!this.location)return Error.prototype.toString.call(this);var p=this.location;var z=p.first_line;var I=p.first_column;var J=p.last_line;var F=p.last_column;null==J&&(J=z);null==F&&(F=I);var u=this.filename||"[stdin]";p=this.code.split("\n")[z];J=z===J?F+1:p.length;F=p.slice(0,I).replace(/[^\s]/g,
" ")+x("^",J-I);if("undefined"!==typeof process&&null!==process)var y=(null!=(a=process.stdout)?a.isTTY:void 0)&&!(null!=(b=process.env)&&b.NODE_DISABLE_COLORS);if(null!=(e=this.colorful)?e:y)y=function(a){return"\u001b[1;31m"+a+"\u001b[0m"},p=p.slice(0,I)+y(p.slice(I,J))+p.slice(J),F=y(F);return u+":"+(z+1)+":"+(I+1)+": error: "+this.message+"\n"+p+"\n"+F};e.nameWhitespaceCharacter=function(a){switch(a){case " ":return"space";case "\n":return"newline";case "\r":return"carriage return";case "\t":return"tab";
default:return a}}}).call(this);return e}();u["./rewriter"]=function(){var e={};(function(){var u,r,x=[].indexOf||function(a){for(var c=0,b=this.length;c<b;c++)if(c in this&&this[c]===a)return c;return-1},a=[].slice;var b=function(a,c,b){a=[a,c];a.generated=!0;b&&(a.origin=b);return a};e.Rewriter=function(){function n(){}n.prototype.rewrite=function(a){this.tokens=a;this.removeLeadingNewlines();this.closeOpenCalls();this.closeOpenIndexes();this.normalizeLines();this.tagPostfixConditionals();this.addImplicitBracesAndParens();
this.addLocationDataToGeneratedTokens();this.fixOutdentLocationData();return this.tokens};n.prototype.scanTokens=function(a){var c,b;var h=this.tokens;for(c=0;b=h[c];)c+=a.call(this,b,c,h);return!0};n.prototype.detectEnd=function(a,b,q){var c,w,n,L;var e=this.tokens;for(c=0;L=e[a];){if(0===c&&b.call(this,L,a))return q.call(this,L,a);if(!L||0>c)return q.call(this,L,a-1);(w=L[0],0<=x.call(f,w))?c+=1:(n=L[0],0<=x.call(k,n))&&--c;a+=1}return a-1};n.prototype.removeLeadingNewlines=function(){var a,b;var q=
this.tokens;var h=a=0;for(b=q.length;a<b;h=++a){var f=q[h][0];if("TERMINATOR"!==f)break}if(h)return this.tokens.splice(0,h)};n.prototype.closeOpenCalls=function(){var a=function(a,c){var h;return")"===(h=a[0])||"CALL_END"===h||"OUTDENT"===a[0]&&")"===this.tag(c-1)};var b=function(a,c){return this.tokens["OUTDENT"===a[0]?c-1:c][0]="CALL_END"};return this.scanTokens(function(c,h){"CALL_START"===c[0]&&this.detectEnd(h+1,a,b);return 1})};n.prototype.closeOpenIndexes=function(){var a=function(a,c){var h;
return"]"===(h=a[0])||"INDEX_END"===h};var b=function(a,c){return a[0]="INDEX_END"};return this.scanTokens(function(c,h){"INDEX_START"===c[0]&&this.detectEnd(h+1,a,b);return 1})};n.prototype.indexOfTag=function(){var c,b,f,h;var n=arguments[0];var k=2<=arguments.length?a.call(arguments,1):[];var e=b=c=0;for(f=k.length;0<=f?b<f:b>f;e=0<=f?++b:--b){for(;"HERECOMMENT"===this.tag(n+e+c);)c+=2;if(null!=k[e]&&("string"===typeof k[e]&&(k[e]=[k[e]]),h=this.tag(n+e+c),0>x.call(k[e],h)))return-1}return n+e+
c-1};n.prototype.looksObjectish=function(a){if(-1<this.indexOfTag(a,"@",null,":")||-1<this.indexOfTag(a,null,":"))return!0;a=this.indexOfTag(a,f);if(-1<a){var c=null;this.detectEnd(a+1,function(a){var c;return c=a[0],0<=x.call(k,c)},function(a,b){return c=b});if(":"===this.tag(c+1))return!0}return!1};n.prototype.findTagsBackwards=function(a,b){var c,h,n,w,e,p,y;for(c=[];0<=a&&(c.length||(w=this.tag(a),0>x.call(b,w))&&((e=this.tag(a),0>x.call(f,e))||this.tokens[a].generated)&&(p=this.tag(a),0>x.call(Q,
p)));)(h=this.tag(a),0<=x.call(k,h))&&c.push(this.tag(a)),(n=this.tag(a),0<=x.call(f,n))&&c.length&&c.pop(),--a;return y=this.tag(a),0<=x.call(b,y)};n.prototype.addImplicitBracesAndParens=function(){var a=[];var n=null;return this.scanTokens(function(c,h,e){var q,w,p,t;var H=c[0];var K=(q=0<h?e[h-1]:[])[0];var u=(h<e.length-1?e[h+1]:[])[0];var z=function(){return a[a.length-1]};var D=h;var A=function(a){return h-D+a};var I=function(a){var c;return null!=a?null!=(c=a[2])?c.ours:void 0:void 0};var E=
function(a){return I(a)&&"{"===(null!=a?a[0]:void 0)};var G=function(a){return I(a)&&"("===(null!=a?a[0]:void 0)};var O=function(){return I(z())};var C=function(){return G(z())};var S=function(){return E(z())};var v=function(){var a;return O&&"CONTROL"===(null!=(a=z())?a[0]:void 0)};var X=function(f){var n=null!=f?f:h;a.push(["(",n,{ours:!0}]);e.splice(n,0,b("CALL_START","(",["","implicit function call",c[2]]));if(null==f)return h+=1};var R=function(){a.pop();e.splice(h,0,b("CALL_END",")",["","end of input",
c[2]]));return h+=1};var M=function(f,n){null==n&&(n=!0);var q=null!=f?f:h;a.push(["{",q,{sameLine:!0,startsLine:n,ours:!0}]);n=new String("{");n.generated=!0;e.splice(q,0,b("{",n,c));if(null==f)return h+=1};var r=function(f){f=null!=f?f:h;a.pop();e.splice(f,0,b("}","}",c));return h+=1};if(C()&&("IF"===H||"TRY"===H||"FINALLY"===H||"CATCH"===H||"CLASS"===H||"SWITCH"===H))return a.push(["CONTROL",h,{ours:!0}]),A(1);if("INDENT"===H&&O()){if("\x3d\x3e"!==K&&"-\x3e"!==K&&"["!==K&&"("!==K&&","!==K&&"{"!==
K&&"TRY"!==K&&"ELSE"!==K&&"\x3d"!==K)for(;C();)R();v()&&a.pop();a.push([H,h]);return A(1)}if(0<=x.call(f,H))return a.push([H,h]),A(1);if(0<=x.call(k,H)){for(;O();)C()?R():S()?r():a.pop();n=a.pop()}if((0<=x.call(J,H)&&c.spaced||"?"===H&&0<h&&!e[h-1].spaced)&&(0<=x.call(F,u)||0<=x.call(N,u)&&(null==(w=e[h+1])||!w.spaced)&&(null==(p=e[h+1])||!p.newLine)))return"?"===H&&(H=c[0]="FUNC_EXIST"),X(h+1),A(2);if(0<=x.call(J,H)&&-1<this.indexOfTag(h+1,"INDENT")&&this.looksObjectish(h+2)&&!this.findTagsBackwards(h,
"CLASS EXTENDS IF CATCH SWITCH LEADING_WHEN FOR WHILE UNTIL".split(" ")))return X(h+1),a.push(["INDENT",h+2]),A(3);if(":"===H){for(r=function(){var a;switch(!1){case a=this.tag(h-1),0>x.call(k,a):return n[1];case "@"!==this.tag(h-2):return h-2;default:return h-1}}.call(this);"HERECOMMENT"===this.tag(r-2);)r-=2;this.insideForDeclaration="FOR"===u;q=0===r||(t=this.tag(r-1),0<=x.call(Q,t))||e[r-1].newLine;if(z()&&(S=z(),t=S[0],v=S[1],("{"===t||"INDENT"===t&&"{"===this.tag(v-1))&&(q||","===this.tag(r-
1)||"{"===this.tag(r-1))))return A(1);M(r,!!q);return A(2)}if(0<=x.call(Q,H))for(M=a.length-1;0<=M;M+=-1){t=a[M];if(!I(t))break;E(t)&&(t[2].sameLine=!1)}M="OUTDENT"===K||q.newLine;if(0<=x.call(y,H)||0<=x.call(B,H)&&M)for(;O();)if(M=z(),t=M[0],v=M[1],q=M[2],M=q.sameLine,q=q.startsLine,C()&&","!==K)R();else if(S()&&!this.insideForDeclaration&&M&&"TERMINATOR"!==H&&":"!==K)r();else if(!S()||"TERMINATOR"!==H||","===K||q&&this.looksObjectish(h+1))break;else{if("HERECOMMENT"===u)return A(1);r()}if(!(","!==
H||this.looksObjectish(h+1)||!S()||this.insideForDeclaration||"TERMINATOR"===u&&this.looksObjectish(h+2)))for(u="OUTDENT"===u?1:0;S();)r(h+u);return A(1)})};n.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(a,b,f){var c,n;if(a[2]||!a.generated&&!a.explicit)return 1;if("{"===a[0]&&(c=null!=(n=f[b+1])?n[2]:void 0)){var q=c.first_line;c=c.first_column}else(c=null!=(q=f[b-1])?q[2]:void 0)?(q=c.last_line,c=c.last_column):q=c=0;a[2]={first_line:q,first_column:c,last_line:q,
last_column:c};return 1})};n.prototype.fixOutdentLocationData=function(){return this.scanTokens(function(a,b,f){if(!("OUTDENT"===a[0]||a.generated&&"CALL_END"===a[0]||a.generated&&"}"===a[0]))return 1;b=f[b-1][2];a[2]={first_line:b.last_line,first_column:b.last_column,last_line:b.last_line,last_column:b.last_column};return 1})};n.prototype.normalizeLines=function(){var b,f;var n=b=f=null;var h=function(a,b){var c,f,h,q;return";"!==a[1]&&(c=a[0],0<=x.call(O,c))&&!("TERMINATOR"===a[0]&&(f=this.tag(b+
1),0<=x.call(I,f)))&&!("ELSE"===a[0]&&"THEN"!==n)&&!!("CATCH"!==(h=a[0])&&"FINALLY"!==h||"-\x3e"!==n&&"\x3d\x3e"!==n)||(q=a[0],0<=x.call(B,q))&&(this.tokens[b-1].newLine||"OUTDENT"===this.tokens[b-1][0])};var e=function(a,b){return this.tokens.splice(","===this.tag(b-1)?b-1:b,0,f)};return this.scanTokens(function(c,q,k){var w,p,t;c=c[0];if("TERMINATOR"===c){if("ELSE"===this.tag(q+1)&&"OUTDENT"!==this.tag(q-1))return k.splice.apply(k,[q,1].concat(a.call(this.indentation()))),1;if(w=this.tag(q+1),0<=
x.call(I,w))return k.splice(q,1),0}if("CATCH"===c)for(w=p=1;2>=p;w=++p)if("OUTDENT"===(t=this.tag(q+w))||"TERMINATOR"===t||"FINALLY"===t)return k.splice.apply(k,[q+w,0].concat(a.call(this.indentation()))),2+w;0<=x.call(G,c)&&"INDENT"!==this.tag(q+1)&&("ELSE"!==c||"IF"!==this.tag(q+1))&&(n=c,t=this.indentation(k[q]),b=t[0],f=t[1],"THEN"===n&&(b.fromThen=!0),k.splice(q+1,0,b),this.detectEnd(q+2,h,e),"THEN"===c&&k.splice(q,1));return 1})};n.prototype.tagPostfixConditionals=function(){var a=null;var b=
function(a,b){a=a[0];b=this.tokens[b-1][0];return"TERMINATOR"===a||"INDENT"===a&&0>x.call(G,b)};var f=function(b,c){if("INDENT"!==b[0]||b.generated&&!b.fromThen)return a[0]="POST_"+a[0]};return this.scanTokens(function(c,n){if("IF"!==c[0])return 1;a=c;this.detectEnd(n+1,b,f);return 1})};n.prototype.indentation=function(a){var b=["INDENT",2];var c=["OUTDENT",2];a?(b.generated=c.generated=!0,b.origin=c.origin=a):b.explicit=c.explicit=!0;return[b,c]};n.prototype.generate=b;n.prototype.tag=function(a){var b;
return null!=(b=this.tokens[a])?b[0]:void 0};return n}();var za=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]];e.INVERSES=u={};var f=[];var k=[];var t=0;for(r=za.length;t<r;t++){var p=za[t];var z=p[0];p=p[1];f.push(u[p]=z);k.push(u[z]=p)}var I=["CATCH","THEN","ELSE","FINALLY"].concat(k);var J="IDENTIFIER PROPERTY SUPER ) CALL_END ] INDEX_END @ THIS".split(" ");
var F="IDENTIFIER PROPERTY NUMBER INFINITY NAN STRING STRING_START REGEX REGEX_START JS NEW PARAM_START CLASS IF TRY SWITCH THIS UNDEFINED NULL BOOL UNARY YIELD UNARY_MATH SUPER THROW @ -\x3e \x3d\x3e [ ( { -- ++".split(" ");var N=["+","-"];var y="POST_IF FOR WHILE UNTIL WHEN BY LOOP TERMINATOR".split(" ");var G="ELSE -\x3e \x3d\x3e TRY FINALLY THEN".split(" ");var O="TERMINATOR CATCH FINALLY ELSE OUTDENT LEADING_WHEN".split(" ");var Q=["TERMINATOR","INDENT","OUTDENT"];var B=[".","?.","::","?::"]}).call(this);
return e}();u["./lexer"]=function(){var e={};(function(){var ra,r=[].indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(b in this&&this[b]===a)return b;return-1},x=[].slice;var a=u("./rewriter");var b=a.Rewriter;var za=a.INVERSES;a=u("./helpers");var f=a.count;var k=a.repeat;var t=a.invertLiterate;var p=a.throwSyntaxError;e.Lexer=function(){function a(){}a.prototype.tokenize=function(a,c){var f,Da;null==c&&(c={});this.literate=c.literate;this.outdebt=this.indebt=this.baseIndent=this.indent=
0;this.indents=[];this.ends=[];this.tokens=[];this.exportSpecifierList=this.importSpecifierList=this.seenExport=this.seenImport=this.seenFor=!1;this.chunkLine=c.line||0;this.chunkColumn=c.column||0;a=this.clean(a);for(Da=0;this.chunk=a.slice(Da);){var n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken();var h=this.getLineAndColumnFromChunk(n);this.chunkLine=h[0];this.chunkColumn=
h[1];Da+=n;if(c.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:Da}}this.closeIndentation();(f=this.ends.pop())&&this.error("missing "+f.tag,f.origin[2]);return!1===c.rewrite?this.tokens:(new b).rewrite(this.tokens)};a.prototype.clean=function(a){a.charCodeAt(0)===Q&&(a=a.slice(1));a=a.replace(/\r/g,"").replace(Y,"");w.test(a)&&(a="\n"+a,this.chunkLine--);this.literate&&(a=t(a));return a};a.prototype.identifierToken=function(){var a,b,c,f,n,h,q;if(!(a=B.exec(this.chunk)))return 0;
var e=a[0];var k=a[1];a=a[2];var x=k.length;var w=void 0;if("own"===k&&"FOR"===this.tag())return this.token("OWN",k),k.length;if("from"===k&&"YIELD"===this.tag())return this.token("FROM",k),k.length;if("as"===k&&this.seenImport){if("*"===this.value())this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(b=this.value(),0<=r.call(F,b))this.tokens[this.tokens.length-1][0]="IDENTIFIER";if("DEFAULT"===(c=this.tag())||"IMPORT_ALL"===c||"IDENTIFIER"===c)return this.token("AS",k),k.length}if("as"===k&&
this.seenExport&&("IDENTIFIER"===(f=this.tag())||"DEFAULT"===f))return this.token("AS",k),k.length;if("default"===k&&this.seenExport&&("EXPORT"===(n=this.tag())||"AS"===n))return this.token("DEFAULT",k),k.length;b=this.tokens;b=b[b.length-1];var p=a||null!=b&&("."===(h=b[0])||"?."===h||"::"===h||"?::"===h||!b.spaced&&"@"===b[0])?"PROPERTY":"IDENTIFIER";"IDENTIFIER"!==p||!(0<=r.call(J,k)||0<=r.call(F,k))||this.exportSpecifierList&&0<=r.call(F,k)?"IDENTIFIER"===p&&this.seenFor&&"from"===k&&I(b)&&(p=
"FORFROM",this.seenFor=!1):(p=k.toUpperCase(),"WHEN"===p&&(q=this.tag(),0<=r.call(sa,q))?p="LEADING_WHEN":"FOR"===p?this.seenFor=!0:"UNLESS"===p?p="IF":"IMPORT"===p?this.seenImport=!0:"EXPORT"===p?this.seenExport=!0:0<=r.call(ia,p)?p="UNARY":0<=r.call(qa,p)&&("INSTANCEOF"!==p&&this.seenFor?(p="FOR"+p,this.seenFor=!1):(p="RELATION","!"===this.value()&&(w=this.tokens.pop(),k="!"+k))));"IDENTIFIER"===p&&0<=r.call(G,k)&&this.error("reserved word '"+k+"'",{length:k.length});if("PROPERTY"!==p){if(0<=r.call(y,
k)){var t=k;k=N[k]}p=function(){switch(k){case "!":return"UNARY";case "\x3d\x3d":case "!\x3d":return"COMPARE";case "true":case "false":return"BOOL";case "break":case "continue":case "debugger":return"STATEMENT";case "\x26\x26":case "||":return k;default:return p}}()}h=this.token(p,k,0,x);t&&(h.origin=[p,t,h[2]]);w&&(t=[w[2].first_line,w[2].first_column],h[2].first_line=t[0],h[2].first_column=t[1]);a&&(t=e.lastIndexOf(":"),this.token(":",":",t,a.length));return e.length};a.prototype.numberToken=function(){var a,
b;if(!(a=n.exec(this.chunk)))return 0;var c=a[0];a=c.length;switch(!1){case !/^0[BOX]/.test(c):this.error("radix prefix in '"+c+"' must be lowercase",{offset:1});break;case !/^(?!0x).*E/.test(c):this.error("exponential notation in '"+c+"' must be indicated with a lowercase 'e'",{offset:c.indexOf("E")});break;case !/^0\d*[89]/.test(c):this.error("decimal literal '"+c+"' must not be prefixed with '0'",{length:a});break;case !/^0\d+/.test(c):this.error("octal literal '"+c+"' must be prefixed with '0o'",
{length:a})}var f=function(){switch(c.charAt(1)){case "b":return 2;case "o":return 8;case "x":return 16;default:return null}}();f=null!=f?parseInt(c.slice(2),f):parseFloat(c);if("b"===(b=c.charAt(1))||"o"===b)c="0x"+f.toString(16);this.token(Infinity===f?"INFINITY":"NUMBER",c,0,a);return a};a.prototype.stringToken=function(){var a,b,c,f,n;var h=(U.exec(this.chunk)||[])[0];if(!h)return 0;this.tokens.length&&"from"===this.value()&&(this.seenImport||this.seenExport)&&(this.tokens[this.tokens.length-
1][0]="FROM");var k=function(){switch(h){case "'":return W;case '"':return H;case "'''":return Z;case '"""':return T}}();var q=3===h.length;k=this.matchWithInterpolations(k,h);var e=k.tokens;var p=k.index;var x=e.length-1;k=h.charAt(0);if(q){var w=null;for(q=function(){var a,c;var m=[];b=a=0;for(c=e.length;a<c;b=++a)n=e[b],"NEOSTRING"===n[0]&&m.push(n[1]);return m}().join("#{}");a=A.exec(q);)if(a=a[1],null===w||0<(f=a.length)&&f<w.length)w=a;w&&(c=RegExp("\\n"+w,"g"));this.mergeInterpolationTokens(e,
{delimiter:k},function(a){return function(b,m){b=a.formatString(b,{delimiter:h});c&&(b=b.replace(c,"\n"));0===m&&(b=b.replace(Aa,""));m===x&&(b=b.replace(ma,""));return b}}(this))}else this.mergeInterpolationTokens(e,{delimiter:k},function(a){return function(b,m){b=a.formatString(b,{delimiter:h});return b=b.replace(D,function(a,d){return 0===m&&0===d||m===x&&d+a.length===b.length?"":" "})}}(this));return p};a.prototype.commentToken=function(){var a,b;if(!(b=this.chunk.match(q)))return 0;var c=b[0];
if(a=b[1])(b=X.exec(c))&&this.error("block comments cannot contain "+b[0],{offset:b.index,length:b[0].length}),0<=a.indexOf("\n")&&(a=a.replace(RegExp("\\n"+k(" ",this.indent),"g"),"\n")),this.token("HERECOMMENT",a,0,c.length);return c.length};a.prototype.jsToken=function(){var a;if("`"!==this.chunk.charAt(0)||!(a=L.exec(this.chunk)||P.exec(this.chunk)))return 0;var b=a[1].replace(/\\+(`|$)/g,function(a){return a.slice(-Math.ceil(a.length/2))});this.token("JS",b,0,a[0].length);return a[0].length};
a.prototype.regexToken=function(){var a,b,c;switch(!1){case !(a=S.exec(this.chunk)):this.error("regular expressions cannot begin with "+a[2],{offset:a.index+a[1].length});break;case !(a=this.matchWithInterpolations(ba,"///")):var f=a.tokens;var h=a.index;break;case !(a=ic.exec(this.chunk)):var n=a[0];var k=a[1];a=a[2];this.validateEscapes(k,{isRegex:!0,offsetInChunk:1});k=this.formatRegex(k,{delimiter:"/"});h=n.length;var q=this.tokens;if(q=q[q.length-1])if(q.spaced&&(b=q[0],0<=r.call(ha,b))){if(!a||
v.test(n))return 0}else if(c=q[0],0<=r.call(oa,c))return 0;a||this.error("missing / (unclosed regex)");break;default:return 0}c=E.exec(this.chunk.slice(h))[0];b=h+c.length;a=this.makeToken("REGEX",null,0,b);switch(!1){case !!aa.test(c):this.error("invalid regular expression flags "+c,{offset:h,length:c.length});break;case !(n||1===f.length):null==k&&(k=this.formatHeregex(f[0][1]));this.token("REGEX",""+this.makeDelimitedLiteral(k,{delimiter:"/"})+c,0,b,a);break;default:this.token("REGEX_START","(",
0,0,a),this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),this.mergeInterpolationTokens(f,{delimiter:'"',double:!0},this.formatHeregex),c&&(this.token(",",",",h-1,0),this.token("STRING",'"'+c+'"',h-1,c.length)),this.token(")",")",b-1,0),this.token("REGEX_END",")",b-1,0)}return b};a.prototype.lineToken=function(){var a;if(!(a=K.exec(this.chunk)))return 0;a=a[0];this.seenFor=!1;this.importSpecifierList||(this.seenImport=!1);this.exportSpecifierList||(this.seenExport=!1);var b=a.length-
1-a.lastIndexOf("\n");var c=this.unfinished();if(b-this.indebt===this.indent)return c?this.suppressNewlines():this.newlineToken(0),a.length;if(b>this.indent){if(c)return this.indebt=b-this.indent,this.suppressNewlines(),a.length;if(!this.tokens.length)return this.baseIndent=this.indent=b,a.length;c=b-this.indent+this.outdebt;this.token("INDENT",c,a.length-b,b);this.indents.push(c);this.ends.push({tag:"OUTDENT"});this.outdebt=this.indebt=0;this.indent=b}else b<this.baseIndent?this.error("missing indentation",
{offset:a.length}):(this.indebt=0,this.outdentToken(this.indent-b,c,a.length));return a.length};a.prototype.outdentToken=function(a,b,c){var f,h,n;for(f=this.indent-a;0<a;)if(h=this.indents[this.indents.length-1])if(h===this.outdebt)a-=this.outdebt,this.outdebt=0;else if(h<this.outdebt)this.outdebt-=h,a-=h;else{var k=this.indents.pop()+this.outdebt;c&&(n=this.chunk[c],0<=r.call(ca,n))&&(f-=k-a,a=k);this.outdebt=0;this.pair("OUTDENT");this.token("OUTDENT",a,0,c);a-=k}else a=0;k&&(this.outdebt-=a);
for(;";"===this.value();)this.tokens.pop();"TERMINATOR"===this.tag()||b||this.token("TERMINATOR","\n",c,0);this.indent=f;return this};a.prototype.whitespaceToken=function(){var a;if(!(a=w.exec(this.chunk))&&"\n"!==this.chunk.charAt(0))return 0;var b=this.tokens;(b=b[b.length-1])&&(b[a?"spaced":"newLine"]=!0);return a?a[0].length:0};a.prototype.newlineToken=function(a){for(;";"===this.value();)this.tokens.pop();"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",a,0);return this};a.prototype.suppressNewlines=
function(){"\\"===this.value()&&this.tokens.pop();return this};a.prototype.literalToken=function(){var a,b,f,n,k;(a=c.exec(this.chunk))?(a=a[0],h.test(a)&&this.tagParameters()):a=this.chunk.charAt(0);var q=a;var e=this.tokens;if((e=e[e.length-1])&&0<=r.call(["\x3d"].concat(x.call(ea)),a)){var p=!1;"\x3d"!==a||"||"!==(f=e[1])&&"\x26\x26"!==f||e.spaced||(e[0]="COMPOUND_ASSIGN",e[1]+="\x3d",e=this.tokens[this.tokens.length-2],p=!0);e&&"PROPERTY"!==e[0]&&(f=null!=(b=e.origin)?b:e,(b=z(e[1],f[1]))&&this.error(b,
f[2]));if(p)return a.length}"{"===a&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===a?this.importSpecifierList=!1:"{"===a&&"EXPORT"===(null!=e?e[0]:void 0)?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===a&&(this.exportSpecifierList=!1);if(";"===a)this.seenFor=this.seenImport=this.seenExport=!1,q="TERMINATOR";else if("*"===a&&"EXPORT"===e[0])q="EXPORT_ALL";else if(0<=r.call(pa,a))q="MATH";else if(0<=r.call(la,a))q="COMPARE";else if(0<=r.call(ea,a))q="COMPOUND_ASSIGN";
else if(0<=r.call(ia,a))q="UNARY";else if(0<=r.call(fa,a))q="UNARY_MATH";else if(0<=r.call(ja,a))q="SHIFT";else if("?"===a&&null!=e&&e.spaced)q="BIN?";else if(e&&!e.spaced)if("("===a&&(n=e[0],0<=r.call(ha,n)))"?"===e[0]&&(e[0]="FUNC_EXIST"),q="CALL_START";else if("["===a&&(k=e[0],0<=r.call(ka,k)))switch(q="INDEX_START",e[0]){case "?":e[0]="INDEX_SOAK"}n=this.makeToken(q,a);switch(a){case "(":case "{":case "[":this.ends.push({tag:za[a],origin:n});break;case ")":case "}":case "]":this.pair(a)}this.tokens.push(n);
return a.length};a.prototype.tagParameters=function(){var a;if(")"!==this.tag())return this;var b=[];var c=this.tokens;var f=c.length;for(c[--f][0]="PARAM_END";a=c[--f];)switch(a[0]){case ")":b.push(a);break;case "(":case "CALL_START":if(b.length)b.pop();else return"("===a[0]&&(a[0]="PARAM_START"),this}return this};a.prototype.closeIndentation=function(){return this.outdentToken(this.indent)};a.prototype.matchWithInterpolations=function(b,c){var f,h;var n=[];var k=c.length;if(this.chunk.slice(0,k)!==
c)return null;for(h=this.chunk.slice(k);;){var q=b.exec(h)[0];this.validateEscapes(q,{isRegex:"/"===c.charAt(0),offsetInChunk:k});n.push(this.makeToken("NEOSTRING",q,k));h=h.slice(q.length);k+=q.length;if("#{"!==h.slice(0,2))break;var e=this.getLineAndColumnFromChunk(k+1);q=e[0];e=e[1];e=(new a).tokenize(h.slice(1),{line:q,column:e,untilBalanced:!0});q=e.tokens;var p=e.index;p+=1;var x=q[0];e=q[q.length-1];x[0]=x[1]="(";e[0]=e[1]=")";e.origin=["","end of interpolation",e[2]];"TERMINATOR"===(null!=
(f=q[1])?f[0]:void 0)&&q.splice(1,1);n.push(["TOKENS",q]);h=h.slice(p);k+=p}h.slice(0,c.length)!==c&&this.error("missing "+c,{length:c.length});b=n[0];f=n[n.length-1];b[2].first_column-=c.length;"\n"===f[1].substr(-1)?(f[2].last_line+=1,f[2].last_column=c.length-1):f[2].last_column+=c.length;0===f[1].length&&--f[2].last_column;return{tokens:n,index:k+c.length}};a.prototype.mergeInterpolationTokens=function(a,b,c){var f,h,n,k;1<a.length&&(n=this.token("STRING_START","(",0,0));var q=this.tokens.length;
var e=f=0;for(h=a.length;f<h;e=++f){var p=a[e];var x=p[0];var w=p[1];switch(x){case "TOKENS":if(2===w.length)continue;var t=w[0];var Ia=w;break;case "NEOSTRING":x=c.call(this,p[1],e);if(0===x.length)if(0===e)var m=this.tokens.length;else continue;2===e&&null!=m&&this.tokens.splice(m,2);p[0]="STRING";p[1]=this.makeDelimitedLiteral(x,b);t=p;Ia=[p]}this.tokens.length>q&&(e=this.token("+","+"),e[2]={first_line:t[2].first_line,first_column:t[2].first_column,last_line:t[2].first_line,last_column:t[2].first_column});
(k=this.tokens).push.apply(k,Ia)}if(n)return a=a[a.length-1],n.origin=["STRING",null,{first_line:n[2].first_line,first_column:n[2].first_column,last_line:a[2].last_line,last_column:a[2].last_column}],n=this.token("STRING_END",")"),n[2]={first_line:a[2].last_line,first_column:a[2].last_column,last_line:a[2].last_line,last_column:a[2].last_column}};a.prototype.pair=function(a){var b=this.ends;b=b[b.length-1];return a!==(b=null!=b?b.tag:void 0)?("OUTDENT"!==b&&this.error("unmatched "+a),b=this.indents,
b=b[b.length-1],this.outdentToken(b,!0),this.pair(a)):this.ends.pop()};a.prototype.getLineAndColumnFromChunk=function(a){if(0===a)return[this.chunkLine,this.chunkColumn];var b=a>=this.chunk.length?this.chunk:this.chunk.slice(0,+(a-1)+1||9E9);a=f(b,"\n");var c=this.chunkColumn;0<a?(c=b.split("\n"),c=c[c.length-1],c=c.length):c+=b.length;return[this.chunkLine+a,c]};a.prototype.makeToken=function(a,b,c,f){null==c&&(c=0);null==f&&(f=b.length);var h={};var n=this.getLineAndColumnFromChunk(c);h.first_line=
n[0];h.first_column=n[1];c=this.getLineAndColumnFromChunk(c+(0<f?f-1:0));h.last_line=c[0];h.last_column=c[1];return[a,b,h]};a.prototype.token=function(a,b,c,f,h){a=this.makeToken(a,b,c,f);h&&(a.origin=h);this.tokens.push(a);return a};a.prototype.tag=function(){var a=this.tokens;a=a[a.length-1];return null!=a?a[0]:void 0};a.prototype.value=function(){var a=this.tokens;a=a[a.length-1];return null!=a?a[1]:void 0};a.prototype.unfinished=function(){var a;return R.test(this.chunk)||(a=this.tag(),0<=r.call(xa,
a))};a.prototype.formatString=function(a,b){return this.replaceUnicodeCodePointEscapes(a.replace(V,"$1"),b)};a.prototype.formatHeregex=function(a){return this.formatRegex(a.replace(C,"$1$2"),{delimiter:"///"})};a.prototype.formatRegex=function(a,b){return this.replaceUnicodeCodePointEscapes(a,b)};a.prototype.unicodeCodePointToUnicodeEscapes=function(a){var b=function(a){a=a.toString(16);return"\\u"+k("0",4-a.length)+a};if(65536>a)return b(a);var c=Math.floor((a-65536)/1024)+55296;a=(a-65536)%1024+
56320;return""+b(c)+b(a)};a.prototype.replaceUnicodeCodePointEscapes=function(a,b){return a.replace(ta,function(a){return function(c,f,h,n){if(f)return f;c=parseInt(h,16);1114111<c&&a.error("unicode code point escapes greater than \\u{10ffff} are not allowed",{offset:n+b.delimiter.length,length:h.length+4});return a.unicodeCodePointToUnicodeEscapes(c)}}(this))};a.prototype.validateEscapes=function(a,b){var c,f;null==b&&(b={});if(c=(b.isRegex?ya:M).exec(a)){c[0];a=c[1];var h=c[2];var n=c[3];var k=
c[4];var e=c[5];n="\\"+(h||n||k||e);return this.error((h?"octal escape sequences are not allowed":"invalid escape sequence")+" "+n,{offset:(null!=(f=b.offsetInChunk)?f:0)+c.index+a.length,length:n.length})}};a.prototype.makeDelimitedLiteral=function(a,b){null==b&&(b={});""===a&&"/"===b.delimiter&&(a="(?:)");a=a.replace(RegExp("(\\\\\\\\)|(\\\\0(?\x3d[1-7]))|\\\\?("+b.delimiter+")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)","g"),function(a,c,f,h,n,k,e,q,p){switch(!1){case !c:return b.double?
c+c:c;case !f:return"\\x00";case !h:return"\\"+h;case !n:return"\\n";case !k:return"\\r";case !e:return"\\u2028";case !q:return"\\u2029";case !p:return b.double?"\\"+p:p}});return""+b.delimiter+a+b.delimiter};a.prototype.error=function(a,b){var c,f,h,n,k;null==b&&(b={});b="first_line"in b?b:(n=this.getLineAndColumnFromChunk(null!=(h=b.offset)?h:0),f=n[0],c=n[1],n,{first_line:f,first_column:c,last_column:c+(null!=(k=b.length)?k:1)-1});return p(a,b)};return a}();var z=function(a,b){null==b&&(b=a);switch(!1){case 0>
r.call(x.call(J).concat(x.call(F)),a):return"keyword '"+b+"' can't be assigned";case 0>r.call(O,a):return"'"+b+"' can't be assigned";case 0>r.call(G,a):return"reserved word '"+b+"' can't be assigned";default:return!1}};e.isUnassignable=z;var I=function(a){var b;return"IDENTIFIER"===a[0]?("from"===a[1]&&(a[1][0]="IDENTIFIER",!0),!0):"FOR"===a[0]?!1:"{"===(b=a[1])||"["===b||","===b||":"===b?!1:!0};var J="true false null this new delete typeof in instanceof return throw break continue debugger yield if else switch for while do try catch finally class extends super import export default".split(" ");
var F="undefined Infinity NaN then unless until loop of by when".split(" ");var N={and:"\x26\x26",or:"||",is:"\x3d\x3d",isnt:"!\x3d",not:"!",yes:"true",no:"false",on:"true",off:"false"};var y=function(){var a=[];for(ra in N)a.push(ra);return a}();F=F.concat(y);var G="case function var void with const let enum native implements interface package private protected public static".split(" ");var O=["arguments","eval"];e.JS_FORBIDDEN=J.concat(G).concat(O);var Q=65279;var B=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/;
var n=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i;var c=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/;var w=/^[^\n\S]+/;var q=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/;var h=/^[-=]>/;var K=/^(?:\n[^\n\S]*)+/;var P=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/;var L=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/;var U=/^(?:'''|"""|'|")/;var W=/^(?:[^\\']|\\[\s\S])*/;var H=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/;var Z=/^(?:[^\\']|\\[\s\S]|'(?!''))*/;var T=
/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/;var V=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g;var D=/\s*\n\s*/g;var A=/\n+([^\n\S]*)(?=\S)/g;var ic=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/;var E=/^\w*/;var aa=/^(?!.*(.).*\1)[imguy]*$/;var ba=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/;var C=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g;var S=/^(\/|\/{3}\s*)(\*)/;var v=/^\/=?\s/;var X=/\*\//;var R=/^\s*(?:,|\??\.(?![.\d])|::)/;var M=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/;
var ya=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/;var ta=/(\\\\)|\\u\{([\da-fA-F]+)\}/g;var Aa=/^[^\n\S]*\n/;var ma=/\n[^\n\S]*$/;var Y=/\s+$/;var ea="-\x3d +\x3d /\x3d *\x3d %\x3d ||\x3d \x26\x26\x3d ?\x3d \x3c\x3c\x3d \x3e\x3e\x3d \x3e\x3e\x3e\x3d \x26\x3d ^\x3d |\x3d **\x3d //\x3d %%\x3d".split(" ");var ia=["NEW","TYPEOF","DELETE","DO"];var fa=["!","~"];var ja=["\x3c\x3c","\x3e\x3e","\x3e\x3e\x3e"];var la="\x3d\x3d !\x3d \x3c \x3e \x3c\x3d \x3e\x3d".split(" ");
var pa=["*","/","%","//","%%"];var qa=["IN","OF","INSTANCEOF"];var ha="IDENTIFIER PROPERTY ) ] ? @ THIS SUPER".split(" ");var ka=ha.concat("NUMBER INFINITY NAN STRING STRING_END REGEX REGEX_END BOOL NULL UNDEFINED } ::".split(" "));var oa=ka.concat(["++","--"]);var sa=["INDENT","OUTDENT","TERMINATOR"];var ca=[")","}","]"];var xa="\\ . ?. ?:: UNARY MATH UNARY_MATH + - ** SHIFT RELATION COMPARE \x26 ^ | \x26\x26 || BIN? THROW EXTENDS".split(" ")}).call(this);return e}();u["./parser"]=function(){var e=
{},ra={exports:e},r=function(){function e(){this.yy={}}var a=function(a,l,m,d){m=m||{};for(d=a.length;d--;m[a[d]]=l);return m},b=[1,22],u=[1,25],f=[1,83],k=[1,79],t=[1,84],p=[1,85],z=[1,81],I=[1,82],J=[1,56],F=[1,58],N=[1,59],y=[1,60],G=[1,61],O=[1,62],Q=[1,49],B=[1,50],n=[1,32],c=[1,68],w=[1,69],q=[1,78],h=[1,47],K=[1,51],P=[1,52],L=[1,67],U=[1,65],W=[1,66],H=[1,64],Z=[1,42],T=[1,48],V=[1,63],D=[1,73],A=[1,74],r=[1,75],E=[1,76],aa=[1,46],ba=[1,72],C=[1,34],S=[1,35],v=[1,36],X=[1,37],R=[1,38],M=[1,
39],ra=[1,86],ta=[1,6,32,42,131],Aa=[1,101],ma=[1,89],Y=[1,88],ea=[1,87],ia=[1,90],fa=[1,91],ja=[1,92],la=[1,93],pa=[1,94],qa=[1,95],ha=[1,96],ka=[1,97],oa=[1,98],sa=[1,99],ca=[1,100],ya=[1,104],na=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Da=[2,168],va=[1,110],xa=[1,111],Ha=[1,112],Ka=[1,113],Fa=[1,115],Ra=[1,116],La=[1,109],Ga=[1,6,32,42,131,133,135,139,156],Wa=[2,27],da=[1,123],Za=[1,121],Ea=[1,6,31,32,40,41,42,
66,71,74,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Ia=[2,95],m=[1,6,31,32,42,46,66,71,74,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],l=[2,74],d=[1,128],Ca=[1,133],Ja=[1,134],ua=[1,136],Na=[1,6,31,32,40,41,42,55,66,71,74,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,
171,172,173,174],wa=[2,92],Gb=[1,6,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],$a=[2,64],Hb=[1,161],Ib=[1,167],ab=[1,179],Va=[1,181],Jb=[1,176],Qa=[1,183],ub=[1,185],Oa=[1,6,31,32,40,41,42,55,66,71,74,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],Kb=[2,111],Lb=[1,6,31,32,40,41,42,58,66,71,74,82,83,84,85,87,89,90,94,113,114,115,
120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Mb=[1,6,31,32,40,41,42,46,58,66,71,74,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Nb=[40,41,114],Ob=[1,242],vb=[1,241],Pa=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156],Ma=[2,72],Pb=[1,251],Ua=[6,31,32,66,71],hb=[6,31,32,55,66,71,74],bb=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,
156,159,160,164,166,167,168,169,170,171,172,173,174],Qb=[40,41,82,83,84,85,87,90,113,114],ib=[1,270],cb=[2,62],jb=[1,281],Xa=[1,283],wb=[1,288],db=[1,290],Rb=[2,189],xb=[1,6,31,32,40,41,42,55,66,71,74,82,83,84,85,87,89,90,94,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],kb=[1,300],Sa=[6,31,32,71,115,120],Sb=[1,6,31,32,40,41,42,55,58,66,71,74,82,83,84,85,87,89,90,94,96,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,
159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],Tb=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,140,156],Ya=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,134,140,156],lb=[146,147,148],mb=[71,146,147,148],nb=[6,31,94],Ub=[1,314],Ba=[6,31,32,71,94],Vb=[6,31,32,58,71,94],yb=[6,31,32,55,58,71,94],Wb=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,159,160,166,167,168,169,170,171,172,173,174],Xb=[12,28,34,38,40,41,44,45,48,49,50,51,52,53,61,63,64,68,69,89,92,95,
97,105,112,117,118,119,125,129,130,133,135,137,139,149,155,157,158,159,160,161,162],Yb=[2,178],Ta=[6,31,32],eb=[2,73],Zb=[1,326],$b=[1,327],ac=[1,6,31,32,42,66,71,74,89,94,115,120,122,127,128,131,133,134,135,139,140,151,153,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],ob=[32,151,153],bc=[1,6,32,42,66,71,74,89,94,115,120,122,131,134,140,156],pb=[1,354],zb=[1,360],Ab=[1,6,32,42,131,156],fb=[2,87],qb=[1,372],rb=[1,373],cc=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,
151,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],Bb=[1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,135,139,140,156],dc=[1,386],ec=[1,387],Cb=[6,31,32,94],fc=[6,31,32,71],Db=[1,6,31,32,42,66,71,74,89,94,115,120,122,127,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],gc=[31,71],sb=[1,413],tb=[1,414],Eb=[1,420],Fb=[1,421],hc={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,YieldReturn:9,Return:10,
Comment:11,STATEMENT:12,Import:13,Export:14,Value:15,Invocation:16,Code:17,Operation:18,Assign:19,If:20,Try:21,While:22,For:23,Switch:24,Class:25,Throw:26,Yield:27,YIELD:28,FROM:29,Block:30,INDENT:31,OUTDENT:32,Identifier:33,IDENTIFIER:34,Property:35,PROPERTY:36,AlphaNumeric:37,NUMBER:38,String:39,STRING:40,STRING_START:41,STRING_END:42,Regex:43,REGEX:44,REGEX_START:45,REGEX_END:46,Literal:47,JS:48,UNDEFINED:49,NULL:50,BOOL:51,INFINITY:52,NAN:53,Assignable:54,"\x3d":55,AssignObj:56,ObjAssignable:57,
":":58,SimpleObjAssignable:59,ThisProperty:60,RETURN:61,Object:62,HERECOMMENT:63,PARAM_START:64,ParamList:65,PARAM_END:66,FuncGlyph:67,"-\x3e":68,"\x3d\x3e":69,OptComma:70,",":71,Param:72,ParamVar:73,"...":74,Array:75,Splat:76,SimpleAssignable:77,Accessor:78,Parenthetical:79,Range:80,This:81,".":82,"?.":83,"::":84,"?::":85,Index:86,INDEX_START:87,IndexValue:88,INDEX_END:89,INDEX_SOAK:90,Slice:91,"{":92,AssignList:93,"}":94,CLASS:95,EXTENDS:96,IMPORT:97,ImportDefaultSpecifier:98,ImportNamespaceSpecifier:99,
ImportSpecifierList:100,ImportSpecifier:101,AS:102,DEFAULT:103,IMPORT_ALL:104,EXPORT:105,ExportSpecifierList:106,EXPORT_ALL:107,ExportSpecifier:108,OptFuncExist:109,Arguments:110,Super:111,SUPER:112,FUNC_EXIST:113,CALL_START:114,CALL_END:115,ArgList:116,THIS:117,"@":118,"[":119,"]":120,RangeDots:121,"..":122,Arg:123,SimpleArgs:124,TRY:125,Catch:126,FINALLY:127,CATCH:128,THROW:129,"(":130,")":131,WhileSource:132,WHILE:133,WHEN:134,UNTIL:135,Loop:136,LOOP:137,ForBody:138,FOR:139,BY:140,ForStart:141,
ForSource:142,ForVariables:143,OWN:144,ForValue:145,FORIN:146,FOROF:147,FORFROM:148,SWITCH:149,Whens:150,ELSE:151,When:152,LEADING_WHEN:153,IfBlock:154,IF:155,POST_IF:156,UNARY:157,UNARY_MATH:158,"-":159,"+":160,"--":161,"++":162,"?":163,MATH:164,"**":165,SHIFT:166,COMPARE:167,"\x26":168,"^":169,"|":170,"\x26\x26":171,"||":172,"BIN?":173,RELATION:174,COMPOUND_ASSIGN:175,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",12:"STATEMENT",28:"YIELD",29:"FROM",31:"INDENT",32:"OUTDENT",34:"IDENTIFIER",
36:"PROPERTY",38:"NUMBER",40:"STRING",41:"STRING_START",42:"STRING_END",44:"REGEX",45:"REGEX_START",46:"REGEX_END",48:"JS",49:"UNDEFINED",50:"NULL",51:"BOOL",52:"INFINITY",53:"NAN",55:"\x3d",58:":",61:"RETURN",63:"HERECOMMENT",64:"PARAM_START",66:"PARAM_END",68:"-\x3e",69:"\x3d\x3e",71:",",74:"...",82:".",83:"?.",84:"::",85:"?::",87:"INDEX_START",89:"INDEX_END",90:"INDEX_SOAK",92:"{",94:"}",95:"CLASS",96:"EXTENDS",97:"IMPORT",102:"AS",103:"DEFAULT",104:"IMPORT_ALL",105:"EXPORT",107:"EXPORT_ALL",112:"SUPER",
113:"FUNC_EXIST",114:"CALL_START",115:"CALL_END",117:"THIS",118:"@",119:"[",120:"]",122:"..",125:"TRY",127:"FINALLY",128:"CATCH",129:"THROW",130:"(",131:")",133:"WHILE",134:"WHEN",135:"UNTIL",137:"LOOP",139:"FOR",140:"BY",144:"OWN",146:"FORIN",147:"FOROF",148:"FORFROM",149:"SWITCH",151:"ELSE",153:"LEADING_WHEN",155:"IF",156:"POST_IF",157:"UNARY",158:"UNARY_MATH",159:"-",160:"+",161:"--",162:"++",163:"?",164:"MATH",165:"**",166:"SHIFT",167:"COMPARE",168:"\x26",169:"^",170:"|",171:"\x26\x26",172:"||",
173:"BIN?",174:"RELATION",175:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[8,1],[8,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[27,1],[27,2],[27,3],[30,2],[30,3],[33,1],[35,1],[37,1],[37,1],[39,1],[39,3],[43,1],[43,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[19,3],[19,4],[19,5],[56,1],[56,3],[56,5],[56,3],[56,5],[56,1],[59,1],[59,1],[59,1],[57,1],[57,1],[10,2],[10,4],[10,1],[9,3],[9,2],[11,
1],[17,5],[17,2],[67,1],[67,1],[70,0],[70,1],[65,0],[65,1],[65,3],[65,4],[65,6],[72,1],[72,2],[72,3],[72,1],[73,1],[73,1],[73,1],[73,1],[76,2],[77,1],[77,2],[77,2],[77,1],[54,1],[54,1],[54,1],[15,1],[15,1],[15,1],[15,1],[15,1],[78,2],[78,2],[78,2],[78,2],[78,1],[78,1],[86,3],[86,2],[88,1],[88,1],[62,4],[93,0],[93,1],[93,3],[93,4],[93,6],[25,1],[25,2],[25,3],[25,4],[25,2],[25,3],[25,4],[25,5],[13,2],[13,4],[13,4],[13,5],[13,7],[13,6],[13,9],[100,1],[100,3],[100,4],[100,4],[100,6],[101,1],[101,3],[101,
1],[101,3],[98,1],[99,3],[14,3],[14,5],[14,2],[14,4],[14,5],[14,6],[14,3],[14,5],[14,4],[14,7],[106,1],[106,3],[106,4],[106,4],[106,6],[108,1],[108,3],[108,3],[108,1],[108,3],[16,3],[16,3],[16,3],[16,1],[111,1],[111,2],[109,0],[109,1],[110,2],[110,4],[81,1],[81,1],[60,2],[75,2],[75,4],[121,1],[121,1],[80,5],[91,3],[91,2],[91,2],[91,1],[116,1],[116,3],[116,4],[116,4],[116,6],[123,1],[123,1],[123,1],[124,1],[124,3],[21,2],[21,3],[21,4],[21,5],[126,3],[126,3],[126,2],[26,2],[79,3],[79,5],[132,2],[132,
4],[132,2],[132,4],[22,2],[22,2],[22,2],[22,1],[136,2],[136,2],[23,2],[23,2],[23,2],[138,2],[138,4],[138,2],[141,2],[141,3],[145,1],[145,1],[145,1],[145,1],[143,1],[143,3],[142,2],[142,2],[142,4],[142,4],[142,4],[142,6],[142,6],[142,2],[142,4],[24,5],[24,7],[24,4],[24,6],[150,1],[150,2],[152,3],[152,4],[154,3],[154,5],[20,1],[20,3],[20,3],[20,3],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,2],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],[18,3],
[18,3],[18,5],[18,4],[18,3]],performAction:function(a,l,m,d,Ca,b,g){a=b.length-1;switch(Ca){case 1:return this.$=d.addLocationDataFn(g[a],g[a])(new d.Block);case 2:return this.$=b[a];case 3:this.$=d.addLocationDataFn(g[a],g[a])(d.Block.wrap([b[a]]));break;case 4:this.$=d.addLocationDataFn(g[a-2],g[a])(b[a-2].push(b[a]));break;case 5:this.$=b[a-1];break;case 6:case 7:case 8:case 9:case 10:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 35:case 40:case 42:case 56:case 57:case 58:case 59:case 60:case 61:case 72:case 73:case 83:case 84:case 85:case 86:case 91:case 92:case 95:case 99:case 105:case 165:case 189:case 190:case 192:case 222:case 223:case 241:case 247:this.$=
b[a];break;case 11:this.$=d.addLocationDataFn(g[a],g[a])(new d.StatementLiteral(b[a]));break;case 27:this.$=d.addLocationDataFn(g[a],g[a])(new d.Op(b[a],new d.Value(new d.Literal(""))));break;case 28:case 251:case 252:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op(b[a-1],b[a]));break;case 29:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Op(b[a-2].concat(b[a-1]),b[a]));break;case 30:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Block);break;case 31:case 106:this.$=d.addLocationDataFn(g[a-2],g[a])(b[a-
1]);break;case 32:this.$=d.addLocationDataFn(g[a],g[a])(new d.IdentifierLiteral(b[a]));break;case 33:this.$=d.addLocationDataFn(g[a],g[a])(new d.PropertyName(b[a]));break;case 34:this.$=d.addLocationDataFn(g[a],g[a])(new d.NumberLiteral(b[a]));break;case 36:this.$=d.addLocationDataFn(g[a],g[a])(new d.StringLiteral(b[a]));break;case 37:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.StringWithInterpolations(b[a-1]));break;case 38:this.$=d.addLocationDataFn(g[a],g[a])(new d.RegexLiteral(b[a]));break;
case 39:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.RegexWithInterpolations(b[a-1].args));break;case 41:this.$=d.addLocationDataFn(g[a],g[a])(new d.PassthroughLiteral(b[a]));break;case 43:this.$=d.addLocationDataFn(g[a],g[a])(new d.UndefinedLiteral);break;case 44:this.$=d.addLocationDataFn(g[a],g[a])(new d.NullLiteral);break;case 45:this.$=d.addLocationDataFn(g[a],g[a])(new d.BooleanLiteral(b[a]));break;case 46:this.$=d.addLocationDataFn(g[a],g[a])(new d.InfinityLiteral(b[a]));break;case 47:this.$=
d.addLocationDataFn(g[a],g[a])(new d.NaNLiteral);break;case 48:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Assign(b[a-2],b[a]));break;case 49:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Assign(b[a-3],b[a]));break;case 50:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Assign(b[a-4],b[a-1]));break;case 51:case 88:case 93:case 94:case 96:case 97:case 98:case 224:case 225:this.$=d.addLocationDataFn(g[a],g[a])(new d.Value(b[a]));break;case 52:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Assign(d.addLocationDataFn(g[a-
2])(new d.Value(b[a-2])),b[a],"object",{operatorToken:d.addLocationDataFn(g[a-1])(new d.Literal(b[a-1]))}));break;case 53:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Assign(d.addLocationDataFn(g[a-4])(new d.Value(b[a-4])),b[a-1],"object",{operatorToken:d.addLocationDataFn(g[a-3])(new d.Literal(b[a-3]))}));break;case 54:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Assign(d.addLocationDataFn(g[a-2])(new d.Value(b[a-2])),b[a],null,{operatorToken:d.addLocationDataFn(g[a-1])(new d.Literal(b[a-1]))}));
break;case 55:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Assign(d.addLocationDataFn(g[a-4])(new d.Value(b[a-4])),b[a-1],null,{operatorToken:d.addLocationDataFn(g[a-3])(new d.Literal(b[a-3]))}));break;case 62:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Return(b[a]));break;case 63:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Return(new d.Value(b[a-1])));break;case 64:this.$=d.addLocationDataFn(g[a],g[a])(new d.Return);break;case 65:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.YieldReturn(b[a]));
break;case 66:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.YieldReturn);break;case 67:this.$=d.addLocationDataFn(g[a],g[a])(new d.Comment(b[a]));break;case 68:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Code(b[a-3],b[a],b[a-1]));break;case 69:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Code([],b[a],b[a-1]));break;case 70:this.$=d.addLocationDataFn(g[a],g[a])("func");break;case 71:this.$=d.addLocationDataFn(g[a],g[a])("boundfunc");break;case 74:case 111:this.$=d.addLocationDataFn(g[a],g[a])([]);
break;case 75:case 112:case 131:case 152:case 184:case 226:this.$=d.addLocationDataFn(g[a],g[a])([b[a]]);break;case 76:case 113:case 132:case 153:case 185:this.$=d.addLocationDataFn(g[a-2],g[a])(b[a-2].concat(b[a]));break;case 77:case 114:case 133:case 154:case 186:this.$=d.addLocationDataFn(g[a-3],g[a])(b[a-3].concat(b[a]));break;case 78:case 115:case 135:case 156:case 188:this.$=d.addLocationDataFn(g[a-5],g[a])(b[a-5].concat(b[a-2]));break;case 79:this.$=d.addLocationDataFn(g[a],g[a])(new d.Param(b[a]));
break;case 80:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Param(b[a-1],null,!0));break;case 81:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Param(b[a-2],b[a]));break;case 82:case 191:this.$=d.addLocationDataFn(g[a],g[a])(new d.Expansion);break;case 87:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Splat(b[a-1]));break;case 89:this.$=d.addLocationDataFn(g[a-1],g[a])(b[a-1].add(b[a]));break;case 90:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Value(b[a-1],[].concat(b[a])));break;case 100:this.$=
d.addLocationDataFn(g[a-1],g[a])(new d.Access(b[a]));break;case 101:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Access(b[a],"soak"));break;case 102:this.$=d.addLocationDataFn(g[a-1],g[a])([d.addLocationDataFn(g[a-1])(new d.Access(new d.PropertyName("prototype"))),d.addLocationDataFn(g[a])(new d.Access(b[a]))]);break;case 103:this.$=d.addLocationDataFn(g[a-1],g[a])([d.addLocationDataFn(g[a-1])(new d.Access(new d.PropertyName("prototype"),"soak")),d.addLocationDataFn(g[a])(new d.Access(b[a]))]);break;
case 104:this.$=d.addLocationDataFn(g[a],g[a])(new d.Access(new d.PropertyName("prototype")));break;case 107:this.$=d.addLocationDataFn(g[a-1],g[a])(d.extend(b[a],{soak:!0}));break;case 108:this.$=d.addLocationDataFn(g[a],g[a])(new d.Index(b[a]));break;case 109:this.$=d.addLocationDataFn(g[a],g[a])(new d.Slice(b[a]));break;case 110:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Obj(b[a-2],b[a-3].generated));break;case 116:this.$=d.addLocationDataFn(g[a],g[a])(new d.Class);break;case 117:this.$=d.addLocationDataFn(g[a-
1],g[a])(new d.Class(null,null,b[a]));break;case 118:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Class(null,b[a]));break;case 119:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Class(null,b[a-1],b[a]));break;case 120:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Class(b[a]));break;case 121:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Class(b[a-1],null,b[a]));break;case 122:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Class(b[a-2],b[a]));break;case 123:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Class(b[a-
3],b[a-1],b[a]));break;case 124:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.ImportDeclaration(null,b[a]));break;case 125:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.ImportDeclaration(new d.ImportClause(b[a-2],null),b[a]));break;case 126:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.ImportDeclaration(new d.ImportClause(null,b[a-2]),b[a]));break;case 127:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.ImportDeclaration(new d.ImportClause(null,new d.ImportSpecifierList([])),b[a]));break;case 128:this.$=
d.addLocationDataFn(g[a-6],g[a])(new d.ImportDeclaration(new d.ImportClause(null,new d.ImportSpecifierList(b[a-4])),b[a]));break;case 129:this.$=d.addLocationDataFn(g[a-5],g[a])(new d.ImportDeclaration(new d.ImportClause(b[a-4],b[a-2]),b[a]));break;case 130:this.$=d.addLocationDataFn(g[a-8],g[a])(new d.ImportDeclaration(new d.ImportClause(b[a-7],new d.ImportSpecifierList(b[a-4])),b[a]));break;case 134:case 155:case 171:case 187:this.$=d.addLocationDataFn(g[a-3],g[a])(b[a-2]);break;case 136:this.$=
d.addLocationDataFn(g[a],g[a])(new d.ImportSpecifier(b[a]));break;case 137:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ImportSpecifier(b[a-2],b[a]));break;case 138:this.$=d.addLocationDataFn(g[a],g[a])(new d.ImportSpecifier(new d.Literal(b[a])));break;case 139:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ImportSpecifier(new d.Literal(b[a-2]),b[a]));break;case 140:this.$=d.addLocationDataFn(g[a],g[a])(new d.ImportDefaultSpecifier(b[a]));break;case 141:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ImportNamespaceSpecifier(new d.Literal(b[a-
2]),b[a]));break;case 142:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ExportNamedDeclaration(new d.ExportSpecifierList([])));break;case 143:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.ExportNamedDeclaration(new d.ExportSpecifierList(b[a-2])));break;case 144:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.ExportNamedDeclaration(b[a]));break;case 145:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.ExportNamedDeclaration(new d.Assign(b[a-2],b[a],null,{moduleDeclaration:"export"})));break;case 146:this.$=
d.addLocationDataFn(g[a-4],g[a])(new d.ExportNamedDeclaration(new d.Assign(b[a-3],b[a],null,{moduleDeclaration:"export"})));break;case 147:this.$=d.addLocationDataFn(g[a-5],g[a])(new d.ExportNamedDeclaration(new d.Assign(b[a-4],b[a-1],null,{moduleDeclaration:"export"})));break;case 148:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ExportDefaultDeclaration(b[a]));break;case 149:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.ExportDefaultDeclaration(new d.Value(b[a-1])));break;case 150:this.$=d.addLocationDataFn(g[a-
3],g[a])(new d.ExportAllDeclaration(new d.Literal(b[a-2]),b[a]));break;case 151:this.$=d.addLocationDataFn(g[a-6],g[a])(new d.ExportNamedDeclaration(new d.ExportSpecifierList(b[a-4]),b[a]));break;case 157:this.$=d.addLocationDataFn(g[a],g[a])(new d.ExportSpecifier(b[a]));break;case 158:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ExportSpecifier(b[a-2],b[a]));break;case 159:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ExportSpecifier(b[a-2],new d.Literal(b[a])));break;case 160:this.$=d.addLocationDataFn(g[a],
g[a])(new d.ExportSpecifier(new d.Literal(b[a])));break;case 161:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.ExportSpecifier(new d.Literal(b[a-2]),b[a]));break;case 162:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.TaggedTemplateCall(b[a-2],b[a],b[a-1]));break;case 163:case 164:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Call(b[a-2],b[a],b[a-1]));break;case 166:this.$=d.addLocationDataFn(g[a],g[a])(new d.SuperCall);break;case 167:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.SuperCall(b[a]));
break;case 168:this.$=d.addLocationDataFn(g[a],g[a])(!1);break;case 169:this.$=d.addLocationDataFn(g[a],g[a])(!0);break;case 170:this.$=d.addLocationDataFn(g[a-1],g[a])([]);break;case 172:case 173:this.$=d.addLocationDataFn(g[a],g[a])(new d.Value(new d.ThisLiteral));break;case 174:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Value(d.addLocationDataFn(g[a-1])(new d.ThisLiteral),[d.addLocationDataFn(g[a])(new d.Access(b[a]))],"this"));break;case 175:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Arr([]));
break;case 176:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Arr(b[a-2]));break;case 177:this.$=d.addLocationDataFn(g[a],g[a])("inclusive");break;case 178:this.$=d.addLocationDataFn(g[a],g[a])("exclusive");break;case 179:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Range(b[a-3],b[a-1],b[a-2]));break;case 180:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Range(b[a-2],b[a],b[a-1]));break;case 181:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Range(b[a-1],null,b[a]));break;case 182:this.$=d.addLocationDataFn(g[a-
1],g[a])(new d.Range(null,b[a],b[a-1]));break;case 183:this.$=d.addLocationDataFn(g[a],g[a])(new d.Range(null,null,b[a]));break;case 193:this.$=d.addLocationDataFn(g[a-2],g[a])([].concat(b[a-2],b[a]));break;case 194:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Try(b[a]));break;case 195:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Try(b[a-1],b[a][0],b[a][1]));break;case 196:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Try(b[a-2],null,null,b[a]));break;case 197:this.$=d.addLocationDataFn(g[a-4],
g[a])(new d.Try(b[a-3],b[a-2][0],b[a-2][1],b[a]));break;case 198:this.$=d.addLocationDataFn(g[a-2],g[a])([b[a-1],b[a]]);break;case 199:this.$=d.addLocationDataFn(g[a-2],g[a])([d.addLocationDataFn(g[a-1])(new d.Value(b[a-1])),b[a]]);break;case 200:this.$=d.addLocationDataFn(g[a-1],g[a])([null,b[a]]);break;case 201:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Throw(b[a]));break;case 202:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Parens(b[a-1]));break;case 203:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Parens(b[a-
2]));break;case 204:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.While(b[a]));break;case 205:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.While(b[a-2],{guard:b[a]}));break;case 206:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.While(b[a],{invert:!0}));break;case 207:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.While(b[a-2],{invert:!0,guard:b[a]}));break;case 208:this.$=d.addLocationDataFn(g[a-1],g[a])(b[a-1].addBody(b[a]));break;case 209:case 210:this.$=d.addLocationDataFn(g[a-1],g[a])(b[a].addBody(d.addLocationDataFn(g[a-
1])(d.Block.wrap([b[a-1]]))));break;case 211:this.$=d.addLocationDataFn(g[a],g[a])(b[a]);break;case 212:this.$=d.addLocationDataFn(g[a-1],g[a])((new d.While(d.addLocationDataFn(g[a-1])(new d.BooleanLiteral("true")))).addBody(b[a]));break;case 213:this.$=d.addLocationDataFn(g[a-1],g[a])((new d.While(d.addLocationDataFn(g[a-1])(new d.BooleanLiteral("true")))).addBody(d.addLocationDataFn(g[a])(d.Block.wrap([b[a]]))));break;case 214:case 215:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.For(b[a-1],b[a]));
break;case 216:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.For(b[a],b[a-1]));break;case 217:this.$=d.addLocationDataFn(g[a-1],g[a])({source:d.addLocationDataFn(g[a])(new d.Value(b[a]))});break;case 218:this.$=d.addLocationDataFn(g[a-3],g[a])({source:d.addLocationDataFn(g[a-2])(new d.Value(b[a-2])),step:b[a]});break;case 219:d=d.addLocationDataFn(g[a-1],g[a]);b[a].own=b[a-1].own;b[a].ownTag=b[a-1].ownTag;b[a].name=b[a-1][0];b[a].index=b[a-1][1];this.$=d(b[a]);break;case 220:this.$=d.addLocationDataFn(g[a-
1],g[a])(b[a]);break;case 221:Ca=d.addLocationDataFn(g[a-2],g[a]);b[a].own=!0;b[a].ownTag=d.addLocationDataFn(g[a-1])(new d.Literal(b[a-1]));this.$=Ca(b[a]);break;case 227:this.$=d.addLocationDataFn(g[a-2],g[a])([b[a-2],b[a]]);break;case 228:this.$=d.addLocationDataFn(g[a-1],g[a])({source:b[a]});break;case 229:this.$=d.addLocationDataFn(g[a-1],g[a])({source:b[a],object:!0});break;case 230:this.$=d.addLocationDataFn(g[a-3],g[a])({source:b[a-2],guard:b[a]});break;case 231:this.$=d.addLocationDataFn(g[a-
3],g[a])({source:b[a-2],guard:b[a],object:!0});break;case 232:this.$=d.addLocationDataFn(g[a-3],g[a])({source:b[a-2],step:b[a]});break;case 233:this.$=d.addLocationDataFn(g[a-5],g[a])({source:b[a-4],guard:b[a-2],step:b[a]});break;case 234:this.$=d.addLocationDataFn(g[a-5],g[a])({source:b[a-4],step:b[a-2],guard:b[a]});break;case 235:this.$=d.addLocationDataFn(g[a-1],g[a])({source:b[a],from:!0});break;case 236:this.$=d.addLocationDataFn(g[a-3],g[a])({source:b[a-2],guard:b[a],from:!0});break;case 237:this.$=
d.addLocationDataFn(g[a-4],g[a])(new d.Switch(b[a-3],b[a-1]));break;case 238:this.$=d.addLocationDataFn(g[a-6],g[a])(new d.Switch(b[a-5],b[a-3],b[a-1]));break;case 239:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Switch(null,b[a-1]));break;case 240:this.$=d.addLocationDataFn(g[a-5],g[a])(new d.Switch(null,b[a-3],b[a-1]));break;case 242:this.$=d.addLocationDataFn(g[a-1],g[a])(b[a-1].concat(b[a]));break;case 243:this.$=d.addLocationDataFn(g[a-2],g[a])([[b[a-1],b[a]]]);break;case 244:this.$=d.addLocationDataFn(g[a-
3],g[a])([[b[a-2],b[a-1]]]);break;case 245:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.If(b[a-1],b[a],{type:b[a-2]}));break;case 246:this.$=d.addLocationDataFn(g[a-4],g[a])(b[a-4].addElse(d.addLocationDataFn(g[a-2],g[a])(new d.If(b[a-1],b[a],{type:b[a-2]}))));break;case 248:this.$=d.addLocationDataFn(g[a-2],g[a])(b[a-2].addElse(b[a]));break;case 249:case 250:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.If(b[a],d.addLocationDataFn(g[a-2])(d.Block.wrap([b[a-2]])),{type:b[a-1],statement:!0}));break;
case 253:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("-",b[a]));break;case 254:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("+",b[a]));break;case 255:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("--",b[a]));break;case 256:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("++",b[a]));break;case 257:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("--",b[a-1],null,!0));break;case 258:this.$=d.addLocationDataFn(g[a-1],g[a])(new d.Op("++",b[a-1],null,!0));break;case 259:this.$=d.addLocationDataFn(g[a-
1],g[a])(new d.Existence(b[a-1]));break;case 260:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Op("+",b[a-2],b[a]));break;case 261:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Op("-",b[a-2],b[a]));break;case 262:case 263:case 264:case 265:case 266:case 267:case 268:case 269:case 270:case 271:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Op(b[a-1],b[a-2],b[a]));break;case 272:g=d.addLocationDataFn(g[a-2],g[a]);b="!"===b[a-1].charAt(0)?(new d.Op(b[a-1].slice(1),b[a-2],b[a])).invert():new d.Op(b[a-
1],b[a-2],b[a]);this.$=g(b);break;case 273:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Assign(b[a-2],b[a],b[a-1]));break;case 274:this.$=d.addLocationDataFn(g[a-4],g[a])(new d.Assign(b[a-4],b[a-1],b[a-3]));break;case 275:this.$=d.addLocationDataFn(g[a-3],g[a])(new d.Assign(b[a-3],b[a],b[a-2]));break;case 276:this.$=d.addLocationDataFn(g[a-2],g[a])(new d.Extends(b[a-2],b[a]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,
24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{1:[3]},{1:[2,2],6:ra},a(ta,[2,3]),a(ta,[2,6],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,
166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(ta,[2,7],{141:77,132:105,138:106,133:D,135:A,139:E,156:ya}),a(ta,[2,8]),a(na,[2,14],{109:107,78:108,86:114,40:Da,41:Da,114:Da,82:va,83:xa,84:Ha,85:Ka,87:Fa,90:Ra,113:La}),a(na,[2,15],{86:114,109:117,78:118,82:va,83:xa,84:Ha,85:Ka,87:Fa,90:Ra,113:La,114:Da}),a(na,[2,16]),a(na,[2,17]),a(na,[2,18]),a(na,[2,19]),a(na,[2,20]),a(na,[2,21]),a(na,[2,22]),a(na,[2,23]),a(na,[2,24]),a(na,[2,25]),a(na,[2,26]),a(Ga,[2,9]),a(Ga,[2,10]),a(Ga,[2,
11]),a(Ga,[2,12]),a(Ga,[2,13]),a([1,6,32,42,131,133,135,139,156,163,164,165,166,167,168,169,170,171,172,173,174],Wa,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,8:122,12:b,28:da,29:Za,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:[1,119],63:B,64:n,68:c,69:w,92:q,95:h,97:K,105:P,112:L,117:U,118:W,
119:H,125:Z,129:T,130:V,137:r,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,162:M}),a(Ea,Ia,{55:[1,124]}),a(Ea,[2,96]),a(Ea,[2,97]),a(Ea,[2,98]),a(Ea,[2,99]),a(m,[2,165]),a([6,31,66,71],l,{65:125,72:126,73:127,33:129,60:130,75:131,62:132,34:f,74:d,92:q,118:Ca,119:Ja}),{30:135,31:ua},{7:137,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,
60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:138,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,
68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:139,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,
81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:140,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,
112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{15:142,16:143,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:144,60:71,62:54,75:53,77:141,79:28,80:29,81:30,92:q,111:31,112:L,117:U,118:W,119:H,130:V},{15:142,16:143,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:144,60:71,62:54,75:53,77:145,79:28,80:29,81:30,
92:q,111:31,112:L,117:U,118:W,119:H,130:V},a(Na,wa,{96:[1,149],161:[1,146],162:[1,147],175:[1,148]}),a(na,[2,247],{151:[1,150]}),{30:151,31:ua},{30:152,31:ua},a(na,[2,211]),{30:153,31:ua},{7:154,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,155],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,
97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Gb,[2,116],{47:27,79:28,80:29,81:30,111:31,75:53,62:54,37:55,43:57,33:70,60:71,39:80,15:142,16:143,54:144,30:156,77:158,31:ua,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,92:q,96:[1,157],112:L,117:U,118:W,119:H,130:V}),{7:159,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,
25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Ga,$a,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,
81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,7:160,12:b,28:da,31:Hb,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:Q,63:B,64:n,68:c,69:w,92:q,95:h,97:K,105:P,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,137:r,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,162:M}),a([1,6,31,32,42,71,94,131,133,135,139,156],[2,67]),{33:166,34:f,39:162,40:t,41:p,92:[1,165],98:163,99:164,104:Ib},{25:169,33:170,34:f,92:[1,168],95:h,103:[1,171],107:[1,
172]},a(Na,[2,93]),a(Na,[2,94]),a(Ea,[2,40]),a(Ea,[2,41]),a(Ea,[2,42]),a(Ea,[2,43]),a(Ea,[2,44]),a(Ea,[2,45]),a(Ea,[2,46]),a(Ea,[2,47]),{4:173,5:3,7:4,8:5,9:6,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,31:[1,174],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,
129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:175,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:ab,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,75:53,76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,116:177,117:U,118:W,119:H,120:Jb,123:178,
125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Ea,[2,172]),a(Ea,[2,173],{35:182,36:Qa}),a([1,6,31,32,42,46,66,71,74,82,83,84,85,87,89,90,94,113,115,120,122,131,133,134,135,139,140,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,166],{110:184,114:ub}),{31:[2,70]},{31:[2,71]},a(Oa,[2,88]),a(Oa,[2,91]),{7:186,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,
26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:187,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,
37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:188,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,
44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:190,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,30:189,31:ua,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,
48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{33:195,34:f,60:196,62:198,75:197,80:191,92:q,118:Ca,119:H,143:192,144:[1,193],145:194},{142:199,146:[1,200],147:[1,201],148:[1,202]},a([6,31,71,94],Kb,{39:80,93:203,56:204,57:205,59:206,11:207,37:208,33:209,35:210,
60:211,34:f,36:Qa,38:k,40:t,41:p,63:B,118:Ca}),a(Lb,[2,34]),a(Lb,[2,35]),a(Ea,[2,38]),{15:142,16:212,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:144,60:71,62:54,75:53,77:213,79:28,80:29,81:30,92:q,111:31,112:L,117:U,118:W,119:H,130:V},a([1,6,29,31,32,40,41,42,55,58,66,71,74,82,83,84,85,87,89,90,94,96,102,113,114,115,120,122,131,133,134,135,139,140,146,147,148,156,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175],[2,32]),a(Mb,[2,36]),
{4:214,5:3,7:4,8:5,9:6,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(ta,[2,5],{7:4,8:5,
9:6,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,141:77,39:80,5:215,12:b,28:u,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:Q,63:B,64:n,68:c,69:w,92:q,95:h,97:K,105:P,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,133:D,135:A,137:r,139:E,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,162:M}),a(na,[2,259]),{7:216,8:122,10:20,
11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:217,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,
17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:218,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,
22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:219,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,
27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:220,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,
38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:221,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,
45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:222,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,
52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:223,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,
63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:224,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,
77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:225,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,
95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:226,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,
117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:227,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,
130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:228,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,
137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:229,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,
154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(na,[2,210]),a(na,[2,215]),{7:230,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,
155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(na,[2,209]),a(na,[2,214]),{39:231,40:t,41:p,110:232,114:ub},a(Oa,[2,89]),a(Nb,[2,169]),{35:233,36:Qa},{35:234,36:Qa},a(Oa,[2,104],{35:235,36:Qa}),{35:236,36:Qa},a(Oa,[2,105]),{7:238,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Ob,75:53,77:40,
79:28,80:29,81:30,88:237,91:239,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,121:240,122:vb,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{86:243,87:Fa,90:Ra},{110:244,114:ub},a(Oa,[2,90]),a(ta,[2,66],{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,
141:77,39:80,8:122,7:245,12:b,28:da,31:Hb,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:Q,63:B,64:n,68:c,69:w,92:q,95:h,97:K,105:P,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,133:$a,135:$a,139:$a,156:$a,137:r,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,162:M}),a(Pa,[2,28],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{7:246,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,
24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{132:105,133:D,135:A,138:106,139:E,141:77,156:ya},a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,163,
164,165,166,167,168,169,170,171,172,173,174],Wa,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,141:77,39:80,7:120,8:122,12:b,28:da,29:Za,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:Q,63:B,64:n,68:c,69:w,92:q,95:h,97:K,105:P,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,137:r,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,
162:M}),{6:[1,248],7:247,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,249],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},
a([6,31],Ma,{70:252,66:[1,250],71:Pb}),a(Ua,[2,75]),a(Ua,[2,79],{55:[1,254],74:[1,253]}),a(Ua,[2,82]),a(hb,[2,83]),a(hb,[2,84]),a(hb,[2,85]),a(hb,[2,86]),{35:182,36:Qa},{7:255,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:ab,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,75:53,76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,
111:31,112:L,116:177,117:U,118:W,119:H,120:Jb,123:178,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(na,[2,69]),{4:257,5:3,7:4,8:5,9:6,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,32:[1,256],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,
81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,159,160,164,165,166,167,168,169,170,171,172,173,174],[2,251],{141:77,132:102,138:103,163:ea}),a(bb,[2,252],{141:77,132:102,138:103,163:ea,165:fa}),a(bb,[2,253],{141:77,132:102,138:103,163:ea,165:fa}),a(bb,[2,254],{141:77,132:102,138:103,163:ea,
165:fa}),a(na,[2,255],{40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa}),a(Nb,Da,{109:107,78:108,86:114,82:va,83:xa,84:Ha,85:Ka,87:Fa,90:Ra,113:La}),{78:118,82:va,83:xa,84:Ha,85:Ka,86:114,87:Fa,90:Ra,109:117,113:La,114:Da},a(Qb,Ia),a(na,[2,256],{40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa}),a(na,[2,257]),a(na,[2,258]),{6:[1,260],7:258,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,259],33:70,
34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:261,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,
43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{30:262,31:ua,155:[1,263]},a(na,[2,194],{126:264,127:[1,265],128:[1,266]}),a(na,[2,208]),a(na,[2,216]),{31:[1,267],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,
165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{150:268,152:269,153:ib},a(na,[2,117]),{7:271,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,
138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Gb,[2,120],{30:272,31:ua,40:wa,41:wa,82:wa,83:wa,84:wa,85:wa,87:wa,90:wa,113:wa,114:wa,96:[1,273]}),a(Pa,[2,201],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ga,cb,{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{62:274,92:q},a(Ga,[2,124]),{29:[1,275],71:[1,276]},{29:[1,
277]},{31:jb,33:282,34:f,94:[1,278],100:279,101:280,103:Xa},a([29,71],[2,140]),{102:[1,284]},{31:wb,33:289,34:f,94:[1,285],103:db,106:286,108:287},a(Ga,[2,144]),{55:[1,291]},{7:292,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,293],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,
112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{29:[1,294]},{6:ra,131:[1,295]},{4:296,5:3,7:4,8:5,9:6,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:u,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,
111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a([6,31,71,120],Rb,{141:77,132:102,138:103,121:297,74:[1,298],122:vb,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(xb,[2,175]),a([6,31,120],Ma,{70:299,71:kb}),a(Sa,[2,184]),{7:255,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,
24:16,25:17,26:18,27:19,28:da,31:ab,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,75:53,76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,116:301,117:U,118:W,119:H,123:178,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Sa,[2,190]),a(Sa,[2,191]),a(Sb,[2,174]),a(Sb,[2,33]),a(m,[2,167]),{7:255,8:122,10:20,
11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:ab,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,75:53,76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,115:[1,302],116:303,117:U,118:W,119:H,123:178,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{30:304,
31:ua,132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(Tb,[2,204],{141:77,132:102,138:103,133:D,134:[1,305],135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Tb,[2,206],{141:77,132:102,138:103,133:D,134:[1,306],135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(na,[2,212]),a(Ya,
[2,213],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,156,159,160,163,164,165,166,167,168,169,170,171,172,173,174],[2,217],{140:[1,307]}),a(lb,[2,220]),{33:195,34:f,60:196,62:198,75:197,92:q,118:Ca,119:Ja,143:308,145:194},a(lb,[2,226],{71:[1,309]}),a(mb,[2,222]),a(mb,[2,223]),a(mb,[2,224]),a(mb,[2,225]),a(na,[2,219]),{7:310,8:122,10:20,11:21,
12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:311,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,
18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:312,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,
23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(nb,Ma,{70:313,71:Ub}),a(Ba,[2,112]),a(Ba,[2,51],{58:[1,315]}),a(Vb,[2,60],{55:[1,316]}),a(Ba,[2,56]),a(Vb,[2,61]),
a(yb,[2,57]),a(yb,[2,58]),a(yb,[2,59]),{46:[1,317],78:118,82:va,83:xa,84:Ha,85:Ka,86:114,87:Fa,90:Ra,109:117,113:La,114:Da},a(Qb,wa),{6:ra,42:[1,318]},a(ta,[2,4]),a(Wb,[2,260],{141:77,132:102,138:103,163:ea,164:ia,165:fa}),a(Wb,[2,261],{141:77,132:102,138:103,163:ea,164:ia,165:fa}),a(bb,[2,262],{141:77,132:102,138:103,163:ea,165:fa}),a(bb,[2,263],{141:77,132:102,138:103,163:ea,165:fa}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,166,167,168,169,170,171,172,173,174],[2,264],
{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173],[2,265],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,168,169,170,171,172,173],[2,266],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,169,
170,171,172,173],[2,267],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,170,171,172,173],[2,268],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,171,172,173],[2,269],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,174:ca}),a([1,
6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,172,173],[2,270],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,173],[2,271],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,174:ca}),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,140,156,167,168,169,170,171,172,173,174],[2,272],
{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja}),a(Ya,[2,250],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ya,[2,249],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(m,[2,162]),a(m,[2,163]),a(Oa,[2,100]),a(Oa,[2,101]),a(Oa,[2,102]),a(Oa,[2,103]),{89:[1,319]},{74:Ob,89:[2,108],121:320,122:vb,
132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{89:[2,109]},{7:321,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,89:[2,183],92:q,95:h,97:K,105:P,111:31,112:L,117:U,
118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Xb,[2,177]),a(Xb,Yb),a(Oa,[2,107]),a(m,[2,164]),a(ta,[2,65],{141:77,132:102,138:103,133:cb,135:cb,139:cb,156:cb,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Pa,[2,29],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Pa,[2,48],{141:77,
132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{7:322,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,
137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:323,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,
154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{67:324,68:c,69:w},a(Ta,eb,{73:127,33:129,60:130,75:131,62:132,72:325,34:f,74:d,92:q,118:Ca,119:Ja}),{6:Zb,31:$b},a(Ua,[2,80]),{7:328,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,
117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Sa,Rb,{141:77,132:102,138:103,74:[1,329],133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(ac,[2,30]),{6:ra,32:[1,330]},a(Pa,[2,273],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{7:331,8:122,10:20,11:21,
12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:332,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,
18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Pa,[2,276],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,
169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(na,[2,248]),{7:333,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,
159:v,160:X,161:R,162:M},a(na,[2,195],{127:[1,334]}),{30:335,31:ua},{30:338,31:ua,33:336,34:f,62:337,92:q},{150:339,152:269,153:ib},{32:[1,340],151:[1,341],152:342,153:ib},a(ob,[2,241]),{7:344,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,
112:L,117:U,118:W,119:H,124:343,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(bc,[2,118],{141:77,132:102,138:103,30:345,31:ua,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(na,[2,121]),{7:346,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,
43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{32:[1,347]},{39:348,40:t,41:p},{92:[1,350],99:349,104:Ib},{39:351,40:t,41:p},{29:[1,352]},a(nb,Ma,{70:353,71:pb}),a(Ba,[2,131]),{31:jb,33:282,34:f,100:355,101:280,103:Xa},a(Ba,[2,136],{102:[1,
356]}),a(Ba,[2,138],{102:[1,357]}),{33:358,34:f},a(Ga,[2,142]),a(nb,Ma,{70:359,71:zb}),a(Ba,[2,152]),{31:wb,33:289,34:f,103:db,106:361,108:287},a(Ba,[2,157],{102:[1,362]}),a(Ba,[2,160],{102:[1,363]}),{6:[1,365],7:364,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,366],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,
80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Ab,[2,148],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{62:367,92:q},{39:368,40:t,41:p},a(Ea,[2,202]),{6:ra,32:[1,369]},{7:370,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,
24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a([12,28,34,38,40,41,44,45,48,49,50,51,52,53,61,63,64,68,69,92,95,97,105,112,117,118,119,125,129,130,133,135,137,139,149,155,
157,158,159,160,161,162],Yb,{6:fb,31:fb,71:fb,120:fb}),{6:qb,31:rb,120:[1,371]},a([6,31,32,115,120],eb,{15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,10:20,11:21,13:23,14:24,54:26,47:27,79:28,80:29,81:30,111:31,67:33,77:40,154:41,132:43,136:44,138:45,75:53,62:54,37:55,43:57,33:70,60:71,141:77,39:80,8:122,76:180,7:255,123:374,12:b,28:da,34:f,38:k,40:t,41:p,44:z,45:I,48:J,49:F,50:N,51:y,52:G,53:O,61:Q,63:B,64:n,68:c,69:w,74:Va,92:q,95:h,97:K,105:P,112:L,117:U,118:W,119:H,
125:Z,129:T,130:V,133:D,135:A,137:r,139:E,149:aa,155:ba,157:C,158:S,159:v,160:X,161:R,162:M}),a(Ta,Ma,{70:375,71:kb}),a(m,[2,170]),a([6,31,115],Ma,{70:376,71:kb}),a(cc,[2,245]),{7:377,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,
117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:378,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,
130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:379,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,
137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(lb,[2,221]),{33:195,34:f,60:196,62:198,75:197,92:q,118:Ca,119:Ja,145:380},a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,135,139,156],[2,228],{141:77,132:102,138:103,134:[1,381],140:[1,382],159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Bb,[2,229],{141:77,132:102,138:103,134:[1,383],159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,
172:oa,173:sa,174:ca}),a(Bb,[2,235],{141:77,132:102,138:103,134:[1,384],159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{6:dc,31:ec,94:[1,385]},a(Cb,eb,{39:80,57:205,59:206,11:207,37:208,33:209,35:210,60:211,56:388,34:f,36:Qa,38:k,40:t,41:p,63:B,118:Ca}),{7:389,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,390],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,
49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:391,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:[1,392],33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,
53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Ea,[2,39]),a(Mb,[2,37]),a(Oa,[2,106]),{7:393,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,
51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,89:[2,181],92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{89:[2,182],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(Pa,[2,49],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,
165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{32:[1,394],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{30:395,31:ua},a(Ua,[2,76]),{33:129,34:f,60:130,62:132,72:396,73:127,74:d,75:131,92:q,118:Ca,119:Ja},a(fc,l,{72:126,73:127,33:129,60:130,75:131,62:132,65:397,34:f,74:d,92:q,118:Ca,119:Ja}),a(Ua,[2,81],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,
165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Sa,fb),a(ac,[2,31]),{32:[1,398],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(Pa,[2,275],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{30:399,31:ua,132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,
169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{30:400,31:ua},a(na,[2,196]),{30:401,31:ua},{30:402,31:ua},a(Db,[2,200]),{32:[1,403],151:[1,404],152:342,153:ib},a(na,[2,239]),{30:405,31:ua},a(ob,[2,242]),{30:406,31:ua,71:[1,407]},a(gc,[2,192],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(na,[2,119]),a(bc,[2,122],{141:77,132:102,138:103,30:408,31:ua,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,
166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ga,[2,63]),a(Ga,[2,125]),{29:[1,409]},{31:jb,33:282,34:f,100:410,101:280,103:Xa},a(Ga,[2,126]),{39:411,40:t,41:p},{6:sb,31:tb,94:[1,412]},a(Cb,eb,{33:282,101:415,34:f,103:Xa}),a(Ta,Ma,{70:416,71:pb}),{33:417,34:f},{33:418,34:f},{29:[2,141]},{6:Eb,31:Fb,94:[1,419]},a(Cb,eb,{33:289,108:422,34:f,103:db}),a(Ta,Ma,{70:423,71:zb}),{33:424,34:f,103:[1,425]},{33:426,34:f},a(Ab,[2,145],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,
163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{7:427,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,
154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:428,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,
160:X,161:R,162:M},{32:[1,429]},a(Ga,[2,150]),{131:[1,430]},{120:[1,431],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(xb,[2,176]),{7:255,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,
75:53,76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,123:432,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:255,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,31:ab,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,74:Va,75:53,
76:180,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,116:433,117:U,118:W,119:H,123:178,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(Sa,[2,185]),{6:qb,31:rb,32:[1,434]},{6:qb,31:rb,115:[1,435]},a(Ya,[2,205],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ya,[2,207],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,
160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ya,[2,218],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(lb,[2,227]),{7:436,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,
64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:437,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,
79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:438,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,
105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:439,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,
119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(xb,[2,110]),{11:207,33:209,34:f,35:210,36:Qa,37:208,38:k,39:80,40:t,41:p,56:440,57:205,59:206,60:211,63:B,118:Ca},a(fc,Kb,{39:80,56:204,57:205,59:206,11:207,37:208,33:209,35:210,60:211,93:441,34:f,36:Qa,38:k,40:t,41:p,63:B,118:Ca}),a(Ba,[2,113]),a(Ba,[2,52],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,
170:ha,171:ka,172:oa,173:sa,174:ca}),{7:442,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,
162:M},a(Ba,[2,54],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),{7:443,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,
119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{89:[2,180],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(na,[2,50]),a(na,[2,68]),a(Ua,[2,77]),a(Ta,Ma,{70:444,71:Pb}),a(na,[2,274]),a(cc,[2,246]),a(na,[2,197]),a(Db,[2,198]),a(Db,[2,199]),a(na,[2,237]),{30:445,31:ua},{32:[1,446]},a(ob,[2,243],{6:[1,447]}),{7:448,8:122,
10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},a(na,[2,123]),{39:449,40:t,41:p},a(nb,Ma,{70:450,
71:pb}),a(Ga,[2,127]),{29:[1,451]},{33:282,34:f,101:452,103:Xa},{31:jb,33:282,34:f,100:453,101:280,103:Xa},a(Ba,[2,132]),{6:sb,31:tb,32:[1,454]},a(Ba,[2,137]),a(Ba,[2,139]),a(Ga,[2,143],{29:[1,455]}),{33:289,34:f,103:db,108:456},{31:wb,33:289,34:f,103:db,106:457,108:287},a(Ba,[2,153]),{6:Eb,31:Fb,32:[1,458]},a(Ba,[2,158]),a(Ba,[2,159]),a(Ba,[2,161]),a(Ab,[2,146],{141:77,132:102,138:103,133:D,135:A,139:E,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),
{32:[1,459],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},a(Ga,[2,149]),a(Ea,[2,203]),a(Ea,[2,179]),a(Sa,[2,186]),a(Ta,Ma,{70:460,71:kb}),a(Sa,[2,187]),a(m,[2,171]),a([1,6,31,32,42,66,71,74,89,94,115,120,122,131,133,134,135,139,156],[2,230],{141:77,132:102,138:103,140:[1,461],159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Bb,[2,232],{141:77,132:102,
138:103,134:[1,462],159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Pa,[2,231],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Pa,[2,236],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ba,[2,114]),a(Ta,Ma,{70:463,71:Ub}),{32:[1,464],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,
163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{32:[1,465],132:102,133:D,135:A,138:103,139:E,141:77,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca},{6:Zb,31:$b,32:[1,466]},{32:[1,467]},a(na,[2,240]),a(ob,[2,244]),a(gc,[2,193],{141:77,132:102,138:103,133:D,135:A,139:E,156:Aa,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ga,[2,129]),{6:sb,31:tb,94:[1,
468]},{39:469,40:t,41:p},a(Ba,[2,133]),a(Ta,Ma,{70:470,71:pb}),a(Ba,[2,134]),{39:471,40:t,41:p},a(Ba,[2,154]),a(Ta,Ma,{70:472,71:zb}),a(Ba,[2,155]),a(Ga,[2,147]),{6:qb,31:rb,32:[1,473]},{7:474,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,
112:L,117:U,118:W,119:H,125:Z,129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{7:475,8:122,10:20,11:21,12:b,13:23,14:24,15:7,16:8,17:9,18:10,19:11,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19,28:da,33:70,34:f,37:55,38:k,39:80,40:t,41:p,43:57,44:z,45:I,47:27,48:J,49:F,50:N,51:y,52:G,53:O,54:26,60:71,61:Q,62:54,63:B,64:n,67:33,68:c,69:w,75:53,77:40,79:28,80:29,81:30,92:q,95:h,97:K,105:P,111:31,112:L,117:U,118:W,119:H,125:Z,
129:T,130:V,132:43,133:D,135:A,136:44,137:r,138:45,139:E,141:77,149:aa,154:41,155:ba,157:C,158:S,159:v,160:X,161:R,162:M},{6:dc,31:ec,32:[1,476]},a(Ba,[2,53]),a(Ba,[2,55]),a(Ua,[2,78]),a(na,[2,238]),{29:[1,477]},a(Ga,[2,128]),{6:sb,31:tb,32:[1,478]},a(Ga,[2,151]),{6:Eb,31:Fb,32:[1,479]},a(Sa,[2,188]),a(Pa,[2,233],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Pa,[2,234],{141:77,132:102,138:103,159:ma,160:Y,163:ea,164:ia,
165:fa,166:ja,167:la,168:pa,169:qa,170:ha,171:ka,172:oa,173:sa,174:ca}),a(Ba,[2,115]),{39:480,40:t,41:p},a(Ba,[2,135]),a(Ba,[2,156]),a(Ga,[2,130])],defaultActions:{68:[2,70],69:[2,71],239:[2,109],358:[2,141]},parseError:function(a,d){if(d.recoverable)this.trace(a);else throw a=Error(a),a.hash=d,a;},parse:function(a){var d=[0],b=[null],l=[],m=this.table,Ca="",g=0,Ja=0,c=0,f=l.slice.call(arguments,1),ua=Object.create(this.lexer),h={};for(n in this.yy)Object.prototype.hasOwnProperty.call(this.yy,n)&&
(h[n]=this.yy[n]);ua.setInput(a,h);h.lexer=ua;h.parser=this;"undefined"==typeof ua.yylloc&&(ua.yylloc={});var n=ua.yylloc;l.push(n);var k=ua.options&&ua.options.ranges;this.parseError="function"===typeof h.parseError?h.parseError:Object.getPrototypeOf(this).parseError;for(var e,q,Na,Ia,p={},wa,x;;){Na=d[d.length-1];if(this.defaultActions[Na])Ia=this.defaultActions[Na];else{if(null===e||"undefined"==typeof e)e=ua.lex()||1,"number"!==typeof e&&(e=this.symbols_[e]||e);Ia=m[Na]&&m[Na][e]}if("undefined"===
typeof Ia||!Ia.length||!Ia[0]){x=[];for(wa in m[Na])this.terminals_[wa]&&2<wa&&x.push("'"+this.terminals_[wa]+"'");var w=ua.showPosition?"Parse error on line "+(g+1)+":\n"+ua.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[e]||e)+"'":"Parse error on line "+(g+1)+": Unexpected "+(1==e?"end of input":"'"+(this.terminals_[e]||e)+"'");this.parseError(w,{text:ua.match,token:this.terminals_[e]||e,line:ua.yylineno,loc:n,expected:x})}if(Ia[0]instanceof Array&&1<Ia.length)throw Error("Parse Error: multiple actions possible at state: "+
Na+", token: "+e);switch(Ia[0]){case 1:d.push(e);b.push(ua.yytext);l.push(ua.yylloc);d.push(Ia[1]);e=null;q?(e=q,q=null):(Ja=ua.yyleng,Ca=ua.yytext,g=ua.yylineno,n=ua.yylloc,0<c&&c--);break;case 2:x=this.productions_[Ia[1]][1];p.$=b[b.length-x];p._$={first_line:l[l.length-(x||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(x||1)].first_column,last_column:l[l.length-1].last_column};k&&(p._$.range=[l[l.length-(x||1)].range[0],l[l.length-1].range[1]]);Na=this.performAction.apply(p,
[Ca,Ja,g,h,Ia[1],b,l].concat(f));if("undefined"!==typeof Na)return Na;x&&(d=d.slice(0,-2*x),b=b.slice(0,-1*x),l=l.slice(0,-1*x));d.push(this.productions_[Ia[1]][0]);b.push(p.$);l.push(p._$);Ia=m[d[d.length-2]][d[d.length-1]];d.push(Ia);break;case 3:return!0}}}};e.prototype=hc;hc.Parser=e;return new e}();"undefined"!==typeof u&&"undefined"!==typeof e&&(e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(x){x[1]||(console.log("Usage: "+x[0]+" FILE"),process.exit(1));
var a="",b=u("fs");"undefined"!==typeof b&&null!==b&&(a=b.readFileSync(u("path").normalize(x[1]),"utf8"));return e.parser.parse(a)},"undefined"!==typeof ra&&u.main===ra&&e.main(process.argv.slice(1)));return ra.exports}();u["./scope"]=function(){var e={};(function(){var u=[].indexOf||function(e){for(var x=0,a=this.length;x<a;x++)if(x in this&&this[x]===e)return x;return-1};e.Scope=function(){function e(e,a,b,r){var f,k;this.parent=e;this.expressions=a;this.method=b;this.referencedVars=r;this.variables=
[{name:"arguments",type:"arguments"}];this.positions={};this.parent||(this.utilities={});this.root=null!=(f=null!=(k=this.parent)?k.root:void 0)?f:this}e.prototype.add=function(e,a,b){return this.shared&&!b?this.parent.add(e,a,b):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=a:this.positions[e]=this.variables.push({name:e,type:a})-1};e.prototype.namedMethod=function(){var e;return null!=(e=this.method)&&e.name||!this.parent?this.method:this.parent.namedMethod()};
e.prototype.find=function(e,a){null==a&&(a="var");if(this.check(e))return!0;this.add(e,a);return!1};e.prototype.parameter=function(e){if(!this.shared||!this.parent.check(e,!0))return this.add(e,"param")};e.prototype.check=function(e){var a;return!!(this.type(e)||null!=(a=this.parent)&&a.check(e))};e.prototype.temporary=function(e,a,b){null==b&&(b=!1);return b?(b=e.charCodeAt(0),e=122-b,b=String.fromCharCode(b+a%(e+1)),a=Math.floor(a/(e+1)),""+b+(a||"")):""+e+(a||"")};e.prototype.type=function(e){var a;
var b=this.variables;var x=0;for(a=b.length;x<a;x++){var f=b[x];if(f.name===e)return f.type}return null};e.prototype.freeVariable=function(e,a){var b,x;null==a&&(a={});for(b=0;;){var f=this.temporary(e,b,a.single);if(!(this.check(f)||0<=u.call(this.root.referencedVars,f)))break;b++}(null!=(x=a.reserve)?x:1)&&this.add(f,"var",!0);return f};e.prototype.assign=function(e,a){this.add(e,{value:a,assigned:!0},!0);return this.hasAssignments=!0};e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length};
e.prototype.declaredVariables=function(){var e;var a=this.variables;var b=[];var r=0;for(e=a.length;r<e;r++){var f=a[r];"var"===f.type&&b.push(f.name)}return b.sort()};e.prototype.assignedVariables=function(){var e;var a=this.variables;var b=[];var r=0;for(e=a.length;r<e;r++){var f=a[r];f.type.assigned&&b.push(f.name+" \x3d "+f.type.value)}return b};return e}()}).call(this);return e}();u["./nodes"]=function(){var e={};(function(){var ra,r,x,a,b,za,f,k,t,p,z,I,J,F,N,y,G,O,Q,B,n,c,w,q,h,K,P,L,U,W,H,
Z,T,V,D,A,xa,E,aa,ba,C,S,v=function(a,b){function l(){this.constructor=a}for(var d in b)X.call(b,d)&&(a[d]=b[d]);l.prototype=b.prototype;a.prototype=new l;a.__super__=b.prototype;return a},X={}.hasOwnProperty,R=[].indexOf||function(a){for(var b=0,l=this.length;b<l;b++)if(b in this&&this[b]===a)return b;return-1},M=[].slice;Error.stackTraceLimit=Infinity;var ya=u("./scope").Scope;var ta=u("./lexer");var Aa=ta.isUnassignable;var ma=ta.JS_FORBIDDEN;var Y=u("./helpers");var ea=Y.compact;var ia=Y.flatten;
var fa=Y.extend;var ja=Y.merge;var la=Y.del;ta=Y.addLocationDataFn;var pa=Y.locationDataToString;var qa=Y.throwSyntaxError;e.extend=fa;e.addLocationDataFn=ta;var ha=function(){return!0};var ka=function(){return!1};var oa=function(){return this};var sa=function(){this.negated=!this.negated;return this};e.CodeFragment=t=function(){function a(a,b){var d;this.code=""+b;this.locationData=null!=a?a.locationData:void 0;this.type=(null!=a?null!=(d=a.constructor)?d.name:void 0:void 0)||"unknown"}a.prototype.toString=
function(){return""+this.code+(this.locationData?": "+pa(this.locationData):"")};return a}();var ca=function(a){var b;var l=[];var d=0;for(b=a.length;d<b;d++){var Ca=a[d];l.push(Ca.code)}return l.join("")};e.Base=ta=function(){function b(){}b.prototype.compile=function(a,b){return ca(this.compileToFragments(a,b))};b.prototype.compileToFragments=function(a,b){a=fa({},a);b&&(a.level=b);b=this.unfoldSoak(a)||this;b.tab=a.indent;return a.level!==na&&b.isStatement(a)?b.compileClosure(a):b.compileNode(a)};
b.prototype.compileClosure=function(b){var l,d,m;(d=this.jumps())&&d.error("cannot use a pure statement in an expression");b.sharedScope=!0;d=new k([],a.wrap([this]));var Ja=[];if((l=this.contains(Wa))||this.contains(da))Ja=[new E],l?(l="apply",Ja.push(new y("arguments"))):l="call",d=new C(d,[new ra(new L(l))]);b=(new za(d,Ja)).compileNode(b);if(d.isGenerator||null!=(m=d.base)&&m.isGenerator)b.unshift(this.makeCode("(yield* ")),b.push(this.makeCode(")"));return b};b.prototype.cache=function(a,b,d){if(null!=
d?d(this):this.isComplex()){d=new y(a.scope.freeVariable("ref"));var l=new x(d,this);return b?[l.compileToFragments(a,b),[this.makeCode(d.value)]]:[l,d]}d=b?this.compileToFragments(a,b):this;return[d,d]};b.prototype.cacheToCodeFragments=function(a){return[ca(a[0]),ca(a[1])]};b.prototype.makeReturn=function(a){var b=this.unwrapAll();return a?new za(new B(a+".push"),[b]):new H(b)};b.prototype.contains=function(a){var b=void 0;this.traverseChildren(!1,function(d){if(a(d))return b=d,!1});return b};b.prototype.lastNonComment=
function(a){var b;for(b=a.length;b--;)if(!(a[b]instanceof p))return a[b];return null};b.prototype.toString=function(a,b){null==a&&(a="");null==b&&(b=this.constructor.name);var d="\n"+a+b;this.soak&&(d+="?");this.eachChild(function(b){return d+=b.toString(a+Fa)});return d};b.prototype.eachChild=function(a){var b,d;if(!this.children)return this;var m=this.children;var Ja=0;for(b=m.length;Ja<b;Ja++){var c=m[Ja];if(this[c]){var e=ia([this[c]]);var f=0;for(d=e.length;f<d;f++)if(c=e[f],!1===a(c))return this}}return this};
b.prototype.traverseChildren=function(a,b){return this.eachChild(function(d){if(!1!==b(d))return d.traverseChildren(a,b)})};b.prototype.invert=function(){return new h("!",this)};b.prototype.unwrapAll=function(){var a;for(a=this;a!==(a=a.unwrap()););return a};b.prototype.children=[];b.prototype.isStatement=ka;b.prototype.jumps=ka;b.prototype.isComplex=ha;b.prototype.isChainable=ka;b.prototype.isAssignable=ka;b.prototype.isNumber=ka;b.prototype.unwrap=oa;b.prototype.unfoldSoak=ka;b.prototype.assigns=
ka;b.prototype.updateLocationDataIfMissing=function(a){if(this.locationData)return this;this.locationData=a;return this.eachChild(function(b){return b.updateLocationDataIfMissing(a)})};b.prototype.error=function(a){return qa(a,this.locationData)};b.prototype.makeCode=function(a){return new t(this,a)};b.prototype.wrapInBraces=function(a){return[].concat(this.makeCode("("),a,this.makeCode(")"))};b.prototype.joinFragmentArrays=function(a,b){var d,l;var m=[];var c=d=0;for(l=a.length;d<l;c=++d){var e=
a[c];c&&m.push(this.makeCode(b));m=m.concat(e)}return m};return b}();e.Block=a=function(a){function b(a){this.expressions=ea(ia(a||[]))}v(b,a);b.prototype.children=["expressions"];b.prototype.push=function(a){this.expressions.push(a);return this};b.prototype.pop=function(){return this.expressions.pop()};b.prototype.unshift=function(a){this.expressions.unshift(a);return this};b.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this};b.prototype.isEmpty=function(){return!this.expressions.length};
b.prototype.isStatement=function(a){var d;var b=this.expressions;var l=0;for(d=b.length;l<d;l++){var m=b[l];if(m.isStatement(a))return!0}return!1};b.prototype.jumps=function(a){var d;var b=this.expressions;var l=0;for(d=b.length;l<d;l++){var m=b[l];if(m=m.jumps(a))return m}};b.prototype.makeReturn=function(a){var d;for(d=this.expressions.length;d--;){var b=this.expressions[d];if(!(b instanceof p)){this.expressions[d]=b.makeReturn(a);b instanceof H&&!b.expression&&this.expressions.splice(d,1);break}}return this};
b.prototype.compileToFragments=function(a,d){null==a&&(a={});return a.scope?b.__super__.compileToFragments.call(this,a,d):this.compileRoot(a)};b.prototype.compileNode=function(a){var d,l;this.tab=a.indent;var m=a.level===na;var c=[];var e=this.expressions;var f=d=0;for(l=e.length;d<l;f=++d){var h=e[f];h=h.unwrapAll();h=h.unfoldSoak(a)||h;h instanceof b?c.push(h.compileNode(a)):m?(h.front=!0,f=h.compileToFragments(a),h.isStatement(a)||(f.unshift(this.makeCode(""+this.tab)),f.push(this.makeCode(";"))),
c.push(f)):c.push(h.compileToFragments(a,va))}if(m)return this.spaced?[].concat(this.joinFragmentArrays(c,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(c,"\n");d=c.length?this.joinFragmentArrays(c,", "):[this.makeCode("void 0")];return 1<c.length&&a.level>=va?this.wrapInBraces(d):d};b.prototype.compileRoot=function(a){var d,b;a.indent=a.bare?"":Fa;a.level=na;this.spaced=!0;a.scope=new ya(null,this,null,null!=(b=a.referencedVars)?b:[]);var l=a.locals||[];b=0;for(d=l.length;b<d;b++){var m=l[b];
a.scope.parameter(m)}b=[];if(!a.bare){var c=this.expressions;d=[];var e=m=0;for(l=c.length;m<l;e=++m){e=c[e];if(!(e.unwrap()instanceof p))break;d.push(e)}m=this.expressions.slice(d.length);this.expressions=d;d.length&&(b=this.compileNode(ja(a,{indent:""})),b.push(this.makeCode("\n")));this.expressions=m}d=this.compileWithDeclarations(a);return a.bare?d:[].concat(b,this.makeCode("(function() {\n"),d,this.makeCode("\n}).call(this);\n"))};b.prototype.compileWithDeclarations=function(a){var d,b;var l=
[];var m=this.expressions;var c=b=0;for(d=m.length;b<d;c=++b){var e=m[c];e=e.unwrap();if(!(e instanceof p||e instanceof B))break}a=ja(a,{level:na});c&&(e=this.expressions.splice(c,9E9),l=[this.spaced,!1],b=l[0],this.spaced=l[1],b=[this.compileNode(a),b],l=b[0],this.spaced=b[1],this.expressions=e);e=this.compileNode(a);b=a.scope;b.expressions===this&&(d=a.scope.hasDeclarations(),a=b.hasAssignments,d||a?(c&&l.push(this.makeCode("\n")),l.push(this.makeCode(this.tab+"var ")),d&&l.push(this.makeCode(b.declaredVariables().join(", "))),
a&&(d&&l.push(this.makeCode(",\n"+(this.tab+Fa))),l.push(this.makeCode(b.assignedVariables().join(",\n"+(this.tab+Fa))))),l.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):l.length&&e.length&&l.push(this.makeCode("\n")));return l.concat(e)};b.wrap=function(a){return 1===a.length&&a[0]instanceof b?a[0]:new b(a)};return b}(ta);e.Literal=B=function(a){function b(a){this.value=a}v(b,a);b.prototype.isComplex=ka;b.prototype.assigns=function(a){return a===this.value};b.prototype.compileNode=function(a){return[this.makeCode(this.value)]};
b.prototype.toString=function(){return" "+(this.isStatement()?b.__super__.toString.apply(this,arguments):this.constructor.name)+": "+this.value};return b}(ta);e.NumberLiteral=w=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(B);e.InfinityLiteral=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.compileNode=function(){return[this.makeCode("2e308")]};return b}(w);e.NaNLiteral=function(a){function b(){b.__super__.constructor.call(this,
"NaN")}v(b,a);b.prototype.compileNode=function(a){var d=[this.makeCode("0/0")];return a.level>=Ha?this.wrapInBraces(d):d};return b}(w);e.StringLiteral=D=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(B);e.RegexLiteral=W=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(B);e.PassthroughLiteral=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(B);e.IdentifierLiteral=
y=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.isAssignable=ha;return b}(B);e.PropertyName=L=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.isAssignable=ha;return b}(B);e.StatementLiteral=V=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.isStatement=ha;b.prototype.makeReturn=oa;b.prototype.jumps=function(a){if("break"===this.value&&!(null!=a&&a.loop||
null!=a&&a.block)||"continue"===this.value&&(null==a||!a.loop))return this};b.prototype.compileNode=function(a){return[this.makeCode(""+this.tab+this.value+";")]};return b}(B);e.ThisLiteral=E=function(a){function b(){b.__super__.constructor.call(this,"this")}v(b,a);b.prototype.compileNode=function(a){var d;a=null!=(d=a.scope.method)&&d.bound?a.scope.method.context:this.value;return[this.makeCode(a)]};return b}(B);e.UndefinedLiteral=ba=function(a){function b(){b.__super__.constructor.call(this,"undefined")}
v(b,a);b.prototype.compileNode=function(a){return[this.makeCode(a.level>=Ka?"(void 0)":"void 0")]};return b}(B);e.NullLiteral=c=function(a){function b(){b.__super__.constructor.call(this,"null")}v(b,a);return b}(B);e.BooleanLiteral=b=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(B);e.Return=H=function(a){function b(a){this.expression=a}v(b,a);b.prototype.children=["expression"];b.prototype.isStatement=ha;b.prototype.makeReturn=oa;b.prototype.jumps=
oa;b.prototype.compileToFragments=function(a,d){var l;var m=null!=(l=this.expression)?l.makeReturn():void 0;return!m||m instanceof b?b.__super__.compileToFragments.call(this,a,d):m.compileToFragments(a,d)};b.prototype.compileNode=function(a){var d=[];d.push(this.makeCode(this.tab+("return"+(this.expression?" ":""))));this.expression&&(d=d.concat(this.expression.compileToFragments(a,Da)));d.push(this.makeCode(";"));return d};return b}(ta);e.YieldReturn=S=function(a){function b(){return b.__super__.constructor.apply(this,
arguments)}v(b,a);b.prototype.compileNode=function(a){null==a.scope.parent&&this.error("yield can only occur inside functions");return b.__super__.compileNode.apply(this,arguments)};return b}(H);e.Value=C=function(a){function m(a,b,Ca){if(!b&&a instanceof m)return a;this.base=a;this.properties=b||[];Ca&&(this[Ca]=!0);return this}v(m,a);m.prototype.children=["base","properties"];m.prototype.add=function(a){this.properties=this.properties.concat(a);return this};m.prototype.hasProperties=function(){return!!this.properties.length};
m.prototype.bareLiteral=function(a){return!this.properties.length&&this.base instanceof a};m.prototype.isArray=function(){return this.bareLiteral(r)};m.prototype.isRange=function(){return this.bareLiteral(U)};m.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()};m.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()};m.prototype.isNumber=function(){return this.bareLiteral(w)};m.prototype.isString=function(){return this.bareLiteral(D)};
m.prototype.isRegex=function(){return this.bareLiteral(W)};m.prototype.isUndefined=function(){return this.bareLiteral(ba)};m.prototype.isNull=function(){return this.bareLiteral(c)};m.prototype.isBoolean=function(){return this.bareLiteral(b)};m.prototype.isAtomic=function(){var a;var b=this.properties.concat(this.base);var m=0;for(a=b.length;m<a;m++){var c=b[m];if(c.soak||c instanceof za)return!1}return!0};m.prototype.isNotCallable=function(){return this.isNumber()||this.isString()||this.isRegex()||
this.isArray()||this.isRange()||this.isSplice()||this.isObject()||this.isUndefined()||this.isNull()||this.isBoolean()};m.prototype.isStatement=function(a){return!this.properties.length&&this.base.isStatement(a)};m.prototype.assigns=function(a){return!this.properties.length&&this.base.assigns(a)};m.prototype.jumps=function(a){return!this.properties.length&&this.base.jumps(a)};m.prototype.isObject=function(a){return this.properties.length?!1:this.base instanceof q&&(!a||this.base.generated)};m.prototype.isSplice=
function(){var a=this.properties;return a[a.length-1]instanceof Z};m.prototype.looksStatic=function(a){var b;return this.base.value===a&&1===this.properties.length&&"prototype"!==(null!=(b=this.properties[0].name)?b.value:void 0)};m.prototype.unwrap=function(){return this.properties.length?this:this.base};m.prototype.cacheReference=function(a){var b=this.properties;var l=b[b.length-1];if(2>this.properties.length&&!this.base.isComplex()&&(null==l||!l.isComplex()))return[this,this];b=new m(this.base,
this.properties.slice(0,-1));if(b.isComplex()){var c=new y(a.scope.freeVariable("base"));b=new m(new P(new x(c,b)))}if(!l)return[b,c];if(l.isComplex()){var e=new y(a.scope.freeVariable("name"));l=new Q(new x(e,l.index));e=new Q(e)}return[b.add(l),new m(c||b.base,[e||l])]};m.prototype.compileNode=function(a){var b;this.base.front=this.front;var l=this.properties;var m=this.base.compileToFragments(a,l.length?Ka:null);l.length&&Ra.test(ca(m))&&m.push(this.makeCode("."));var c=0;for(b=l.length;c<b;c++){var e=
l[c];m.push.apply(m,e.compileToFragments(a))}return m};m.prototype.unfoldSoak=function(a){return null!=this.unfoldedSoak?this.unfoldedSoak:this.unfoldedSoak=function(b){return function(){var d,l,c;if(l=b.base.unfoldSoak(a))return(d=l.body.properties).push.apply(d,b.properties),l;var e=b.properties;l=d=0;for(c=e.length;d<c;l=++d){var f=e[l];if(f.soak)return f.soak=!1,d=new m(b.base,b.properties.slice(0,l)),c=new m(b.base,b.properties.slice(l)),d.isComplex()&&(l=new y(a.scope.freeVariable("ref")),d=
new P(new x(l,d)),c.base=l),new G(new z(d),c,{soak:!0})}return!1}}(this)()};return m}(ta);e.Comment=p=function(a){function b(a){this.comment=a}v(b,a);b.prototype.isStatement=ha;b.prototype.makeReturn=oa;b.prototype.compileNode=function(a,b){var d=this.comment.replace(/^(\s*)#(?=\s)/gm,"$1 *");d="/*"+Ga(d,this.tab)+(0<=R.call(d,"\n")?"\n"+this.tab:"")+" */";(b||a.level)===na&&(d=a.indent+d);return[this.makeCode("\n"),this.makeCode(d)]};return b}(ta);e.Call=za=function(a){function b(a,b,m){this.variable=
a;this.args=null!=b?b:[];this.soak=m;this.isNew=!1;this.variable instanceof C&&this.variable.isNotCallable()&&this.variable.error("literal is not a function")}v(b,a);b.prototype.children=["variable","args"];b.prototype.updateLocationDataIfMissing=function(a){var d;if(this.locationData&&this.needsUpdatedStartLocation){this.locationData.first_line=a.first_line;this.locationData.first_column=a.first_column;var l=(null!=(d=this.variable)?d.base:void 0)||this.variable;l.needsUpdatedStartLocation&&(this.variable.locationData.first_line=
a.first_line,this.variable.locationData.first_column=a.first_column,l.updateLocationDataIfMissing(a));delete this.needsUpdatedStartLocation}return b.__super__.updateLocationDataIfMissing.apply(this,arguments)};b.prototype.newInstance=function(){var a;var d=(null!=(a=this.variable)?a.base:void 0)||this.variable;d instanceof b&&!d.isNew?d.newInstance():this.isNew=!0;this.needsUpdatedStartLocation=!0;return this};b.prototype.unfoldSoak=function(a){var d,l;if(this.soak){if(this instanceof xa){var m=new B(this.superReference(a));
var c=new C(m)}else{if(c=Ea(a,this,"variable"))return c;c=(new C(this.variable)).cacheReference(a);m=c[0];c=c[1]}c=new b(c,this.args);c.isNew=this.isNew;m=new B("typeof "+m.compile(a)+' \x3d\x3d\x3d "function"');return new G(m,new C(c),{soak:!0})}m=this;for(d=[];;)if(m.variable instanceof b)d.push(m),m=m.variable;else{if(!(m.variable instanceof C))break;d.push(m);if(!((m=m.variable.base)instanceof b))break}var e=d.reverse();d=0;for(l=e.length;d<l;d++)m=e[d],c&&(m.variable instanceof b?m.variable=
c:m.variable.base=c),c=Ea(a,m,"variable");return c};b.prototype.compileNode=function(a){var b,l,m;null!=(b=this.variable)&&(b.front=this.front);b=T.compileSplattedArray(a,this.args,!0);if(b.length)return this.compileSplat(a,b);b=[];var c=this.args;var e=l=0;for(m=c.length;l<m;e=++l){var f=c[e];e&&b.push(this.makeCode(", "));b.push.apply(b,f.compileToFragments(a,va))}f=[];this instanceof xa?(a=this.superReference(a)+(".call("+this.superThis(a)),b.length&&(a+=", "),f.push(this.makeCode(a))):(this.isNew&&
f.push(this.makeCode("new ")),f.push.apply(f,this.variable.compileToFragments(a,Ka)),f.push(this.makeCode("(")));f.push.apply(f,b);f.push(this.makeCode(")"));return f};b.prototype.compileSplat=function(a,b){var d;if(this instanceof xa)return[].concat(this.makeCode(this.superReference(a)+".apply("+this.superThis(a)+", "),b,this.makeCode(")"));if(this.isNew){var l=this.tab+Fa;return[].concat(this.makeCode("(function(func, args, ctor) {\n"+l+"ctor.prototype \x3d func.prototype;\n"+l+"var child \x3d new ctor, result \x3d func.apply(child, args);\n"+
l+"return Object(result) \x3d\x3d\x3d result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(a,va),this.makeCode(", "),b,this.makeCode(", function(){})"))}l=[];var m=new C(this.variable);if((d=m.properties.pop())&&m.isComplex()){var c=a.scope.freeVariable("ref");l=l.concat(this.makeCode("("+c+" \x3d "),m.compileToFragments(a,va),this.makeCode(")"),d.compileToFragments(a))}else m=m.compileToFragments(a,Ka),Ra.test(ca(m))&&(m=this.wrapInBraces(m)),d?(c=ca(m),m.push.apply(m,d.compileToFragments(a))):
c="null",l=l.concat(m);return l.concat(this.makeCode(".apply("+c+", "),b,this.makeCode(")"))};return b}(ta);e.SuperCall=xa=function(a){function b(a){b.__super__.constructor.call(this,null,null!=a?a:[new T(new y("arguments"))]);this.isBare=null!=a}v(b,a);b.prototype.superReference=function(a){var b=a.scope.namedMethod();if(null!=b&&b.klass){var l=b.klass;var m=b.name;var c=b.variable;if(l.isComplex()){var e=new y(a.scope.parent.freeVariable("base"));var f=new C(new P(new x(e,l)));c.base=f;c.properties.splice(0,
l.properties.length)}if(m.isComplex()||m instanceof Q&&m.index.isAssignable()){var h=new y(a.scope.parent.freeVariable("name"));m=new Q(new x(h,m.index));c.properties.pop();c.properties.push(m)}f=[new ra(new L("__super__"))];b["static"]&&f.push(new ra(new L("constructor")));f.push(null!=h?new Q(h):m);return(new C(null!=e?e:l,f)).compile(a)}return null!=b&&b.ctor?b.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")};b.prototype.superThis=function(a){return(a=
a.scope.method)&&!a.klass&&a.context||"this"};return b}(za);e.RegexWithInterpolations=function(a){function b(a){null==a&&(a=[]);b.__super__.constructor.call(this,new C(new y("RegExp")),a,!1)}v(b,a);return b}(za);e.TaggedTemplateCall=function(b){function m(b,d,c){d instanceof D&&(d=new A(a.wrap([new C(d)])));m.__super__.constructor.call(this,b,[d],c)}v(m,b);m.prototype.compileNode=function(a){a.inTaggedTemplateCall=!0;return this.variable.compileToFragments(a,Ka).concat(this.args[0].compileToFragments(a,
va))};return m}(za);e.Extends=F=function(a){function b(a,b){this.child=a;this.parent=b}v(b,a);b.prototype.children=["child","parent"];b.prototype.compileToFragments=function(a){return(new za(new C(new B(La("extend",a))),[this.child,this.parent])).compileToFragments(a)};return b}(ta);e.Access=ra=function(a){function b(a,b){this.name=a;this.soak="soak"===b}v(b,a);b.prototype.children=["name"];b.prototype.compileToFragments=function(a){var b;a=this.name.compileToFragments(a);var l=this.name.unwrap();
return l instanceof L?(b=l.value,0<=R.call(ma,b))?[this.makeCode('["')].concat(M.call(a),[this.makeCode('"]')]):[this.makeCode(".")].concat(M.call(a)):[this.makeCode("[")].concat(M.call(a),[this.makeCode("]")])};b.prototype.isComplex=ka;return b}(ta);e.Index=Q=function(a){function b(a){this.index=a}v(b,a);b.prototype.children=["index"];b.prototype.compileToFragments=function(a){return[].concat(this.makeCode("["),this.index.compileToFragments(a,Da),this.makeCode("]"))};b.prototype.isComplex=function(){return this.index.isComplex()};
return b}(ta);e.Range=U=function(a){function b(a,b,c){this.from=a;this.to=b;this.equals=(this.exclusive="exclusive"===c)?"":"\x3d"}v(b,a);b.prototype.children=["from","to"];b.prototype.compileVariables=function(a){a=ja(a,{top:!0});var b=la(a,"isComplex");var l=this.cacheToCodeFragments(this.from.cache(a,va,b));this.fromC=l[0];this.fromVar=l[1];l=this.cacheToCodeFragments(this.to.cache(a,va,b));this.toC=l[0];this.toVar=l[1];if(l=la(a,"step"))a=this.cacheToCodeFragments(l.cache(a,va,b)),this.step=a[0],
this.stepVar=a[1];this.fromNum=this.from.isNumber()?Number(this.fromVar):null;this.toNum=this.to.isNumber()?Number(this.toVar):null;return this.stepNum=null!=l&&l.isNumber()?Number(this.stepVar):null};b.prototype.compileNode=function(a){var b,l,c,m;this.fromVar||this.compileVariables(a);if(!a.index)return this.compileArray(a);var e=null!=this.fromNum&&null!=this.toNum;var f=la(a,"index");var h=(a=la(a,"name"))&&a!==f;var n=f+" \x3d "+this.fromC;this.toC!==this.toVar&&(n+=", "+this.toC);this.step!==
this.stepVar&&(n+=", "+this.step);var k=[f+" \x3c"+this.equals,f+" \x3e"+this.equals];var q=k[0];k=k[1];q=null!=this.stepNum?0<this.stepNum?q+" "+this.toVar:k+" "+this.toVar:e?(c=[this.fromNum,this.toNum],l=c[0],m=c[1],c,l<=m?q+" "+m:k+" "+m):(b=this.stepVar?this.stepVar+" \x3e 0":this.fromVar+" \x3c\x3d "+this.toVar,b+" ? "+q+" "+this.toVar+" : "+k+" "+this.toVar);b=this.stepVar?f+" +\x3d "+this.stepVar:e?h?l<=m?"++"+f:"--"+f:l<=m?f+"++":f+"--":h?b+" ? ++"+f+" : --"+f:b+" ? "+f+"++ : "+f+"--";h&&
(n=a+" \x3d "+n);h&&(b=a+" \x3d "+b);return[this.makeCode(n+"; "+q+"; "+b)]};b.prototype.compileArray=function(a){var b,l,c;if((b=null!=this.fromNum&&null!=this.toNum)&&20>=Math.abs(this.fromNum-this.toNum)){var m=function(){c=[];for(var a=l=this.fromNum,b=this.toNum;l<=b?a<=b:a>=b;l<=b?a++:a--)c.push(a);return c}.apply(this);this.exclusive&&m.pop();return[this.makeCode("["+m.join(", ")+"]")]}var e=this.tab+Fa;var f=a.scope.freeVariable("i",{single:!0});var h=a.scope.freeVariable("results");var n=
"\n"+e+h+" \x3d [];";if(b)a.index=f,b=ca(this.compileNode(a));else{var k=f+" \x3d "+this.fromC+(this.toC!==this.toVar?", "+this.toC:"");b=this.fromVar+" \x3c\x3d "+this.toVar;b="var "+k+"; "+b+" ? "+f+" \x3c"+this.equals+" "+this.toVar+" : "+f+" \x3e"+this.equals+" "+this.toVar+"; "+b+" ? "+f+"++ : "+f+"--"}f="{ "+h+".push("+f+"); }\n"+e+"return "+h+";\n"+a.indent;a=function(a){return null!=a?a.contains(Wa):void 0};if(a(this.from)||a(this.to))m=", arguments";return[this.makeCode("(function() {"+n+
"\n"+e+"for ("+b+")"+f+"}).apply(this"+(null!=m?m:"")+")")]};return b}(ta);e.Slice=Z=function(a){function b(a){this.range=a;b.__super__.constructor.call(this)}v(b,a);b.prototype.children=["range"];b.prototype.compileNode=function(a){var b=this.range;var l=b.to;var c=(b=b.from)&&b.compileToFragments(a,Da)||[this.makeCode("0")];if(l){b=l.compileToFragments(a,Da);var m=ca(b);if(this.range.exclusive||-1!==+m)var e=", "+(this.range.exclusive?m:l.isNumber()?""+(+m+1):(b=l.compileToFragments(a,Ka),"+"+ca(b)+
" + 1 || 9e9"))}return[this.makeCode(".slice("+ca(c)+(e||"")+")")]};return b}(ta);e.Obj=q=function(a){function b(a,b){this.generated=null!=b?b:!1;this.objects=this.properties=a||[]}v(b,a);b.prototype.children=["properties"];b.prototype.compileNode=function(a){var b,l,c;var m=this.properties;if(this.generated){var e=0;for(b=m.length;e<b;e++){var f=m[e];f instanceof C&&f.error("cannot have an implicit value in an implicit object")}}e=b=0;for(f=m.length;b<f;e=++b){var h=m[e];if((h.variable||h).base instanceof
P)break}f=e<m.length;var n=a.indent+=Fa;var k=this.lastNonComment(this.properties);b=[];if(f){var q=a.scope.freeVariable("obj");b.push(this.makeCode("(\n"+n+q+" \x3d "))}b.push(this.makeCode("{"+(0===m.length||0===e?"}":"\n")));var w=l=0;for(c=m.length;l<c;w=++l){h=m[w];w===e&&(0!==w&&b.push(this.makeCode("\n"+n+"}")),b.push(this.makeCode(",\n")));var t=w===m.length-1||w===e-1?"":h===k||h instanceof p?"\n":",\n";var r=h instanceof p?"":n;f&&w<e&&(r+=Fa);h instanceof x&&("object"!==h.context&&h.operatorToken.error("unexpected "+
h.operatorToken.value),h.variable instanceof C&&h.variable.hasProperties()&&h.variable.error("invalid object key"));h instanceof C&&h["this"]&&(h=new x(h.properties[0].name,h,"object"));h instanceof p||(w<e?h instanceof x||(h=new x(h,h,"object")):(h instanceof x?(w=h.variable,h=h.value):(h=h.base.cache(a),w=h[0],h=h[1],w instanceof y&&(w=new L(w.value))),h=new x(new C(new y(q),[new ra(w)]),h)));r&&b.push(this.makeCode(r));b.push.apply(b,h.compileToFragments(a,na));t&&b.push(this.makeCode(t))}f?b.push(this.makeCode(",\n"+
n+q+"\n"+this.tab+")")):0!==m.length&&b.push(this.makeCode("\n"+this.tab+"}"));return this.front&&!f?this.wrapInBraces(b):b};b.prototype.assigns=function(a){var b;var l=this.properties;var c=0;for(b=l.length;c<b;c++){var m=l[c];if(m.assigns(a))return!0}return!1};return b}(ta);e.Arr=r=function(a){function b(a){this.objects=a||[]}v(b,a);b.prototype.children=["objects"];b.prototype.compileNode=function(a){var b;if(!this.objects.length)return[this.makeCode("[]")];a.indent+=Fa;var l=T.compileSplattedArray(a,
this.objects);if(l.length)return l;l=[];var c=this.objects;var m=[];var e=0;for(b=c.length;e<b;e++){var f=c[e];m.push(f.compileToFragments(a,va))}e=b=0;for(c=m.length;b<c;e=++b)f=m[e],e&&l.push(this.makeCode(", ")),l.push.apply(l,f);0<=ca(l).indexOf("\n")?(l.unshift(this.makeCode("[\n"+a.indent)),l.push(this.makeCode("\n"+this.tab+"]"))):(l.unshift(this.makeCode("[")),l.push(this.makeCode("]")));return l};b.prototype.assigns=function(a){var b;var l=this.objects;var c=0;for(b=l.length;c<b;c++){var m=
l[c];if(m.assigns(a))return!0}return!1};return b}(ta);e.Class=f=function(b){function c(b,d,c){this.variable=b;this.parent=d;this.body=null!=c?c:new a;this.boundFuncs=[];this.body.classBody=!0}v(c,b);c.prototype.children=["variable","parent","body"];c.prototype.defaultClassVariableName="_Class";c.prototype.determineName=function(){var a;if(!this.variable)return this.defaultClassVariableName;var b=this.variable.properties;b=(a=b[b.length-1])?a instanceof ra&&a.name:this.variable.base;if(!(b instanceof
y||b instanceof L))return this.defaultClassVariableName;b=b.value;a||(a=Aa(b))&&this.variable.error(a);return 0<=R.call(ma,b)?"_"+b:b};c.prototype.setContext=function(a){return this.body.traverseChildren(!1,function(b){if(b.classBody)return!1;if(b instanceof E)return b.value=a;if(b instanceof k&&b.bound)return b.context=a})};c.prototype.addBoundFunctions=function(a){var b;var l=this.boundFuncs;var c=0;for(b=l.length;c<b;c++){var m=l[c];m=(new C(new E,[new ra(m)])).compile(a);this.ctor.body.unshift(new B(m+
" \x3d "+La("bind",a)+"("+m+", this)"))}};c.prototype.addProperties=function(a,b,c){var d;var l=a.base.properties.slice(0);var m;for(m=[];d=l.shift();){if(d instanceof x){var e=d.variable.base;delete d.context;var f=d.value;"constructor"===e.value?(this.ctor&&d.error("cannot define more than one constructor in a class"),f.bound&&d.error("cannot define a constructor as a bound function"),f instanceof k?d=this.ctor=f:(this.externalCtor=c.classScope.freeVariable("ctor"),d=new x(new y(this.externalCtor),
f))):d.variable["this"]?f["static"]=!0:(a=e.isComplex()?new Q(e):new ra(e),d.variable=new C(new y(b),[new ra(new L("prototype")),a]),f instanceof k&&f.bound&&(this.boundFuncs.push(e),f.bound=!1))}m.push(d)}return ea(m)};c.prototype.walkBody=function(b,d){return this.traverseChildren(!1,function(l){return function(m){var e,f,h;var Ca=!0;if(m instanceof c)return!1;if(m instanceof a){var n=e=m.expressions;var k=f=0;for(h=n.length;f<h;k=++f){var q=n[k];q instanceof x&&q.variable.looksStatic(b)?q.value["static"]=
!0:q instanceof C&&q.isObject(!0)&&(Ca=!1,e[k]=l.addProperties(q,b,d))}m.expressions=ia(e)}return Ca&&!(m instanceof c)}}(this))};c.prototype.hoistDirectivePrologue=function(){var a,b;var c=0;for(a=this.body.expressions;(b=a[c])&&b instanceof p||b instanceof C&&b.isString();)++c;return this.directives=a.splice(0,c)};c.prototype.ensureConstructor=function(a){this.ctor||(this.ctor=new k,this.externalCtor?this.ctor.body.push(new B(this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new B(a+
".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor));this.ctor.ctor=this.ctor.name=a;this.ctor.klass=null;return this.ctor.noReturn=!0};c.prototype.compileNode=function(b){var d,l,c;(l=this.body.jumps())&&l.error("Class bodies cannot contain pure statements");(d=this.body.contains(Wa))&&d.error("Class bodies shouldn't reference arguments");var m=this.determineName();var e=new y(m);l=new k([],a.wrap([this.body]));d=[];b.classScope=
l.makeScope(b.scope);this.hoistDirectivePrologue();this.setContext(m);this.walkBody(m,b);this.ensureConstructor(m);this.addBoundFunctions(b);this.body.spaced=!0;this.body.expressions.push(e);this.parent&&(m=new y(b.classScope.freeVariable("superClass",{reserve:!1})),this.body.expressions.unshift(new F(e,m)),l.params.push(new K(m)),d.push(this.parent));(c=this.body.expressions).unshift.apply(c,this.directives);c=new P(new za(l,d));this.variable&&(c=new x(this.variable,c,null,{moduleDeclaration:this.moduleDeclaration}));
return c.compileToFragments(b)};return c}(ta);e.ModuleDeclaration=Y=function(a){function b(a,b){this.clause=a;this.source=b;this.checkSource()}v(b,a);b.prototype.children=["clause","source"];b.prototype.isStatement=ha;b.prototype.jumps=oa;b.prototype.makeReturn=oa;b.prototype.checkSource=function(){if(null!=this.source&&this.source instanceof A)return this.source.error("the name of the module to be imported from must be an uninterpolated string")};b.prototype.checkScope=function(a,b){if(0!==a.indent.length)return this.error(b+
" statements must be at top-level scope")};return b}(ta);e.ImportDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.compileNode=function(a){var b;this.checkScope(a,"import");a.importedSymbols=[];var l=[];l.push(this.makeCode(this.tab+"import "));null!=this.clause&&l.push.apply(l,this.clause.compileNode(a));null!=(null!=(b=this.source)?b.value:void 0)&&(null!==this.clause&&l.push(this.makeCode(" from ")),l.push(this.makeCode(this.source.value)));
l.push(this.makeCode(";"));return l};return b}(Y);e.ImportClause=function(a){function b(a,b){this.defaultBinding=a;this.namedImports=b}v(b,a);b.prototype.children=["defaultBinding","namedImports"];b.prototype.compileNode=function(a){var b=[];null!=this.defaultBinding&&(b.push.apply(b,this.defaultBinding.compileNode(a)),null!=this.namedImports&&b.push(this.makeCode(", ")));null!=this.namedImports&&b.push.apply(b,this.namedImports.compileNode(a));return b};return b}(ta);e.ExportDeclaration=Y=function(b){function c(){return c.__super__.constructor.apply(this,
arguments)}v(c,b);c.prototype.compileNode=function(b){var d;this.checkScope(b,"export");var l=[];l.push(this.makeCode(this.tab+"export "));this instanceof J&&l.push(this.makeCode("default "));this instanceof J||!(this.clause instanceof x||this.clause instanceof f)||(this.clause instanceof f&&!this.clause.variable&&this.clause.error("anonymous classes cannot be exported"),l.push(this.makeCode("var ")),this.clause.moduleDeclaration="export");l=null!=this.clause.body&&this.clause.body instanceof a?l.concat(this.clause.compileToFragments(b,
na)):l.concat(this.clause.compileNode(b));null!=(null!=(d=this.source)?d.value:void 0)&&l.push(this.makeCode(" from "+this.source.value));l.push(this.makeCode(";"));return l};return c}(Y);e.ExportNamedDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ExportDefaultDeclaration=J=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ExportAllDeclaration=function(a){function b(){return b.__super__.constructor.apply(this,
arguments)}v(b,a);return b}(Y);e.ModuleSpecifierList=Y=function(a){function b(a){this.specifiers=a}v(b,a);b.prototype.children=["specifiers"];b.prototype.compileNode=function(a){var b;var l=[];a.indent+=Fa;var c=this.specifiers;var m=[];var e=0;for(b=c.length;e<b;e++){var f=c[e];m.push(f.compileToFragments(a,va))}if(0!==this.specifiers.length){l.push(this.makeCode("{\n"+a.indent));e=b=0;for(c=m.length;b<c;e=++b)f=m[e],e&&l.push(this.makeCode(",\n"+a.indent)),l.push.apply(l,f);l.push(this.makeCode("\n}"))}else l.push(this.makeCode("{}"));
return l};return b}(ta);e.ImportSpecifierList=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ExportSpecifierList=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ModuleSpecifier=n=function(a){function b(a,b,c){this.original=a;this.alias=b;this.moduleDeclarationType=c;this.identifier=null!=this.alias?this.alias.value:this.original.value}v(b,a);b.prototype.children=["original","alias"];b.prototype.compileNode=
function(a){a.scope.find(this.identifier,this.moduleDeclarationType);a=[];a.push(this.makeCode(this.original.value));null!=this.alias&&a.push(this.makeCode(" as "+this.alias.value));return a};return b}(ta);e.ImportSpecifier=Y=function(a){function b(a,d){b.__super__.constructor.call(this,a,d,"import")}v(b,a);b.prototype.compileNode=function(a){var d;(d=this.identifier,0<=R.call(a.importedSymbols,d))||a.scope.check(this.identifier)?this.error("'"+this.identifier+"' has already been declared"):a.importedSymbols.push(this.identifier);
return b.__super__.compileNode.call(this,a)};return b}(n);e.ImportDefaultSpecifier=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ImportNamespaceSpecifier=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);return b}(Y);e.ExportSpecifier=function(a){function b(a,d){b.__super__.constructor.call(this,a,d,"export")}v(b,a);return b}(n);e.Assign=x=function(a){function b(a,b,c,e){this.variable=a;this.value=b;this.context=
c;null==e&&(e={});this.param=e.param;this.subpattern=e.subpattern;this.operatorToken=e.operatorToken;this.moduleDeclaration=e.moduleDeclaration}v(b,a);b.prototype.children=["variable","value"];b.prototype.isStatement=function(a){return(null!=a?a.level:void 0)===na&&null!=this.context&&(this.moduleDeclaration||0<=R.call(this.context,"?"))};b.prototype.checkAssignability=function(a,b){if(Object.prototype.hasOwnProperty.call(a.scope.positions,b.value)&&"import"===a.scope.variables[a.scope.positions[b.value]].type)return b.error("'"+
b.value+"' is read-only")};b.prototype.assigns=function(a){return this["object"===this.context?"value":"variable"].assigns(a)};b.prototype.unfoldSoak=function(a){return Ea(a,this,"variable")};b.prototype.compileNode=function(a){var b,c,l,e,f,m,h;if(c=this.variable instanceof C){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(a);if(this.variable.isSplice())return this.compileSplice(a);if("||\x3d"===(e=this.context)||"\x26\x26\x3d"===e||"?\x3d"===e)return this.compileConditional(a);
if("**\x3d"===(f=this.context)||"//\x3d"===f||"%%\x3d"===f)return this.compileSpecialMath(a)}this.value instanceof k&&(this.value["static"]?(this.value.klass=this.variable.base,this.value.name=this.variable.properties[0],this.value.variable=this.variable):2<=(null!=(m=this.variable.properties)?m.length:void 0)&&(m=this.variable.properties,e=3<=m.length?M.call(m,0,l=m.length-2):(l=0,[]),f=m[l++],l=m[l++],"prototype"===(null!=(h=f.name)?h.value:void 0)&&(this.value.klass=new C(this.variable.base,e),
this.value.name=l,this.value.variable=this.variable)));this.context||(h=this.variable.unwrapAll(),h.isAssignable()||this.variable.error("'"+this.variable.compile(a)+"' can't be assigned"),"function"===typeof h.hasProperties&&h.hasProperties()||(this.moduleDeclaration?(this.checkAssignability(a,h),a.scope.add(h.value,this.moduleDeclaration)):this.param?a.scope.add(h.value,"var"):(this.checkAssignability(a,h),a.scope.find(h.value))));h=this.value.compileToFragments(a,va);c&&this.variable.base instanceof
q&&(this.variable.front=!0);c=this.variable.compileToFragments(a,va);if("object"===this.context){if(b=ca(c),0<=R.call(ma,b))c.unshift(this.makeCode('"')),c.push(this.makeCode('"'));return c.concat(this.makeCode(": "),h)}b=c.concat(this.makeCode(" "+(this.context||"\x3d")+" "),h);return a.level<=va?b:this.wrapInBraces(b)};b.prototype.compilePatternMatch=function(a){var d,c,l;var e=a.level===na;var f=this.value;var m=this.variable.base.objects;if(!(l=m.length)){var n=f.compileToFragments(a);return a.level>=
Ha?this.wrapInBraces(n):n}var k=m[0];1===l&&k instanceof I&&k.error("Destructuring assignment has no target");var q=this.variable.isObject();if(e&&1===l&&!(k instanceof T)){var p=null;if(k instanceof b&&"object"===k.context){n=k;var t=n.variable;var r=t.base;k=n.value;k instanceof b&&(p=k.value,k=k.variable)}else k instanceof b&&(p=k.value,k=k.variable),r=q?k["this"]?k.properties[0].name:new L(k.unwrap().value):new w(0);var x=r.unwrap()instanceof L;f=new C(f);f.properties.push(new (x?ra:Q)(r));(c=
Aa(k.unwrap().value))&&k.error(c);p&&(f=new h("?",f,p));return(new b(k,f,null,{param:this.param})).compileToFragments(a,na)}var v=f.compileToFragments(a,va);var u=ca(v);n=[];t=!1;f.unwrap()instanceof y&&!this.variable.assigns(u)||(n.push([this.makeCode((p=a.scope.freeVariable("ref"))+" \x3d ")].concat(M.call(v))),v=[this.makeCode(p)],u=p);p=f=0;for(d=m.length;f<d;p=++f){k=m[p];r=p;if(!t&&k instanceof T){c=k.name.unwrap().value;k=k.unwrap();r=l+" \x3c\x3d "+u+".length ? "+La("slice",a)+".call("+u+
", "+p;if(x=l-p-1){var K=a.scope.freeVariable("i",{single:!0});r+=", "+K+" \x3d "+u+".length - "+x+") : ("+K+" \x3d "+p+", [])"}else r+=") : []";r=new B(r);t=K+"++"}else if(!t&&k instanceof I){if(x=l-p-1)1===x?t=u+".length - 1":(K=a.scope.freeVariable("i",{single:!0}),r=new B(K+" \x3d "+u+".length - "+x),t=K+"++",n.push(r.compileToFragments(a,va)));continue}else(k instanceof T||k instanceof I)&&k.error("multiple splats/expansions are disallowed in an assignment"),p=null,k instanceof b&&"object"===
k.context?(r=k.variable,r=r.base,k=k.value,k instanceof b&&(p=k.value,k=k.variable)):(k instanceof b&&(p=k.value,k=k.variable),r=q?k["this"]?k.properties[0].name:new L(k.unwrap().value):new B(t||r)),c=k.unwrap().value,x=r.unwrap()instanceof L,r=new C(new B(u),[new (x?ra:Q)(r)]),p&&(r=new h("?",r,p));null!=c&&(c=Aa(c))&&k.error(c);n.push((new b(k,r,null,{param:this.param,subpattern:!0})).compileToFragments(a,va))}e||this.subpattern||n.push(v);n=this.joinFragmentArrays(n,", ");return a.level<va?n:this.wrapInBraces(n)};
b.prototype.compileConditional=function(a){var d=this.variable.cacheReference(a);var c=d[0];d=d[1];c.properties.length||!(c.base instanceof B)||c.base instanceof E||a.scope.check(c.base.value)||this.variable.error('the variable "'+c.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before");if(0<=R.call(this.context,"?"))return a.isExistentialEquals=!0,(new G(new z(c),d,{type:"if"})).addElse(new b(d,this.value,"\x3d")).compileToFragments(a);c=(new h(this.context.slice(0,
-1),c,new b(d,this.value,"\x3d"))).compileToFragments(a);return a.level<=va?c:this.wrapInBraces(c)};b.prototype.compileSpecialMath=function(a){var d=this.variable.cacheReference(a);var c=d[0];d=d[1];return(new b(c,new h(this.context.slice(0,-1),d,this.value))).compileToFragments(a)};b.prototype.compileSplice=function(a){var b=this.variable.properties.pop().range;var c=b.from;var l=b.to;var e=b.exclusive;var f=this.variable.compile(a);if(c){var m=this.cacheToCodeFragments(c.cache(a,Ha));b=m[0];m=m[1]}else b=
m="0";l?null!=c&&c.isNumber()&&l.isNumber()?(l=l.compile(a)-m,e||(l+=1)):(l=l.compile(a,Ka)+" - "+m,e||(l+=" + 1")):l="9e9";e=this.value.cache(a,va);c=e[0];e=e[1];l=[].concat(this.makeCode("[].splice.apply("+f+", ["+b+", "+l+"].concat("),c,this.makeCode(")), "),e);return a.level>na?this.wrapInBraces(l):l};return b}(ta);e.Code=k=function(b){function c(b,d,c){this.params=b||[];this.body=d||new a;this.bound="boundfunc"===c;this.isGenerator=!!this.body.contains(function(a){return a instanceof h&&a.isYield()||
a instanceof S})}v(c,b);c.prototype.children=["params","body"];c.prototype.isStatement=function(){return!!this.ctor};c.prototype.jumps=ka;c.prototype.makeScope=function(a){return new ya(a,this.body,this)};c.prototype.compileNode=function(b){var d,l,e,f;this.bound&&null!=(d=b.scope.method)&&d.bound&&(this.context=b.scope.method.context);if(this.bound&&!this.context)return this.context="_this",d=new c([new K(new y(this.context))],new a([this])),d=new za(d,[new E]),d.updateLocationDataIfMissing(this.locationData),
d.compileNode(b);b.scope=la(b,"classScope")||this.makeScope(b.scope);b.scope.shared=la(b,"sharedScope");b.indent+=Fa;delete b.bare;delete b.isExistentialEquals;d=[];var m=[];var k=this.params;var n=0;for(e=k.length;n<e;n++){var q=k[n];q instanceof I||b.scope.parameter(q.asReference(b))}k=this.params;n=0;for(e=k.length;n<e;n++)if(q=k[n],q.splat||q instanceof I){n=this.params;var p=0;for(q=n.length;p<q;p++){var w=n[p];w instanceof I||!w.name.value||b.scope.add(w.name.value,"var",!0)}p=new x(new C(new r(function(){var a;
var d=this.params;var c=[];var l=0;for(a=d.length;l<a;l++)w=d[l],c.push(w.asReference(b));return c}.call(this))),new C(new y("arguments")));break}var t=this.params;k=0;for(n=t.length;k<n;k++){q=t[k];if(q.isComplex()){var v=f=q.asReference(b);q.value&&(v=new h("?",f,q.value));m.push(new x(new C(q.name),v,"\x3d",{param:!0}))}else f=q,q.value&&(e=new B(f.name.value+" \x3d\x3d null"),v=new x(new C(q.name),q.value,"\x3d"),m.push(new G(e,v)));p||d.push(f)}q=this.body.isEmpty();p&&m.unshift(p);m.length&&
(l=this.body.expressions).unshift.apply(l,m);l=p=0;for(m=d.length;p<m;l=++p)w=d[l],d[l]=w.compileToFragments(b),b.scope.parameter(ca(d[l]));var u=[];this.eachParamName(function(a,b){0<=R.call(u,a)&&b.error("multiple parameters named "+a);return u.push(a)});q||this.noReturn||this.body.makeReturn();l="function";this.isGenerator&&(l+="*");this.ctor&&(l+=" "+this.name);m=[this.makeCode(l+"(")];l=q=0;for(p=d.length;q<p;l=++q)w=d[l],l&&m.push(this.makeCode(", ")),m.push.apply(m,w);m.push(this.makeCode(") {"));
this.body.isEmpty()||(m=m.concat(this.makeCode("\n"),this.body.compileWithDeclarations(b),this.makeCode("\n"+this.tab)));m.push(this.makeCode("}"));return this.ctor?[this.makeCode(this.tab)].concat(M.call(m)):this.front||b.level>=Ka?this.wrapInBraces(m):m};c.prototype.eachParamName=function(a){var b;var c=this.params;var l=[];var e=0;for(b=c.length;e<b;e++){var f=c[e];l.push(f.eachName(a))}return l};c.prototype.traverseChildren=function(a,b){if(a)return c.__super__.traverseChildren.call(this,a,b)};
return c}(ta);e.Param=K=function(a){function b(a,b,c){this.name=a;this.value=b;this.splat=c;(a=Aa(this.name.unwrapAll().value))&&this.name.error(a);this.name instanceof q&&this.name.generated&&(a=this.name.objects[0].operatorToken,a.error("unexpected "+a.value))}v(b,a);b.prototype.children=["name","value"];b.prototype.compileToFragments=function(a){return this.name.compileToFragments(a,va)};b.prototype.asReference=function(a){if(this.reference)return this.reference;var b=this.name;b["this"]?(b=b.properties[0].name.value,
0<=R.call(ma,b)&&(b="_"+b),b=new y(a.scope.freeVariable(b))):b.isComplex()&&(b=new y(a.scope.freeVariable("arg")));b=new C(b);this.splat&&(b=new T(b));b.updateLocationDataIfMissing(this.locationData);return this.reference=b};b.prototype.isComplex=function(){return this.name.isComplex()};b.prototype.eachName=function(a,b){var d,c;null==b&&(b=this.name);var l=function(b){return a("@"+b.properties[0].name.value,b)};if(b instanceof B)return a(b.value,b);if(b instanceof C)return l(b);b=null!=(d=b.objects)?
d:[];d=0;for(c=b.length;d<c;d++){var e=b[d];e instanceof x&&null==e.context&&(e=e.variable);e instanceof x?(e.value instanceof x&&(e=e.value),this.eachName(a,e.value.unwrap())):e instanceof T?(e=e.name.unwrap(),a(e.value,e)):e instanceof C?e.isArray()||e.isObject()?this.eachName(a,e.base):e["this"]?l(e):a(e.base.value,e.base):e instanceof I||e.error("illegal parameter "+e.compile())}};return b}(ta);e.Splat=T=function(a){function b(a){this.name=a.compile?a:new B(a)}v(b,a);b.prototype.children=["name"];
b.prototype.isAssignable=ha;b.prototype.assigns=function(a){return this.name.assigns(a)};b.prototype.compileNode=function(a){return this.name.compileToFragments(a)};b.prototype.unwrap=function(){return this.name};b.compileSplattedArray=function(a,d,c){var e,l,f,m;for(l=-1;(e=d[++l])&&!(e instanceof b););if(l>=d.length)return[];if(1===d.length)return e=d[0],d=e.compileToFragments(a,va),c?d:[].concat(e.makeCode(La("slice",a)+".call("),d,e.makeCode(")"));c=d.slice(l);var h=f=0;for(m=c.length;f<m;h=++f){e=
c[h];var k=e.compileToFragments(a,va);c[h]=e instanceof b?[].concat(e.makeCode(La("slice",a)+".call("),k,e.makeCode(")")):[].concat(e.makeCode("["),k,e.makeCode("]"))}if(0===l)return e=d[0],a=e.joinFragmentArrays(c.slice(1),", "),c[0].concat(e.makeCode(".concat("),a,e.makeCode(")"));f=d.slice(0,l);m=[];k=0;for(h=f.length;k<h;k++)e=f[k],m.push(e.compileToFragments(a,va));e=d[0].joinFragmentArrays(m,", ");a=d[l].joinFragmentArrays(c,", ");c=d[d.length-1];return[].concat(d[0].makeCode("["),e,d[l].makeCode("].concat("),
a,c.makeCode(")"))};return b}(ta);e.Expansion=I=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.isComplex=ka;b.prototype.compileNode=function(a){return this.error("Expansion must be used inside a destructuring assignment or parameter list")};b.prototype.asReference=function(a){return this};b.prototype.eachName=function(a){};return b}(ta);e.While=Y=function(b){function c(a,b){this.condition=null!=b&&b.invert?a.invert():a;this.guard=null!=b?b.guard:void 0}
v(c,b);c.prototype.children=["condition","guard","body"];c.prototype.isStatement=ha;c.prototype.makeReturn=function(a){if(a)return c.__super__.makeReturn.apply(this,arguments);this.returns=!this.jumps({loop:!0});return this};c.prototype.addBody=function(a){this.body=a;return this};c.prototype.jumps=function(){var a;var b=this.body.expressions;if(!b.length)return!1;var c=0;for(a=b.length;c<a;c++){var e=b[c];if(e=e.jumps({loop:!0}))return e}return!1};c.prototype.compileNode=function(b){var d;b.indent+=
Fa;var c="";var e=this.body;e.isEmpty()?e=this.makeCode(""):(this.returns&&(e.makeReturn(d=b.scope.freeVariable("results")),c=""+this.tab+d+" \x3d [];\n"),this.guard&&(1<e.expressions.length?e.expressions.unshift(new G((new P(this.guard)).invert(),new V("continue"))):this.guard&&(e=a.wrap([new G(this.guard,e)]))),e=[].concat(this.makeCode("\n"),e.compileToFragments(b,na),this.makeCode("\n"+this.tab)));b=[].concat(this.makeCode(c+this.tab+"while ("),this.condition.compileToFragments(b,Da),this.makeCode(") {"),
e,this.makeCode("}"));this.returns&&b.push(this.makeCode("\n"+this.tab+"return "+d+";"));return b};return c}(ta);e.Op=h=function(a){function b(a,b,d,e){if("in"===a)return new O(b,d);if("do"===a)return this.generateDo(b);if("new"===a){if(b instanceof za&&!b["do"]&&!b.isNew)return b.newInstance();if(b instanceof k&&b.bound||b["do"])b=new P(b)}this.operator=c[a]||a;this.first=b;this.second=d;this.flip=!!e;return this}v(b,a);var c={"\x3d\x3d":"\x3d\x3d\x3d","!\x3d":"!\x3d\x3d",of:"in",yieldfrom:"yield*"};
var d={"!\x3d\x3d":"\x3d\x3d\x3d","\x3d\x3d\x3d":"!\x3d\x3d"};b.prototype.children=["first","second"];b.prototype.isNumber=function(){var a;return this.isUnary()&&("+"===(a=this.operator)||"-"===a)&&this.first instanceof C&&this.first.isNumber()};b.prototype.isYield=function(){var a;return"yield"===(a=this.operator)||"yield*"===a};b.prototype.isUnary=function(){return!this.second};b.prototype.isComplex=function(){return!this.isNumber()};b.prototype.isChainable=function(){var a;return"\x3c"===(a=this.operator)||
"\x3e"===a||"\x3e\x3d"===a||"\x3c\x3d"===a||"\x3d\x3d\x3d"===a||"!\x3d\x3d"===a};b.prototype.invert=function(){var a,c;if(this.isChainable()&&this.first.isChainable()){var e=!0;for(a=this;a&&a.operator;)e&&(e=a.operator in d),a=a.first;if(!e)return(new P(this)).invert();for(a=this;a&&a.operator;)a.invert=!a.invert,a.operator=d[a.operator],a=a.first;return this}return(a=d[this.operator])?(this.operator=a,this.first.unwrap()instanceof b&&this.first.invert(),this):this.second?(new P(this)).invert():
"!"===this.operator&&(e=this.first.unwrap())instanceof b&&("!"===(c=e.operator)||"in"===c||"instanceof"===c)?e:new b("!",this)};b.prototype.unfoldSoak=function(a){var b;return("++"===(b=this.operator)||"--"===b||"delete"===b)&&Ea(a,this,"first")};b.prototype.generateDo=function(a){var b,d;var c=[];var e=(a instanceof x&&(b=a.value.unwrap())instanceof k?b:a).params||[];b=0;for(d=e.length;b<d;b++){var l=e[b];l.value?(c.push(l.value),delete l.value):c.push(l)}a=new za(a,c);a["do"]=!0;return a};b.prototype.compileNode=
function(a){var b;var d=this.isChainable()&&this.first.isChainable();d||(this.first.front=this.front);"delete"===this.operator&&a.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var");("--"===(b=this.operator)||"++"===b)&&(b=Aa(this.first.unwrapAll().value))&&this.first.error(b);if(this.isYield())return this.compileYield(a);if(this.isUnary())return this.compileUnary(a);if(d)return this.compileChain(a);switch(this.operator){case "?":return this.compileExistence(a);
case "**":return this.compilePower(a);case "//":return this.compileFloorDivision(a);case "%%":return this.compileModulo(a);default:return d=this.first.compileToFragments(a,Ha),b=this.second.compileToFragments(a,Ha),d=[].concat(d,this.makeCode(" "+this.operator+" "),b),a.level<=Ha?d:this.wrapInBraces(d)}};b.prototype.compileChain=function(a){var b=this.first.second.cache(a);this.first.second=b[0];b=b[1];a=this.first.compileToFragments(a,Ha).concat(this.makeCode(" "+(this.invert?"\x26\x26":"||")+" "),
b.compileToFragments(a),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(a,Ha));return this.wrapInBraces(a)};b.prototype.compileExistence=function(a){if(this.first.isComplex()){var b=new y(a.scope.freeVariable("ref"));var d=new P(new x(b,this.first))}else b=d=this.first;return(new G(new z(d),b,{type:"if"})).addElse(this.second).compileToFragments(a)};b.prototype.compileUnary=function(a){var d=[];var c=this.operator;d.push([this.makeCode(c)]);if("!"===c&&this.first instanceof z)return this.first.negated=
!this.first.negated,this.first.compileToFragments(a);if(a.level>=Ka)return(new P(this)).compileToFragments(a);var e="+"===c||"-"===c;("new"===c||"typeof"===c||"delete"===c||e&&this.first instanceof b&&this.first.operator===c)&&d.push([this.makeCode(" ")]);if(e&&this.first instanceof b||"new"===c&&this.first.isStatement(a))this.first=new P(this.first);d.push(this.first.compileToFragments(a,Ha));this.flip&&d.reverse();return this.joinFragmentArrays(d,"")};b.prototype.compileYield=function(a){var b;
var d=[];var c=this.operator;null==a.scope.parent&&this.error("yield can only occur inside functions");0<=R.call(Object.keys(this.first),"expression")&&!(this.first instanceof aa)?null!=this.first.expression&&d.push(this.first.expression.compileToFragments(a,Ha)):(a.level>=Da&&d.push([this.makeCode("(")]),d.push([this.makeCode(c)]),""!==(null!=(b=this.first.base)?b.value:void 0)&&d.push([this.makeCode(" ")]),d.push(this.first.compileToFragments(a,Ha)),a.level>=Da&&d.push([this.makeCode(")")]));return this.joinFragmentArrays(d,
"")};b.prototype.compilePower=function(a){var b=new C(new y("Math"),[new ra(new L("pow"))]);return(new za(b,[this.first,this.second])).compileToFragments(a)};b.prototype.compileFloorDivision=function(a){var d=new C(new y("Math"),[new ra(new L("floor"))]);var c=this.second.isComplex()?new P(this.second):this.second;c=new b("/",this.first,c);return(new za(d,[c])).compileToFragments(a)};b.prototype.compileModulo=function(a){var b=new C(new B(La("modulo",a)));return(new za(b,[this.first,this.second])).compileToFragments(a)};
b.prototype.toString=function(a){return b.__super__.toString.call(this,a,this.constructor.name+" "+this.operator)};return b}(ta);e.In=O=function(a){function b(a,b){this.object=a;this.array=b}v(b,a);b.prototype.children=["object","array"];b.prototype.invert=sa;b.prototype.compileNode=function(a){var b;if(this.array instanceof C&&this.array.isArray()&&this.array.base.objects.length){var c=this.array.base.objects;var e=0;for(b=c.length;e<b;e++){var l=c[e];if(l instanceof T){var f=!0;break}}if(!f)return this.compileOrTest(a)}return this.compileLoopTest(a)};
b.prototype.compileOrTest=function(a){var b,c;var e=this.object.cache(a,Ha);var f=e[0];var l=e[1];var h=this.negated?[" !\x3d\x3d "," \x26\x26 "]:[" \x3d\x3d\x3d "," || "];e=h[0];h=h[1];var m=[];var k=this.array.base.objects;var n=b=0;for(c=k.length;b<c;n=++b){var q=k[n];n&&m.push(this.makeCode(h));m=m.concat(n?l:f,this.makeCode(e),q.compileToFragments(a,Ka))}return a.level<Ha?m:this.wrapInBraces(m)};b.prototype.compileLoopTest=function(a){var b=this.object.cache(a,va);var c=b[0];var e=b[1];b=[].concat(this.makeCode(La("indexOf",
a)+".call("),this.array.compileToFragments(a,va),this.makeCode(", "),e,this.makeCode(") "+(this.negated?"\x3c 0":"\x3e\x3d 0")));if(ca(c)===ca(e))return b;b=c.concat(this.makeCode(", "),b);return a.level<va?b:this.wrapInBraces(b)};b.prototype.toString=function(a){return b.__super__.toString.call(this,a,this.constructor.name+(this.negated?"!":""))};return b}(ta);e.Try=function(a){function b(a,b,c,e){this.attempt=a;this.errorVariable=b;this.recovery=c;this.ensure=e}v(b,a);b.prototype.children=["attempt",
"recovery","ensure"];b.prototype.isStatement=ha;b.prototype.jumps=function(a){var b;return this.attempt.jumps(a)||(null!=(b=this.recovery)?b.jumps(a):void 0)};b.prototype.makeReturn=function(a){this.attempt&&(this.attempt=this.attempt.makeReturn(a));this.recovery&&(this.recovery=this.recovery.makeReturn(a));return this};b.prototype.compileNode=function(a){var b,c,e;a.indent+=Fa;var f=this.attempt.compileToFragments(a,na);var l=this.recovery?(b=a.scope.freeVariable("error",{reserve:!1}),e=new y(b),
this.errorVariable?(c=Aa(this.errorVariable.unwrapAll().value),c?this.errorVariable.error(c):void 0,this.recovery.unshift(new x(this.errorVariable,e))):void 0,[].concat(this.makeCode(" catch ("),e.compileToFragments(a),this.makeCode(") {\n"),this.recovery.compileToFragments(a,na),this.makeCode("\n"+this.tab+"}"))):this.ensure||this.recovery?[]:(b=a.scope.freeVariable("error",{reserve:!1}),[this.makeCode(" catch ("+b+") {}")]);a=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(a,
na),this.makeCode("\n"+this.tab+"}")):[];return[].concat(this.makeCode(this.tab+"try {\n"),f,this.makeCode("\n"+this.tab+"}"),l,a)};return b}(ta);e.Throw=aa=function(a){function b(a){this.expression=a}v(b,a);b.prototype.children=["expression"];b.prototype.isStatement=ha;b.prototype.jumps=ka;b.prototype.makeReturn=oa;b.prototype.compileNode=function(a){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(a),this.makeCode(";"))};return b}(ta);e.Existence=z=function(a){function b(a){this.expression=
a}v(b,a);b.prototype.children=["expression"];b.prototype.invert=sa;b.prototype.compileNode=function(a){this.expression.front=this.front;var b=this.expression.compile(a,Ha);if(this.expression.unwrap()instanceof y&&!a.scope.check(b)){var c=this.negated?["\x3d\x3d\x3d","||"]:["!\x3d\x3d","\x26\x26"];var e=c[0];c=c[1];b="typeof "+b+" "+e+' "undefined" '+c+" "+b+" "+e+" null"}else b=b+" "+(this.negated?"\x3d\x3d":"!\x3d")+" null";return[this.makeCode(a.level<=gb?b:"("+b+")")]};return b}(ta);e.Parens=P=
function(a){function b(a){this.body=a}v(b,a);b.prototype.children=["body"];b.prototype.unwrap=function(){return this.body};b.prototype.isComplex=function(){return this.body.isComplex()};b.prototype.compileNode=function(a){var b=this.body.unwrap();if(b instanceof C&&b.isAtomic())return b.front=this.front,b.compileToFragments(a);var c=b.compileToFragments(a,Da);return a.level<Ha&&(b instanceof h||b instanceof za||b instanceof N&&b.returns)&&(a.level<gb||3>=c.length)?c:this.wrapInBraces(c)};return b}(ta);
e.StringWithInterpolations=A=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}v(b,a);b.prototype.compileNode=function(a){var d;if(!a.inTaggedTemplateCall)return b.__super__.compileNode.apply(this,arguments);var c=this.body.unwrap();var e=[];c.traverseChildren(!1,function(a){if(a instanceof D)e.push(a);else if(a instanceof P)return e.push(a),!1;return!0});c=[];c.push(this.makeCode("`"));var f=0;for(d=e.length;f<d;f++){var l=e[f];l instanceof D?(l=l.value.slice(1,-1),l=
l.replace(/(\\*)(`|\$\{)/g,function(a,b,d){return 0===b.length%2?b+"\\"+d:a}),c.push(this.makeCode(l))):(c.push(this.makeCode("${")),c.push.apply(c,l.compileToFragments(a,Da)),c.push(this.makeCode("}")))}c.push(this.makeCode("`"));return c};return b}(P);e.For=N=function(b){function c(b,d){this.source=d.source;this.guard=d.guard;this.step=d.step;this.name=d.name;this.index=d.index;this.body=a.wrap([b]);this.own=!!d.own;this.object=!!d.object;(this.from=!!d.from)&&this.index&&this.index.error("cannot use index with for-from");
this.own&&!this.object&&d.ownTag.error("cannot use own with for-"+(this.from?"from":"in"));this.object&&(b=[this.index,this.name],this.name=b[0],this.index=b[1]);this.index instanceof C&&!this.index.isAssignable()&&this.index.error("index cannot be a pattern matching expression");this.range=this.source instanceof C&&this.source.base instanceof U&&!this.source.properties.length&&!this.from;this.pattern=this.name instanceof C;this.range&&this.index&&this.index.error("indexes do not apply to range loops");
this.range&&this.pattern&&this.name.error("cannot pattern match over range loops");this.returns=!1}v(c,b);c.prototype.children=["body","source","guard","step"];c.prototype.compileNode=function(b){var d,c,e,f,l,h,k;var n=a.wrap([this.body]);var m=n.expressions;m=m[m.length-1];(null!=m?m.jumps():void 0)instanceof H&&(this.returns=!1);var q=this.range?this.source.base:this.source;var p=b.scope;this.pattern||(e=this.name&&this.name.compile(b,va));m=this.index&&this.index.compile(b,va);e&&!this.pattern&&
p.find(e);!m||this.index instanceof C||p.find(m);this.returns&&(c=p.freeVariable("results"));this.from?this.pattern&&(f=p.freeVariable("x",{single:!0})):f=this.object&&m||p.freeVariable("i",{single:!0});var w=(this.range||this.from)&&e||m||f;var r=w!==f?w+" \x3d ":"";if(this.step&&!this.range){m=this.cacheToCodeFragments(this.step.cache(b,va,Za));var t=m[0];var v=m[1];this.step.isNumber()&&(h=Number(v))}this.pattern&&(e=f);var u=m=k="";var K=this.tab+Fa;if(this.range)var A=q.compileToFragments(ja(b,
{index:f,name:e,step:this.step,isComplex:Za}));else{var z=this.source.compile(b,va);!e&&!this.own||this.source.unwrap()instanceof y||(u+=""+this.tab+(q=p.freeVariable("ref"))+" \x3d "+z+";\n",z=q);!e||this.pattern||this.from||(l=e+" \x3d "+z+"["+w+"]");this.object||this.from||(t!==v&&(u+=""+this.tab+t+";\n"),e=0>h,this.step&&null!=h&&e||(d=p.freeVariable("len")),A=""+r+f+" \x3d 0, "+d+" \x3d "+z+".length",t=""+r+f+" \x3d "+z+".length - 1",d=f+" \x3c "+d,p=f+" \x3e\x3d 0",this.step?(null!=h?e&&(d=
p,A=t):(d=v+" \x3e 0 ? "+d+" : "+p,A="("+v+" \x3e 0 ? ("+A+") : "+t+")"),f=f+" +\x3d "+v):f=""+(w!==f?"++"+f:f+"++"),A=[this.makeCode(A+"; "+d+"; "+r+f)])}if(this.returns){var U=""+this.tab+c+" \x3d [];\n";var D="\n"+this.tab+"return "+c+";";n.makeReturn(c)}this.guard&&(1<n.expressions.length?n.expressions.unshift(new G((new P(this.guard)).invert(),new V("continue"))):this.guard&&(n=a.wrap([new G(this.guard,n)])));this.pattern&&n.expressions.unshift(new x(this.name,this.from?new y(w):new B(z+"["+
w+"]")));c=[].concat(this.makeCode(u),this.pluckDirectCall(b,n));l&&(k="\n"+K+l+";");this.object?(A=[this.makeCode(w+" in "+z)],this.own&&(m="\n"+K+"if (!"+La("hasProp",b)+".call("+z+", "+w+")) continue;")):this.from&&(A=[this.makeCode(w+" of "+z)]);(b=n.compileToFragments(ja(b,{indent:K}),na))&&0<b.length&&(b=[].concat(this.makeCode("\n"),b,this.makeCode("\n")));return[].concat(c,this.makeCode(""+(U||"")+this.tab+"for ("),A,this.makeCode(") {"+m+k),b,this.makeCode(this.tab+"}"+(D||"")))};c.prototype.pluckDirectCall=
function(a,b){var d,c,e,f,h,l,n;var m=[];var q=b.expressions;var p=d=0;for(c=q.length;d<c;p=++d){var w=q[p];w=w.unwrapAll();if(w instanceof za){var r=null!=(e=w.variable)?e.unwrapAll():void 0;if(r instanceof k||r instanceof C&&(null!=(f=r.base)?f.unwrapAll():void 0)instanceof k&&1===r.properties.length&&("call"===(h=null!=(l=r.properties[0].name)?l.value:void 0)||"apply"===h)){var t=(null!=(n=r.base)?n.unwrapAll():void 0)||r;var v=new y(a.scope.freeVariable("fn"));var u=new C(v);r.base&&(u=[u,r],
r.base=u[0],u=u[1]);b.expressions[p]=new za(u,w.args);m=m.concat(this.makeCode(this.tab),(new x(v,t)).compileToFragments(a,na),this.makeCode(";\n"))}}}return m};return c}(Y);e.Switch=function(b){function c(a,b,c){this.subject=a;this.cases=b;this.otherwise=c}v(c,b);c.prototype.children=["subject","cases","otherwise"];c.prototype.isStatement=ha;c.prototype.jumps=function(a){var b,c;null==a&&(a={block:!0});var e=this.cases;var f=0;for(b=e.length;f<b;f++){var h=e[f];h=h[1];if(h=h.jumps(a))return h}return null!=
(c=this.otherwise)?c.jumps(a):void 0};c.prototype.makeReturn=function(b){var d,c;var e=this.cases;var f=0;for(d=e.length;f<d;f++){var h=e[f];h[1].makeReturn(b)}b&&(this.otherwise||(this.otherwise=new a([new B("void 0")])));null!=(c=this.otherwise)&&c.makeReturn(b);return this};c.prototype.compileNode=function(a){var b,c,e,f;var h=a.indent+Fa;var l=a.indent=h+Fa;var k=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(a,Da):this.makeCode("false"),this.makeCode(") {\n"));
var n=this.cases;var m=c=0;for(e=n.length;c<e;m=++c){var q=n[m];var p=q[0];q=q[1];var w=ia([p]);p=0;for(f=w.length;p<f;p++){var r=w[p];this.subject||(r=r.invert());k=k.concat(this.makeCode(h+"case "),r.compileToFragments(a,Da),this.makeCode(":\n"))}0<(b=q.compileToFragments(a,na)).length&&(k=k.concat(b,this.makeCode("\n")));if(m===this.cases.length-1&&!this.otherwise)break;m=this.lastNonComment(q.expressions);m instanceof H||m instanceof B&&m.jumps()&&"debugger"!==m.value||k.push(r.makeCode(l+"break;\n"))}this.otherwise&&
this.otherwise.expressions.length&&k.push.apply(k,[this.makeCode(h+"default:\n")].concat(M.call(this.otherwise.compileToFragments(a,na)),[this.makeCode("\n")]));k.push(this.makeCode(this.tab+"}"));return k};return c}(ta);e.If=G=function(b){function c(a,b,c){this.body=b;null==c&&(c={});this.condition="unless"===c.type?a.invert():a;this.elseBody=null;this.isChain=!1;this.soak=c.soak}v(c,b);c.prototype.children=["condition","body","elseBody"];c.prototype.bodyNode=function(){var a;return null!=(a=this.body)?
a.unwrap():void 0};c.prototype.elseBodyNode=function(){var a;return null!=(a=this.elseBody)?a.unwrap():void 0};c.prototype.addElse=function(a){this.isChain?this.elseBodyNode().addElse(a):(this.isChain=a instanceof c,this.elseBody=this.ensureBlock(a),this.elseBody.updateLocationDataIfMissing(a.locationData));return this};c.prototype.isStatement=function(a){var b;return(null!=a?a.level:void 0)===na||this.bodyNode().isStatement(a)||(null!=(b=this.elseBodyNode())?b.isStatement(a):void 0)};c.prototype.jumps=
function(a){var b;return this.body.jumps(a)||(null!=(b=this.elseBody)?b.jumps(a):void 0)};c.prototype.compileNode=function(a){return this.isStatement(a)?this.compileStatement(a):this.compileExpression(a)};c.prototype.makeReturn=function(b){b&&(this.elseBody||(this.elseBody=new a([new B("void 0")])));this.body&&(this.body=new a([this.body.makeReturn(b)]));this.elseBody&&(this.elseBody=new a([this.elseBody.makeReturn(b)]));return this};c.prototype.ensureBlock=function(b){return b instanceof a?b:new a([b])};
c.prototype.compileStatement=function(a){var b=la(a,"chainChild");if(la(a,"isExistentialEquals"))return(new c(this.condition.invert(),this.elseBodyNode(),{type:"if"})).compileToFragments(a);var e=a.indent+Fa;var f=this.condition.compileToFragments(a,Da);var h=this.ensureBlock(this.body).compileToFragments(ja(a,{indent:e}));h=[].concat(this.makeCode("if ("),f,this.makeCode(") {\n"),h,this.makeCode("\n"+this.tab+"}"));b||h.unshift(this.makeCode(this.tab));if(!this.elseBody)return h;b=h.concat(this.makeCode(" else "));
this.isChain?(a.chainChild=!0,b=b.concat(this.elseBody.unwrap().compileToFragments(a,na))):b=b.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(ja(a,{indent:e}),na),this.makeCode("\n"+this.tab+"}"));return b};c.prototype.compileExpression=function(a){var b=this.condition.compileToFragments(a,gb);var c=this.bodyNode().compileToFragments(a,va);var e=this.elseBodyNode()?this.elseBodyNode().compileToFragments(a,va):[this.makeCode("void 0")];e=b.concat(this.makeCode(" ? "),c,this.makeCode(" : "),
e);return a.level>=gb?this.wrapInBraces(e):e};c.prototype.unfoldSoak=function(){return this.soak&&this};return c}(ta);var jc={extend:function(a){return"function(child, parent) { for (var key in parent) { if ("+La("hasProp",a)+".call(parent, key)) child[key] \x3d parent[key]; } function ctor() { this.constructor \x3d child; } ctor.prototype \x3d parent.prototype; child.prototype \x3d new ctor(); child.__super__ \x3d parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},
indexOf:function(){return"[].indexOf || function(item) { for (var i \x3d 0, l \x3d this.length; i \x3c l; i++) { if (i in this \x26\x26 this[i] \x3d\x3d\x3d item) return i; } return -1; }"},modulo:function(){return"function(a, b) { return (+a % (b \x3d +b) + b) % b; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}};var na=1;var Da=2;var va=3;var gb=4;var Ha=5;var Ka=6;var Fa=" ";var Ra=/^[+-]?\d+$/;var La=function(a,b){var c=b.scope.root;if(a in c.utilities)return c.utilities[a];
var d=c.freeVariable(a);c.assign(d,jc[a](b));return c.utilities[a]=d};var Ga=function(a,b){a=a.replace(/\n/g,"$\x26"+b);return a.replace(/\s+$/,"")};var Wa=function(a){return a instanceof y&&"arguments"===a.value};var da=function(a){return a instanceof E||a instanceof k&&a.bound||a instanceof xa};var Za=function(a){return a.isComplex()||("function"===typeof a.isAssignable?a.isAssignable():void 0)};var Ea=function(a,b,c){if(a=b[c].unfoldSoak(a))return b[c]=a.body,a.body=new C(b),a}}).call(this);return e}();
u["./sourcemap"]=function(){var e={};(function(){var u=function(){function e(e){this.line=e;this.columns=[]}e.prototype.add=function(e,a,b){var r=a[0];a=a[1];null==b&&(b={});if(!this.columns[e]||!b.noReplace)return this.columns[e]={line:this.line,column:e,sourceLine:r,sourceColumn:a}};e.prototype.sourceLocation=function(e){for(var a;!((a=this.columns[e])||0>=e);)e--;return a&&[a.sourceLine,a.sourceColumn]};return e}();e=function(){function e(){this.lines=[]}e.prototype.add=function(e,a,b){var r;null==
b&&(b={});var f=a[0];a=a[1];return((r=this.lines)[f]||(r[f]=new u(f))).add(a,e,b)};e.prototype.sourceLocation=function(e){var a;var b=e[0];for(e=e[1];!((a=this.lines[b])||0>=b);)b--;return a&&a.sourceLocation(e)};e.prototype.generate=function(e,a){var b,r,f,k,t,p,u;null==e&&(e={});null==a&&(a=null);var x=f=r=u=0;var J=!1;var F="";var N=this.lines;var y=b=0;for(k=N.length;b<k;y=++b)if(y=N[y]){var G=y.columns;y=0;for(t=G.length;y<t;y++)if(p=G[y]){for(;u<p.line;)r=0,J=!1,F+=";",u++;J&&(F+=",");F+=this.encodeVlq(p.column-
r);r=p.column;F+=this.encodeVlq(0);F+=this.encodeVlq(p.sourceLine-f);f=p.sourceLine;F+=this.encodeVlq(p.sourceColumn-x);x=p.sourceColumn;J=!0}}F={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:e.sourceFiles||[""],names:[],mappings:F};e.inlineMap&&(F.sourcesContent=[a]);return F};e.prototype.encodeVlq=function(e){var a;var b="";for(a=(Math.abs(e)<<1)+(0>e?1:0);a||!b;)e=a&31,(a>>=5)&&(e|=32),b+=this.encodeBase64(e);return b};e.prototype.encodeBase64=function(e){var a;if(!(a=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[e]))throw Error("Cannot Base64 encode value: "+e);return a};return e}()}).call(this);return e}();u["./coffee-script"]=function(){var e={};(function(){var ra,r,x={}.hasOwnProperty;var a=u("fs");var b=u("vm");var za=u("path");var f=u("./lexer").Lexer;var k=u("./parser").parser;var t=u("./helpers");var p=u("./sourcemap");var z=u("../../package.json");e.VERSION=z.version;e.FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"];e.helpers=
t;var I=function(a){switch(!1){case "function"!==typeof Buffer:return(new Buffer(a)).toString("base64");case "function"!==typeof btoa:return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(a,b){return String.fromCharCode("0x"+b)}));default:throw Error("Unable to base64 encode inline sourcemap.");}};z=function(a){return function(b,e){null==e&&(e={});try{return a.call(this,b,e)}catch(h){var c=h;if("string"!==typeof b)throw c;throw t.updateSyntaxError(c,b,e.filename);}}};var J={};var F=
{};e.compile=ra=z(function(a,b){var c,e,f,n;var r=t.extend;b=r({},b);var u=b.sourceMap||b.inlineMap||null==b.filename;r=b.filename||"\x3canonymous\x3e";J[r]=a;u&&(f=new p);var y=O.tokenize(a,b);var x=b;var z=[];var B=0;for(c=y.length;B<c;B++){var G=y[B];"IDENTIFIER"===G[0]&&z.push(G[1])}x.referencedVars=z;if(null==b.bare||!0!==b.bare)for(x=0,B=y.length;x<B;x++)if(G=y[x],"IMPORT"===(e=G[0])||"EXPORT"===e){b.bare=!0;break}B=k.parse(y).compileToFragments(b);y=0;b.header&&(y+=1);b.shiftLine&&(y+=1);G=
0;e="";c=0;for(z=B.length;c<z;c++){x=B[c];if(u){x.locationData&&!/^[;\s]*$/.test(x.code)&&f.add([x.locationData.first_line,x.locationData.first_column],[y,G],{noReplace:!0});var N=t.count(x.code,"\n");y+=N;G=N?x.code.length-(x.code.lastIndexOf("\n")+1):G+x.code.length}e+=x.code}b.header&&(G="Generated by CoffeeScript "+this.VERSION,e="// "+G+"\n"+e);if(u){var D=f.generate(b,a);F[r]=f}b.inlineMap&&(a=I(JSON.stringify(D)),r="//# sourceURL\x3d"+(null!=(n=b.filename)?n:"coffeescript"),e=e+"\n"+("//# sourceMappingURL\x3ddata:application/json;base64,"+
a)+"\n"+r);return b.sourceMap?{js:e,sourceMap:f,v3SourceMap:JSON.stringify(D,null,2)}:e});e.tokens=z(function(a,b){return O.tokenize(a,b)});e.nodes=z(function(a,b){return"string"===typeof a?k.parse(O.tokenize(a,b)):k.parse(a)});e.run=function(b,c){var e;null==c&&(c={});var f=u.main;f.filename=process.argv[1]=c.filename?a.realpathSync(c.filename):"\x3canonymous\x3e";f.moduleCache&&(f.moduleCache={});var h=null!=c.filename?za.dirname(a.realpathSync(c.filename)):a.realpathSync(".");f.paths=u("module")._nodeModulePaths(h);
if(!t.isCoffee(f.filename)||u.extensions)b=ra(b,c),b=null!=(e=b.js)?e:b;return f._compile(b,f.filename)};e.eval=function(a,c){var e,f,h,k,n;null==c&&(c={});if(a=a.trim()){var p=null!=(h=b.Script.createContext)?h:b.createContext;h=null!=(f=b.isContext)?f:function(a){return c.sandbox instanceof p().constructor};if(p){if(null!=c.sandbox){if(h(c.sandbox))var r=c.sandbox;else for(k in r=p(),h=c.sandbox,h)x.call(h,k)&&(f=h[k],r[k]=f);r.global=r.root=r.GLOBAL=r}else r=global;r.__filename=c.filename||"eval";
r.__dirname=za.dirname(r.__filename);if(r===global&&!r.module&&!r.require){var t=u("module");r.module=e=new t(c.modulename||"eval");r.require=f=function(a){return t._load(a,e,!0)};e.filename=r.__filename;var y=Object.getOwnPropertyNames(u);h=0;for(n=y.length;h<n;h++){var z=y[h];"paths"!==z&&"arguments"!==z&&"caller"!==z&&(f[z]=u[z])}f.paths=e.paths=t._nodeModulePaths(process.cwd());f.resolve=function(a){return t._resolveFilename(a,e)}}}h={};for(k in c)x.call(c,k)&&(f=c[k],h[k]=f);h.bare=!0;a=ra(a,
h);return r===global?b.runInThisContext(a):b.runInContext(a,r)}};e.register=function(){return u("./register")};if(u.extensions){var N=this.FILE_EXTENSIONS;var y=function(a){var b;return null!=(b=u.extensions)[a]?b[a]:b[a]=function(){throw Error("Use CoffeeScript.register() or require the coffee-script/register module to require "+a+" files.");}};var G=0;for(r=N.length;G<r;G++)z=N[G],y(z)}e._compileFile=function(b,c,e){null==c&&(c=!1);null==e&&(e=!1);var f=a.readFileSync(b,"utf8");f=65279===f.charCodeAt(0)?
f.substring(1):f;try{var h=ra(f,{filename:b,sourceMap:c,inlineMap:e,sourceFiles:[b],literate:t.isLiterate(b)})}catch(K){throw c=K,t.updateSyntaxError(c,f,b);}return h};var O=new f;k.lexer={lex:function(){var a;if(a=k.tokens[this.pos++]){var b=a[0];this.yytext=a[1];this.yylloc=a[2];k.errorToken=a.origin||a;this.yylineno=this.yylloc.first_line}else b="";return b},setInput:function(a){k.tokens=a;return this.pos=0},upcomingInput:function(){return""}};k.yy=u("./nodes");k.yy.parseError=function(a,b){var c=
k.errorToken;var e=k.tokens;var f=c[0];var n=c[1];a=c[2];n=function(){switch(!1){case c!==e[e.length-1]:return"end of input";case "INDENT"!==f&&"OUTDENT"!==f:return"indentation";case "IDENTIFIER"!==f&&"NUMBER"!==f&&"INFINITY"!==f&&"STRING"!==f&&"STRING_START"!==f&&"REGEX"!==f&&"REGEX_START"!==f:return f.replace(/_START$/,"").toLowerCase();default:return t.nameWhitespaceCharacter(n)}}();return t.throwSyntaxError("unexpected "+n,a)};var Q=function(a,b){var c;if(a.isNative())var e="native";else{a.isEval()?
(c=a.getScriptNameOrSourceURL())||a.getEvalOrigin():c=a.getFileName();c||(c="\x3canonymous\x3e");var f=a.getLineNumber();e=a.getColumnNumber();e=(b=b(c,f,e))?c+":"+b[0]+":"+b[1]:c+":"+f+":"+e}c=a.getFunctionName();f=a.isConstructor();if(a.isToplevel()||f)return f?"new "+(c||"\x3canonymous\x3e")+" ("+e+")":c?c+" ("+e+")":e;f=a.getMethodName();var k=a.getTypeName();return c?(b=a="",k&&c.indexOf(k)&&(b=k+"."),f&&c.indexOf("."+f)!==c.length-f.length-1&&(a=" [as "+f+"]"),""+b+c+a+" ("+e+")"):k+"."+(f||
"\x3canonymous\x3e")+" ("+e+")"};var B=function(a){return null!=F[a]?F[a]:null!=F["\x3canonymous\x3e"]?F["\x3canonymous\x3e"]:null!=J[a]?(a=ra(J[a],{filename:a,sourceMap:!0,literate:t.isLiterate(a)}),a.sourceMap):null};Error.prepareStackTrace=function(a,b){var c;var f=function(a,b,c){var e;a=B(a);null!=a&&(e=a.sourceLocation([b-1,c-1]));return null!=e?[e[0]+1,e[1]+1]:null};var h=function(){var a;var h=[];var k=0;for(a=b.length;k<a;k++){c=b[k];if(c.getFunction()===e.run)break;h.push(" at "+Q(c,
f))}return h}();return a.toString()+"\n"+h.join("\n")+"\n"}}).call(this);return e}();u["./browser"]=function(){(function(){var e=[].indexOf||function(a){for(var b=0,e=this.length;b<e;b++)if(b in this&&this[b]===a)return b;return-1};var ra=u("./coffee-script");ra.require=u;var r=ra.compile;ra.eval=function(a,b){null==b&&(b={});null==b.bare&&(b.bare=!0);return eval(r(a,b))};ra.run=function(a,b){null==b&&(b={});b.bare=!0;b.shiftLine=!0;return Function(r(a,b))()};if("undefined"!==typeof window&&null!==
window){"undefined"!==typeof btoa&&null!==btoa&&"undefined"!==typeof JSON&&null!==JSON&&(r=function(a,b){null==b&&(b={});b.inlineMap=!0;return ra.compile(a,b)});ra.load=function(a,b,e,f){null==e&&(e={});null==f&&(f=!1);e.sourceFiles=[a];var k=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest;k.open("GET",a,!0);"overrideMimeType"in k&&k.overrideMimeType("text/plain");k.onreadystatechange=function(){var r;if(4===k.readyState){if(0===(r=k.status)||200===r)r=
[k.responseText,e],f||ra.run.apply(ra,r);else throw Error("Could not load "+a);if(b)return b(r)}};return k.send(null)};var x=function(){var a,b,r;var f=window.document.getElementsByTagName("script");var k=["text/coffeescript","text/literate-coffeescript"];var t=function(){var a,b;var p=[];var t=0;for(a=f.length;t<a;t++)r=f[t],(b=r.type,0<=e.call(k,b))&&p.push(r);return p}();var p=0;var u=function(){var a=t[p];if(a instanceof Array)return ra.run.apply(ra,a),p++,u()};var x=function(a,b){var e;var f=
{literate:a.type===k[1]};if(e=a.src||a.getAttribute("data-src"))return ra.load(e,function(a){t[b]=a;return u()},f,!0);f.sourceFiles=["embedded"];return t[b]=[a.innerHTML,f]};var J=a=0;for(b=t.length;a<b;J=++a){var F=t[J];x(F,J)}return u()};window.addEventListener?window.addEventListener("DOMContentLoaded",x,!1):window.attachEvent("onload",x)}}).call(this);return{}}();return u["./coffee-script"]}();"function"===typeof define&&define.amd?define(function(){return xa}):u.CoffeeScript=xa})(this);

File diff suppressed because it is too large Load Diff

View File

@@ -90,6 +90,10 @@ arrayEgal = (a, b) ->
@eq = (a, b, msg) -> ok egal(a, b), msg or "Expected #{a} to equal #{b}"
@arrayEq = (a, b, msg) -> ok arrayEgal(a,b), msg or "Expected #{a} to deep equal #{b}"
@toJS = (str) ->
CoffeeScript.compile str, bare: yes
.replace /^\s+|\s+$/g, '' # Trim leading/trailing whitespace
@doesNotThrow = (fn) ->
fn()
@@ -166,9 +170,7 @@ test "array splat expansions with assignments", ->
eq 4, b
arrayEq [0,1,2,3,4], list
test "mixed shorthand objects in array lists", ->
arr = [
a:1
'b'
@@ -188,7 +190,6 @@ test "mixed shorthand objects in array lists", ->
eq arr[2].b, 1
eq arr[3], 'b'
test "array splats with nested arrays", ->
nonce = {}
a = [nonce]
@@ -200,6 +201,30 @@ test "array splats with nested arrays", ->
list = [1, 2, a...]
arrayEq list, [1, 2, [nonce]]
test "#4260: splat after existential operator soak", ->
a = {b: [3]}
foo = (a) -> [a]
arrayEq [a?.b...], [3]
arrayEq [c?.b ? []...], []
arrayEq foo(a?.b...), [3]
arrayEq foo(c?.b ? []...), [undefined]
e = yes
f = null
arrayEq [(a if e)?.b...], [3]
arrayEq [(a if f)?.b ? []...], []
arrayEq foo((a if e)?.b...), [3]
arrayEq foo((a if f)?.b ? []...), [undefined]
test "#1349: trailing if after splat", ->
a = [3]
b = yes
c = null
foo = (a) -> [a]
arrayEq [a if b...], [3]
arrayEq [(a if c) ? []...], []
arrayEq foo((a if b)...), [3]
arrayEq foo((a if c) ? []...), [undefined]
test "#1274: `[] = a()` compiles to `false` instead of `a()`", ->
a = false
fn = -> a = true
@@ -3146,6 +3171,17 @@ test "#748: trailing reserved identifiers", ->
nonce
eq nonce, result
test 'if-else within an assignment, condition parenthesized', ->
result = if (1 is 1) then 'correct'
eq result, 'correct'
result = if ('whatever' ? no) then 'correct'
eq result, 'correct'
f = -> 'wrong'
result = if (f?()) then 'correct' else 'wrong'
eq result, 'correct'
# Postfix
test "#3056: multiple postfix conditionals", ->
@@ -3497,20 +3533,21 @@ if require?
test "#2849: compilation error in a require()d file", ->
# Create a temporary file to require().
ok not fs.existsSync 'test/syntax-error.coffee'
fs.writeFileSync 'test/syntax-error.coffee', 'foo in bar or in baz'
tempFile = path.join os.tmpdir(), 'syntax-error.coffee'
ok not fs.existsSync tempFile
fs.writeFileSync tempFile, 'foo in bar or in baz'
try
assertErrorFormat '''
require './test/syntax-error'
''',
assertErrorFormat """
require '#{tempFile}'
""",
"""
#{path.join __dirname, 'syntax-error.coffee'}:1:15: error: unexpected in
#{fs.realpathSync tempFile}:1:15: error: unexpected in
foo in bar or in baz
^^
"""
finally
fs.unlinkSync 'test/syntax-error.coffee'
fs.unlinkSync tempFile
test "#3890 Error.prepareStackTrace doesn't throw an error if a compiled file is deleted", ->
# Adapted from https://github.com/atom/coffee-cash/blob/master/spec/coffee-cash-spec.coffee
@@ -3881,6 +3918,13 @@ test "octal escapes", ->
/a\\0\\tb\\\\\\07c/
\ \ \ \ ^\^^
'''
assertErrorFormat '''
/a\\1\\tb\\\\\\07c/
''', '''
[stdin]:1:10: error: octal escape sequences are not allowed \\07
/a\\1\\tb\\\\\\07c/
\ \ \ \ ^\^^
'''
assertErrorFormat '''
///a
#{b} \\01///
@@ -4676,6 +4720,119 @@ test "can't use pattern matches for loop indices", ->
^^^
'''
test "#4248: Unicode code point escapes", ->
assertErrorFormat '''
"a
#{b} \\u{G02}
c"
''', '''
[stdin]:2:8: error: invalid escape sequence \\u{G02}
#{b} \\u{G02}
^\^^^^^^
'''
assertErrorFormat '''
/a\\u{}b/
''', '''
[stdin]:1:3: error: invalid escape sequence \\u{}
/a\\u{}b/
^\^^^
'''
assertErrorFormat '''
///a \\u{01abc///
''', '''
[stdin]:1:6: error: invalid escape sequence \\u{01abc
///a \\u{01abc///
^\^^^^^^^
'''
assertErrorFormat '''
/\\u{123} \\u{110000}/
''', '''
[stdin]:1:10: error: unicode code point escapes greater than \\u{10ffff} are not allowed
/\\u{123} \\u{110000}/
\ ^\^^^^^^^^^
'''
assertErrorFormat '''
///abc\\\\\\u{123456}///u
''', '''
[stdin]:1:9: error: unicode code point escapes greater than \\u{10ffff} are not allowed
///abc\\\\\\u{123456}///u
\ \^\^^^^^^^^^
'''
assertErrorFormat '''
"""
\\u{123}
a
\\u{00110000}
#{ 'b' }
"""
''', '''
[stdin]:4:5: error: unicode code point escapes greater than \\u{10ffff} are not allowed
\\u{00110000}
^\^^^^^^^^^^^
'''
assertErrorFormat '''
'\\u{a}\\u{1111110000}'
''', '''
[stdin]:1:7: error: unicode code point escapes greater than \\u{10ffff} are not allowed
'\\u{a}\\u{1111110000}'
\ ^\^^^^^^^^^^^^^
'''
test "#4283: error message for implicit call", ->
assertErrorFormat '''
console.log {search, users, contacts users_to_display}
''', '''
[stdin]:1:29: error: unexpected implicit function call
console.log {search, users, contacts users_to_display}
^^^^^^^^
'''
test "#3199: error message for call indented non-object", ->
assertErrorFormat '''
fn = ->
fn
1
''', '''
[stdin]:3:1: error: unexpected indentation
1
^^
'''
test "#3199: error message for call indented comprehension", ->
assertErrorFormat '''
fn = ->
fn
x for x in [1, 2, 3]
''', '''
[stdin]:3:1: error: unexpected indentation
x for x in [1, 2, 3]
^^
'''
test "#3199: error message for return indented non-object", ->
assertErrorFormat '''
return
1
''', '''
[stdin]:2:3: error: unexpected number
1
^
'''
test "#3199: error message for return indented comprehension", ->
assertErrorFormat '''
return
x for x in [1, 2, 3]
''', '''
[stdin]:2:3: error: unexpected identifier
x for x in [1, 2, 3]
^
'''
</script>
<script type="text/x-coffeescript" class="test" id="eval">
if vm = require? 'vm'
@@ -4986,6 +5143,9 @@ test "indented heredoc", ->
# * single line arguments
# * inline function literal
# * inline object literal
#
# * chaining inside
# * implicit object literal
test "chaining after outdent", ->
id = (x) -> x
@@ -5056,6 +5216,47 @@ test "#1495, method call chaining", ->
).join ', '
eq 'a, b, c', result
test "chaining should not wrap spilling ternary", ->
throws -> CoffeeScript.compile """
if 0 then 1 else g
a: 42
.h()
"""
test "chaining should wrap calls containing spilling ternary", ->
f = (x) -> h: x
id = (x) -> x
result = f if true then 42 else id
a: 2
.h
eq 42, result
test "chaining should work within spilling ternary", ->
f = (x) -> h: x
id = (x) -> x
result = f if false then 1 else id
a: 3
.a
eq 3, result.h
test "method call chaining inside objects", ->
f = (x) -> c: 42
result =
a: f 1
b: f a: 1
.c
eq 42, result.b
test "#4568: refine sameLine implicit object tagging", ->
condition = yes
fn = -> yes
x =
fn bar: {
foo: 123
} if not condition
eq x, undefined
# Nested blocks caused by paren unwrapping
test "#1492: Nested blocks don't cause double semicolons", ->
js = CoffeeScript.compile '(0;0)'
@@ -5113,6 +5314,13 @@ test "#1275: allow indentation before closing brackets", ->
)
eq 1, a
test "#3199: return multiline implicit object", ->
y = do ->
if no then return
type: 'a'
msg: 'b'
eq undefined, y
</script>
<script type="text/x-coffeescript" class="test" id="function_invocation">
# Function Invocation
@@ -7558,6 +7766,29 @@ test "Verify indented heredocs have the right position", ->
eq stringToken[2].last_line, 3
eq stringToken[2].last_column, 4
test "Verify heregexes with interpolations have the right ending position", ->
source = '''
[a ///#{b}///g]
'''
[..., stringEnd, comma, flagsString, regexCallEnd, regexEnd, fnCallEnd,
arrayEnd, terminator] = CoffeeScript.tokens source
eq comma[0], ','
eq arrayEnd[0], ']'
assertColumn = (token, column) ->
eq token[2].first_line, 0
eq token[2].first_column, column
eq token[2].last_line, 0
eq token[2].last_column, column
arrayEndColumn = arrayEnd[2].first_column
for token in [comma, flagsString]
assertColumn token, arrayEndColumn - 2
for token in [regexCallEnd, regexEnd, fnCallEnd]
assertColumn token, arrayEndColumn - 1
assertColumn arrayEnd, arrayEndColumn
test "Verify all tokens get a location", ->
doesNotThrow ->
tokens = CoffeeScript.tokens testScript
@@ -7604,12 +7835,6 @@ test "Verify all tokens get a location", ->
# CoffeeScript also supports optional commas within `{ … }`.
# Helper function
toJS = (str) ->
CoffeeScript.compile str, bare: yes
.replace /^\s+|\s+$/g, '' # Trim leading/trailing whitespace
# Import statements
test "backticked import statement", ->
@@ -7921,6 +8146,47 @@ test "export default object", ->
};"""
eq toJS(input), output
test "export default implicit object", ->
input = "export default foo: 'bar', baz: 'qux'"
output = """
export default {
foo: 'bar',
baz: 'qux'
};"""
eq toJS(input), output
test "export default multiline implicit object", ->
input = """
export default
foo: 'bar'
baz: 'qux'
"""
output = """
export default {
foo: 'bar',
baz: 'qux'
};"""
eq toJS(input), output
test "export default multiline implicit object with internal braces", ->
input = """
export default
foo: yes
bar: {
baz
}
quz: no
"""
output = """
export default {
foo: true,
bar: {
baz: baz
},
quz: false
};"""
eq toJS(input), output
test "export default assignment expression", ->
input = "export default foo = 'bar'"
output = """
@@ -8286,7 +8552,7 @@ test "export an aliased member named default", ->
};"""
eq toJS(input), output
test "export an imported member named default", ->
test "import an imported member named default", ->
input = "import { default } from 'lib'"
output = """
import {
@@ -8294,7 +8560,7 @@ test "export an imported member named default", ->
} from 'lib';"""
eq toJS(input), output
test "export an imported aliased member named default", ->
test "import an imported aliased member named default", ->
input = "import { default as def } from 'lib'"
output = """
import {
@@ -8302,6 +8568,153 @@ test "export an imported aliased member named default", ->
} from 'lib';"""
eq toJS(input), output
test "export an imported member named default", ->
input = "export { default } from 'lib'"
output = """
export {
default
} from 'lib';"""
eq toJS(input), output
test "export an imported aliased member named default", ->
input = "export { default as def } from 'lib'"
output = """
export {
default as def
} from 'lib';"""
eq toJS(input), output
test "#4394: export shouldn't prevent variable declarations", ->
input = """
x = 1
export { x }
"""
output = """
var x;
x = 1;
export {
x
};
"""
eq toJS(input), output
test "#4451: `default` in an export statement is only treated as a keyword when it follows `export` or `as`", ->
input = "export default { default: 1 }"
output = """
export default {
"default": 1
};
"""
eq toJS(input), output
test "#4491: import- and export-specific lexing should stop after import/export statement", ->
input = """
import {
foo,
bar as baz
} from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import {
foo,
bar as baz
} from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
import { foo, bar as baz } from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import {
foo,
bar as baz
} from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
import * as lib from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import * as lib from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
export {
foo,
bar
}
foo as
3 * as 4
from 'foo'
"""
output = """
export {
foo,
bar
};
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
export * from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
export * from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
</script>
<script type="text/x-coffeescript" class="test" id="numbers">
# Number Literals
@@ -8973,6 +9386,18 @@ test "#4324: Shorthand after interpolated key", ->
eq 1, obj[1]
eq 2, obj.a
test "#1263: Braceless object return", ->
fn = ->
return
a: 1
b: 2
c: -> 3
obj = fn()
eq 1, obj.a
eq 2, obj.b
eq 3, obj.c()
</script>
<script type="text/x-coffeescript" class="test" id="operators">
# Operators
@@ -9503,6 +9928,46 @@ test "operator precedence for binary ? operator", ->
eq expression.second.operator, '&&'
eq expression.second.second.base.value, 'c'
test "new calls have a range including the new", ->
source = '''
a = new B().c(d)
'''
block = CoffeeScript.nodes source
assertColumnRange = (node, firstColumn, lastColumn) ->
eq node.locationData.first_line, 0
eq node.locationData.first_column, firstColumn
eq node.locationData.last_line, 0
eq node.locationData.last_column, lastColumn
[assign] = block.expressions
outerCall = assign.value
innerValue = outerCall.variable
innerCall = innerValue.base
assertColumnRange assign, 0, 15
assertColumnRange outerCall, 4, 15
assertColumnRange innerValue, 4, 12
assertColumnRange innerCall, 4, 10
test "location data is properly set for nested `new`", ->
source = '''
new new A()()
'''
block = CoffeeScript.nodes source
assertColumnRange = (node, firstColumn, lastColumn) ->
eq node.locationData.first_line, 0
eq node.locationData.first_column, firstColumn
eq node.locationData.last_line, 0
eq node.locationData.last_column, lastColumn
[outerCall] = block.expressions
innerCall = outerCall.variable
assertColumnRange outerCall, 0, 12
assertColumnRange innerCall, 4, 10
</script>
<script type="text/x-coffeescript" class="test" id="ranges">
# Range Literals
@@ -9899,6 +10364,37 @@ test "#3795: Escape otherwise invalid characters", ->
ok ///#{a}\0
1///.test 'a\x001'
test "#4248: Unicode code point escapes", ->
# Support for the `u` flag in regexes was added in Node 6.
return if new RegExp().unicode is undefined
ok /a\u{1ab}c/u.test 'a\u01abc'
ok ///#{ 'a' }\u{000001ab}c///u.test 'a\u{1ab}c'
ok ///a\u{000001ab}c///u.test 'a\u{1ab}c'
ok /a\u{12345}c/u.test 'a\ud808\udf45c'
# and now without u flag
ok /a\u{1ab}c/.test 'a\u01abc'
ok ///#{ 'a' }\u{000001ab}c///.test 'a\u{1ab}c'
ok ///a\u{000001ab}c///.test 'a\u{1ab}c'
ok /a\u{12345}c/.test 'a\ud808\udf45c'
# rewrite code point escapes
input = """
/\\u{bcdef}\\u{abc}/u
"""
output = """
/\\udab3\\uddef\\u0abc/u;
"""
eq toJS(input), output
input = """
///#{ 'a' }\\u{bcdef}///
"""
output = """
/a\\udab3\\uddef/;
"""
eq toJS(input), output
</script>
<script type="text/x-coffeescript" class="test" id="repl">
return if global.testingBrowser
@@ -9970,6 +10466,11 @@ testRepl "variables are saved", (input, output) ->
eq "'foobar'", output.lastWrite()
testRepl "empty command evaluates to undefined", (input, output) ->
# A regression fixed in Node 5.11.0 broke the handling of pressing enter in
# the Node REPL; see https://github.com/nodejs/node/pull/6090 and
# https://github.com/jashkenas/coffeescript/issues/4502.
# Just skip this test for versions of Node < 6.
return if parseInt(process.versions.node.split('.')[0], 10) < 6
input.emitLine ''
eq 'undefined', output.lastWrite()
@@ -10012,7 +10513,9 @@ testRepl "keeps running after runtime error", (input, output) ->
eq 'undefined', output.lastWrite()
process.on 'exit', ->
fs.unlinkSync historyFile
try
fs.unlinkSync historyFile
catch exception # Already deleted, nothing else to do.
</script>
<script type="text/x-coffeescript" class="test" id="scope">
@@ -10641,10 +11144,10 @@ test "`Future Reserved Word`s, `eval` and `arguments` restrictions", ->
check "#{keyword} *= 1"
check "#{keyword} /= 1"
check "#{keyword} ?= 1"
check "{keyword}++"
check "++{keyword}"
check "{keyword}--"
check "--{keyword}"
check "#{keyword}++"
check "++#{keyword}"
check "#{keyword}--"
check "--#{keyword}"
destruct = (keyword, check = strict) ->
check "{#{keyword}}"
check "o = {#{keyword}}"
@@ -11087,6 +11590,36 @@ test "#4314: Whitespace less than or equal to stripped indentation", ->
#{1} #{2} #{3} #{4} #{5} end
a #{0} b"""
test "#4248: Unicode code point escapes", ->
eq '\u01ab\u00cd', '\u{1ab}\u{cd}'
eq '\u01ab', '\u{000001ab}'
eq 'a\u01ab', "#{ 'a' }\u{1ab}"
eq '\u01abc', '''\u{01ab}c'''
eq '\u01abc', """\u{1ab}#{ 'c' }"""
eq '\udab3\uddef', '\u{bcdef}'
eq '\udab3\uddef', '\u{0000bcdef}'
eq 'a\udab3\uddef', "#{ 'a' }\u{bcdef}"
eq '\udab3\uddefc', '''\u{0bcdef}c'''
eq '\udab3\uddefc', """\u{bcdef}#{ 'c' }"""
eq '\\u{123456}', "#{'\\'}#{'u{123456}'}"
# rewrite code point escapes
input = """
'\\u{bcdef}\\u{abc}'
"""
output = """
'\\udab3\\uddef\\u0abc';
"""
eq toJS(input), output
input = """
"#{ 'a' }\\u{bcdef}"
"""
output = """
"a\\udab3\\uddef";
"""
eq toJS(input), output
</script>
<script type="text/x-coffeescript" class="test" id="tagged_template_literals">
# Tagged template literals

View File

@@ -1,5 +1,5 @@
import 'local-file.coffee'
import 'coffee-script'
import 'coffeescript'
import _ from 'underscore'
import * as underscore from 'underscore'

View File

@@ -2,12 +2,12 @@
There are a number of excellent resources to help you get started with CoffeeScript, some of which are freely available online.
* [The Little Book on CoffeeScript](http://arcturo.github.com/library/coffeescript/) is a brief 5-chapter introduction to CoffeeScript, written with great clarity and precision by [Alex MacCaw](http://alexmaccaw.co.uk/).
* [Smooth CoffeeScript](http://autotelicum.github.com/Smooth-CoffeeScript/) is a reimagination of the excellent book [Eloquent JavaScript](http://eloquentjavascript.net/), as if it had been written in CoffeeScript instead. Covers language features as well as the functional and object oriented programming styles. By [E. Hoigaard](https://github.com/autotelicum).
* [The Little Book on CoffeeScript](http://arcturo.github.io/library/coffeescript/) is a brief 5-chapter introduction to CoffeeScript, written with great clarity and precision by [Alex MacCaw](http://alexmaccaw.co.uk/).
* [Smooth CoffeeScript](http://autotelicum.github.io/Smooth-CoffeeScript/) is a reimagination of the excellent book [Eloquent JavaScript](http://eloquentjavascript.net/), as if it had been written in CoffeeScript instead. Covers language features as well as the functional and object oriented programming styles. By [E. Hoigaard](https://github.com/autotelicum).
* [CoffeeScript: Accelerated JavaScript Development](http://pragprog.com/book/tbcoffee/coffeescript) is [Trevor Burnham](http://trevorburnham.com/)s thorough introduction to the language. By the end of the book, youll have built a fast-paced multiplayer word game, writing both the client-side and Node.js portions in CoffeeScript.
* [CoffeeScript Programming with jQuery, Rails, and Node.js](http://www.packtpub.com/coffeescript-programming-with-jquery-rails-nodejs/book) is a new book by Michael Erasmus that covers CoffeeScript with an eye towards real-world usage both in the browser (jQuery) and on the server-side (Rails, Node).
* [CoffeeScript Programming with jQuery, Rails, and Node.js](https://www.packtpub.com/web-development/coffeescript-programming-jquery-rails-and-nodejs) is a new book by Michael Erasmus that covers CoffeeScript with an eye towards real-world usage both in the browser (jQuery) and on the server-side (Rails, Node).
* [CoffeeScript Ristretto](https://leanpub.com/coffeescript-ristretto/read) is a deep dive into CoffeeScripts semantics from simple functions up through closures, higher-order functions, objects, classes, combinators, and decorators. By [Reg Braithwaite](http://braythwayt.com/).
* [Testing with CoffeeScript](https://efendibooks.com/minibooks/testing-with-coffeescript) is a succinct and freely downloadable guide to building testable applications with CoffeeScript and Jasmine.
* [CoffeeScript Application Development](http://www.packtpub.com/coffeescript-application-development/book) from Packt, introduces CoffeeScript while walking through the process of building a demonstration web application. A [CoffeeScript Application Development Coookbook](https://www.packtpub.com/web-development/coffeescript-application-development-cookbook) with over 90 “recipes” is also available.
* [CoffeeScript in Action](http://www.manning.com/lee/) from Manning Publications, covers CoffeeScript syntax, composition techniques and application development.
* [CoffeeScript: Die Alternative zu JavaScript](http://www.dpunkt.de/buecher/4021/coffeescript.html) from dpunkt.verlag, is the first CoffeeScript book in Deutsch.
* [CoffeeScript Application Development](https://www.packtpub.com/web-development/coffeescript-application-development) from Packt, introduces CoffeeScript while walking through the process of building a demonstration web application. A [CoffeeScript Application Development Coookbook](https://www.packtpub.com/web-development/coffeescript-application-development-cookbook) with over 90 “recipes” is also available.
* [CoffeeScript in Action](https://www.manning.com/books/coffeescript-in-action) from Manning Publications, covers CoffeeScript syntax, composition techniques and application development.
* [CoffeeScript: Die Alternative zu JavaScript](https://www.dpunkt.de/buecher/4021/coffeescript.html) from dpunkt.verlag, is the first CoffeeScript book in Deutsch.

View File

@@ -8,4 +8,4 @@ Task definitions are written in CoffeeScript, so you can put arbitrary code in y
codeFor('cake_tasks')
```
If you need to invoke one task before another — for example, running `build` before `test`, you can use the `invoke` function: `invoke 'build'`. Cake tasks are a minimal way to expose your CoffeeScript functions to the command line, so [dont expect any fanciness built-in](v<%= majorVersion %>/annotated-source/cake.html). If you need dependencies, or async callbacks, its best to put them in your code itself — not the cake task.
If you need to invoke one task before another — for example, running `build` before `test`, you can use the `invoke` function: `invoke 'build'`. Cake tasks are a minimal way to expose your CoffeeScript functions to the command line, so [dont expect any fanciness built-in](annotated-source/cake.html). If you need dependencies, or async callbacks, its best to put them in your code itself — not the cake task.

View File

@@ -1,5 +1,47 @@
## Change Log
```
releaseHeader('2017-11-29', '1.12.8', '1.12.7')
```
* Added install message on `coffee-script` package encouraging people to use the `coffeescript` NPM package instead.
* Backported bugfix for `export default` followed by an implicit object that contains an explicit object, for example `exportedMember: { obj... }`.
* Backported bugfix for splats after existential operator soaks in arrays (`[a?.b...]`) or expressions.
```
releaseHeader('2017-07-16', '1.12.7', '1.12.6')
```
* Fix regressions in 1.12.6 related to chained function calls and indented `return` and `throw` arguments.
* The REPL no longer warns about assigning to `_`.
```
releaseHeader('2017-05-15', '1.12.6', '1.12.5')
```
* The `return` and `export` keywords can now accept implicit objects (defined by indentation, without needing braces).
* Support Unicode code point escapes (e.g. `\u{1F4A9}`).
* The `coffee` command now first looks to see if CoffeeScript is installed under `node_modules` in the current folder, and executes the `coffee` binary there if so; or otherwise it runs the globally installed one. This allows you to have one version of CoffeeScript installed globally and a different one installed locally for a particular project. (Likewise for the `cake` command.)
* Bugfixes for chained function calls not closing implicit objects or ternaries.
* Bugfixes for incorrect code generated by the `?` operator within a termary `if` statement.
* Fixed some tests, and failing tests now result in a nonzero exit code.
```
releaseHeader('2017-04-10', '1.12.5', '1.12.4')
```
* Better handling of `default`, `from`, `as` and `*` within `import` and `export` statements. You can now import or export a member named `default` and the compiler wont interpret it as the `default` keyword.
* Fixed a bug where invalid octal escape sequences werent throwing errors in the compiler.
```
releaseHeader('2017-02-18', '1.12.4', '1.12.3')
```
* The `cake` commands have been updated, with new `watch` options for most tasks. Clone the [CoffeeScript repo](https://github.com/jashkenas/coffeescript) and run `cake` at the root of the repo to see the options.
* Fixed a bug where `export`ing a referenced variable was preventing the variable from being declared.
* Fixed a bug where the `coffee` command wasnt working for a `.litcoffee` file.
* Bugfixes related to tokens and location data, for better source maps and improved compatibility with downstream tools.
```
releaseHeader('2017-01-24', '1.12.3', '1.12.2')
```
@@ -15,7 +57,7 @@ releaseHeader('2016-12-16', '1.12.2', '1.12.1')
* The browser compiler can once again be built unminified via `MINIFY=false cake build:browser`.
* The error-prone patched version of `Error.prepareStackTrace` has been removed.
* Command completion in the REPL (pressing tab to get suggestions) has been fixed for Node 6.9.1+.
* The [browser-based tests](v<%= majorVersion %>/test.html) now include all the tests as the Node-based version.
* The [browser-based tests](test.html) now include all the tests as the Node-based version.
```
releaseHeader('2016-12-07', '1.12.1', '1.12.0')
@@ -32,7 +74,7 @@ releaseHeader('2016-12-04', '1.12.0', '1.11.1')
* CoffeeScript now provides a [`for…from`](#generator-iteration) syntax for outputting ES2015 [`for…of`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of). (Sorry they couldnt match, but we came up with `for…of` first for something else.) This allows iterating over generators or any other iterable object. Note that using `for…from` in your code makes you responsible for ensuring that either your runtime supports `for…of` or that you transpile the output JavaScript further to a version your target runtime(s) support.
* Triple backticks (`` `````) allow the creation of embedded JavaScript blocks where escaping single backticks is not required, which should improve interoperability with ES2015 template literals and with Markdown.
* Within single-backtick embedded JavaScript, backticks can now be escaped via `` \```.
* The browser tests now run in the browser again, and are accessible [here](v<%= majorVersion %>/test.html) if you would like to test your browser.
* The browser tests now run in the browser again, and are accessible [here](test.html) if you would like to test your browser.
* CoffeeScript-only keywords in ES2015 `import`s and `export`s are now ignored.
* The compiler now throws an error on trying to export an anonymous class.
* Bugfixes related to tokens and location data, for better source maps and improved compatibility with downstream tools.
@@ -197,7 +239,7 @@ releaseHeader('2013-03-18', '1.6.2', '1.6.1')
releaseHeader('2013-03-05', '1.6.1', '1.5.0')
```
* First release of [source maps](#source-maps). Pass the `--map` flag to the compiler, and off you go. Direct all your thanks over to [Jason Walton](http://github.com/jwalton).
* First release of [source maps](#source-maps). Pass the `--map` flag to the compiler, and off you go. Direct all your thanks over to [Jason Walton](https://github.com/jwalton).
* Fixed a 1.5.0 regression with multiple implicit calls against an indented implicit object. Combinations of implicit function calls and implicit objects should generally be parsed better now — but it still isnt good _style_ to nest them too heavily.
* `.coffee.md` is now also supported as a Literate CoffeeScript file extension, for existing tooling. `.litcoffee` remains the canonical one.
* Several minor fixes surrounding member properties, bound methods and `super` in class declarations.
@@ -304,7 +346,7 @@ The REPL now properly formats stacktraces, and stays alive through asynchronous
releaseHeader('2010-11-21', '0.9.5', '0.9.4')
```
0.9.5 should be considered the first release candidate for CoffeeScript 1.0. There have been a large number of internal changes since the previous release, many contributed from **satyr**s [Coco](http://github.com/satyr/coco) dialect of CoffeeScript. Heregexes (extended regexes) were added. Functions can now have default arguments. Class bodies are now executable code. Improved syntax errors for invalid CoffeeScript. `undefined` now works like `null`, and cannot be assigned a new value. There was a precedence change with respect to single-line comprehensions: `result = i for i in list`
0.9.5 should be considered the first release candidate for CoffeeScript 1.0. There have been a large number of internal changes since the previous release, many contributed from **satyr**s [Coco](https://github.com/satyr/coco) dialect of CoffeeScript. Heregexes (extended regexes) were added. Functions can now have default arguments. Class bodies are now executable code. Improved syntax errors for invalid CoffeeScript. `undefined` now works like `null`, and cannot be assigned a new value. There was a precedence change with respect to single-line comprehensions: `result = i for i in list`
used to parse as `result = (i for i in list)` by default … it now parses as
`(result = i) for i in list`.
@@ -384,7 +426,7 @@ Interpolation can now be used within regular expressions and heredocs, as well a
releaseHeader('2010-03-08', '0.5.5', '0.5.4')
```
String interpolation, contributed by [Stan Angeloff](http://github.com/StanAngeloff). Since `--run` has been the default since **0.5.3**, updating `--stdio` and `--eval` to run by default, pass `--compile` as well if youd like to print the result.
String interpolation, contributed by [Stan Angeloff](https://github.com/StanAngeloff). Since `--run` has been the default since **0.5.3**, updating `--stdio` and `--eval` to run by default, pass `--compile` as well if youd like to print the result.
```
releaseHeader('2010-03-03', '0.5.4', '0.5.3')
@@ -403,7 +445,7 @@ releaseHeader('2010-02-25', '0.5.2', '0.5.1')
```
Added a compressed version of the compiler for inclusion in web pages as
`v<%= majorVersion %>/browser-compiler/coffee-script.js`. Itll automatically run any script tags with type `text/coffeescript` for you. Added a `--stdio` option to the `coffee` command, for piped-in compiles.
`browser-compiler/coffee-script.js`. Itll automatically run any script tags with type `text/coffeescript` for you. Added a `--stdio` option to the `coffee` command, for piped-in compiles.
```
releaseHeader('2010-02-24', '0.5.1', '0.5.0')
@@ -480,7 +522,7 @@ Arguments objects are now converted into real arrays when referenced.
releaseHeader('2010-01-05', '0.2.0', '0.1.6')
```
Major release. Significant whitespace. Better statement-to-expression conversion. Splats. Splice literals. Object comprehensions. Blocks. The existential operator. Many thanks to all the folks who posted issues, with special thanks to [Liam OConnor-Davis](http://github.com/liamoc) for whitespace and expression help.
Major release. Significant whitespace. Better statement-to-expression conversion. Splats. Splice literals. Object comprehensions. Blocks. The existential operator. Many thanks to all the folks who posted issues, with special thanks to [Liam OConnor-Davis](https://github.com/liamoc) for whitespace and expression help.
```
releaseHeader('2009-12-27', '0.1.6', '0.1.5')
@@ -498,7 +540,7 @@ Array slice literals and array comprehensions can now both take Ruby-style range
releaseHeader('2009-12-25', '0.1.4', '0.1.3')
```
The official CoffeeScript extension is now `.coffee` instead of `.cs`, which properly belongs to [C#](http://en.wikipedia.org/wiki/C_Sharp_(programming_language)). Due to popular demand, you can now also use `=` to assign. Unlike JavaScript, `=` can also be used within object literals, interchangeably with `:`. Made a grammatical fix for chained function calls like `func(1)(2)(3)(4)`. Inheritance and super no longer use `__proto__`, so they should be IE-compatible now.
The official CoffeeScript extension is now `.coffee` instead of `.cs`, which properly belongs to [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)). Due to popular demand, you can now also use `=` to assign. Unlike JavaScript, `=` can also be used within object literals, interchangeably with `:`. Made a grammatical fix for chained function calls like `func(1)(2)(3)(4)`. Inheritance and super no longer use `__proto__`, so they should be IE-compatible now.
```
releaseHeader('2009-12-25', '0.1.3', '0.1.2')

View File

@@ -1,6 +1,6 @@
## Classes, Inheritance, and Super
JavaScripts prototypal inheritance has always been a bit of a brain-bender, with a whole family tree of libraries that provide a cleaner syntax for classical inheritance on top of JavaScripts prototypes: [Base2](http://code.google.com/p/base2/), [Prototype.js](http://prototypejs.org/), [JS.Class](http://jsclass.jcoglan.com/), etc. The libraries provide syntactic sugar, but the built-in inheritance would be completely usable if it werent for a couple of small exceptions: its awkward to call **super** (the prototype objects implementation of the current function), and its awkward to correctly set the prototype chain.
JavaScripts prototypal inheritance has always been a bit of a brain-bender, with a whole family tree of libraries that provide a cleaner syntax for classical inheritance on top of JavaScripts prototypes: [Base2](https://code.google.com/p/base2/), [Prototype.js](http://prototypejs.org/), [JS.Class](http://jsclass.jcoglan.com/), etc. The libraries provide syntactic sugar, but the built-in inheritance would be completely usable if it werent for a couple of small exceptions: its awkward to call **super** (the prototype objects implementation of the current function), and its awkward to correctly set the prototype chain.
Instead of repetitively attaching functions to a prototype, CoffeeScript provides a basic `class` structure that allows you to name your class, set the superclass, assign prototypal properties, and define the constructor, in a single assignable expression.

View File

@@ -1,6 +1,6 @@
## Chained Comparisons
CoffeeScript borrows [chained comparisons](http://docs.python.org/reference/expressions.html#notin) from Python — making it easy to test if a value falls within a certain range.
CoffeeScript borrows [chained comparisons](https://docs.python.org/3/reference/expressions.html#not-in) from Python — making it easy to test if a value falls within a certain range.
```
codeFor('comparisons', 'healthy')

View File

@@ -2,10 +2,9 @@
The [best list of open-source CoffeeScript examples](https://github.com/trending?l=coffeescript&since=monthly) can be found on GitHub. But just to throw out a few more:
* **GitHub**s [Hubot](http://hubot.github.com/), a friendly IRC robot that can perform any number of useful and useless tasks.
* **GitHub**s [Hubot](https://hubot.github.com/), a friendly IRC robot that can perform any number of useful and useless tasks.
* **sstephenson**s [Pow](http://pow.cx/), a zero-configuration Rack server, with comprehensive annotated source.
* **technoweenie**s [Coffee-Resque](https://github.com/technoweenie/coffee-resque), a port of [Resque](https://github.com/defunkt/resque) for Node.js.
* **assaf**s [Zombie.js](http://zombie.labnotes.org/), a headless, full-stack, faux-browser testing library for Node.js.
* **stephank**s [Orona](https://github.com/stephank/orona), a remake of the Bolo tank game for modern browsers.
* **GitHub**s [Atom](https://atom.io/), a hackable text editor built on web technologies.
* **Basecamp**s [Trix](https://trix-editor.org/), a rich text editor for web apps.

View File

@@ -12,6 +12,8 @@ If we had used `->` in the callback above, `@customer` would have referred to th
When used in a class definition, methods declared with the fat arrow will be automatically bound to each instance of the class when the instance is constructed.
<div id="generator-functions" class="bookmark"></div>
CoffeeScript functions also support [ES2015 generator functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*) through the `yield` keyword. Theres no `function*(){}` nonsense — a generator in CoffeeScript is simply a function that yields.
```
@@ -20,6 +22,8 @@ codeFor('generators', 'ps.next().value')
`yield*` is called `yield from`, and `yield return` may be used if you need to force a generator that doesnt yield.
<div id="generator-iteration" class="bookmark"></div>
You can iterate over a generator function using `for…from`.
```

View File

@@ -1,15 +1,19 @@
## Installation
The command-line version of `coffee` is available as a [Node.js](http://nodejs.org/) utility. The [core compiler](v<%= majorVersion %>/browser-compiler/coffee-script.js) however, does not depend on Node, and can be run in any JavaScript environment, or in the browser (see [Try CoffeeScript](#try)).
The command-line version of `coffee` is available as a [Node.js](https://nodejs.org/) utility. The [core compiler](browser-compiler/coffee-script.js) however, does not depend on Node, and can be run in any JavaScript environment, or in the browser (see [Try CoffeeScript](#try)).
To install, first make sure you have a working copy of the latest stable version of [Node.js](http://nodejs.org/). You can then install CoffeeScript globally with [npm](http://npmjs.org):
To install, first make sure you have a working copy of the latest stable version of [Node.js](https://nodejs.org/). You can then install CoffeeScript globally with [npm](https://www.npmjs.com/):
> ```
npm install --global coffee-script
```bash
npm install --global coffeescript
```
This will make the `coffee` and `cake` commands available globally.
When you need CoffeeScript as a dependency of a project, within that projects folder you can install it locally:
> ```
npm install --save coffee-script
```bash
npm install --save coffeescript
```
The `coffee` and `cake` commands will first look in the current folder to see if CoffeeScript is installed locally, and use that version if so. This allows different versions of CoffeeScript to be installed globally and locally.

View File

@@ -4,8 +4,10 @@ The golden rule of CoffeeScript is: _“Its just JavaScript”_. The code com
The CoffeeScript compiler goes to great lengths to generate output JavaScript that runs in every JavaScript runtime, but there are exceptions. Use [generator functions](#generator-functions), [`for…from`](#generator-iteration), or [tagged template literals](#tagged-template-literals) only if you know that your [target runtimes can support them](http://kangax.github.io/compat-table/es6/). If you use [modules](#modules), you will need to [use an additional tool to resolve them](#modules-note).
**Latest Version:** [<%= fullVersion %>](http://github.com/jashkenas/coffeescript/tarball/<%= fullVersion %>)
**Latest 1.x Version:** [<%= fullVersion %>](https://github.com/jashkenas/coffeescript/tarball/<%= fullVersion %>)
> ```
npm install -g coffee-script
```bash
npm install -g coffeescript
```
**Upgrade to CoffeeScript 2!** It adds support for [ES2015 classes](/#classes), [`async`/`await`](/#async-functions), [JSX](/#jsx), <span class="nowrap">[object rest/spread syntax](/#splats)</span>, and [JavaScript generated using modern syntax](/#coffeescript-2). [Learn more](/announcing-coffeescript-2/).

View File

@@ -2,6 +2,4 @@
Besides being used as an ordinary programming language, CoffeeScript may also be written in “literate” mode. If you name your file with a `.litcoffee` extension, you can write it as a Markdown document — a document that also happens to be executable CoffeeScript code. The compiler will treat any indented blocks (Markdowns way of indicating source code) as code, and ignore the rest as comments.
Just for kicks, a little bit of the compiler is currently implemented in this fashion: See it [as a document](https://gist.github.com/jashkenas/3fc3c1a8b1009c00d9df), [raw](https://raw.github.com/jashkenas/coffeescript/master/src/scope.litcoffee), and [properly highlighted in a text editor](http://cl.ly/LxEu).
Im fairly excited about this direction for the language, and am looking forward to writing (and more importantly, reading) more programs in this style. More information about Literate CoffeeScript, including an [example program](https://github.com/jashkenas/journo), are [available in this blog post](http://ashkenas.com/literate-coffeescript).
Just for kicks, a little bit of the compiler is currently implemented in this fashion: See it [as a document](https://gist.github.com/jashkenas/3fc3c1a8b1009c00d9df), [raw](https://raw.githubusercontent.com/jashkenas/coffeescript/master/src/scope.litcoffee), and [properly highlighted in a text editor](http://cl.ly/LxEu).

View File

@@ -6,6 +6,8 @@ ES2015 modules are supported in CoffeeScript, with very similar `import` and `ex
codeFor('modules')
```
<div id="modules-note" class="bookmark"></div>
Note that the CoffeeScript compiler **does not resolve modules**; writing an `import` or `export` statement in CoffeeScript will produce an `import` or `export` statement in the resulting output. It is your responsibility attach another transpiler, such as [Traceur Compiler](https://github.com/google/traceur-compiler), [Babel](http://babeljs.io/) or [Rollup](https://github.com/rollup/rollup), to convert this ES2015 syntax into code that will work in your target runtimes.
Also note that any file with an `import` or `export` statement will be output without a [top-level function safety wrapper](#lexical-scope); in other words, importing or exporting modules will automatically trigger [bare](#usage) mode for that file. This is because per the ES2015 spec, `import` or `export` statements must occur at the topmost scope.

View File

@@ -16,7 +16,7 @@ As a shortcut for `this.property`, you can use `@property`.
You can use `in` to test for array presence, and `of` to test for JavaScript object-key presence.
To simplify math expressions, `**` can be used for exponentiation and `//` performs integer division. `%` works just like in JavaScript, while `%%` provides [“dividend dependent modulo”](http://en.wikipedia.org/wiki/Modulo_operation):
To simplify math expressions, `**` can be used for exponentiation and `//` performs integer division. `%` works just like in JavaScript, while `%%` provides [“dividend dependent modulo”](https://en.wikipedia.org/wiki/Modulo_operation):
```
codeFor('modulo')
@@ -24,125 +24,21 @@ codeFor('modulo')
All together now:
<table class="definitions">
<tbody>
<tr>
<th>CoffeeScript</th>
<th>JavaScript</th>
</tr>
<tr>
<td>`is`</td>
<td>`===`</td>
</tr>
<tr>
<td>`isnt`</td>
<td>`!==`</td>
</tr>
<tr>
<td>`not`</td>
<td>`!`</td>
</tr>
<tr>
<td>`and`</td>
<td>`&&`</td>
</tr>
<tr>
<td>`or`</td>
<td>`||`</td>
</tr>
<tr>
<td>`true`, `yes`, `on`</td>
<td>`true`</td>
</tr>
<tr>
<td>`false`, `no`, `off`</td>
<td>`false`</td>
</tr>
<tr>
<td>`@`, `this`</td>
<td>`this`</td>
</tr>
<tr>
<td>`of`</td>
<td>`in`</td>
</tr>
<tr>
<td>`in`</td>
<td>_<small>no JS equivalent</small>_</td>
</tr>
<tr>
<td>`a ** b`</td>
<td>`Math.pow(a, b)`</td>
</tr>
<tr>
<td>`a // b`</td>
<td>`Math.floor(a / b)`</td>
</tr>
<tr>
<td>`a %% b`</td>
<td>`(a % b + b) % b`</td>
</tr>
</tbody>
</table>
| CoffeeScript | JavaScript |
| --- | --- |
| `is` | `===` |
| `isnt` | `!==` |
| `not` | `!` |
| `and` | `&&` |
| `or` | `||` |
| `true`, `yes`, `on` | `true` |
| `false`, `no`, `off`&emsp; | `false` |
| `@`, `this` | `this` |
| `of` | `in` |
| `in` | _no JS equivalent_ |
| `a ** b` | `Math.pow(a, b)` |
| `a // b` | `Math.floor(a / b)` |
| `a %% b` | `(a % b + b) % b` |
```
codeFor('aliases')

View File

@@ -1,21 +1,21 @@
## Resources
* [Source Code](http://github.com/jashkenas/coffeescript/)<br>
* [Source Code](https://github.com/jashkenas/coffeescript/)<br>
Use `bin/coffee` to test your changes,<br>
`bin/cake test` to run the test suite,<br>
`bin/cake build` to rebuild the CoffeeScript compiler, and<br>
`bin/cake build:parser` to regenerate the Jison parser if youre working on the grammar.
`bin/cake build` to rebuild the full CoffeeScript compiler, and<br>
`bin/cake build:except-parser` to recompile much faster if youre not editing `grammar.coffee`.
`git checkout lib && bin/cake build:full` is a good command to run when youre working on the core language. Itll refresh the lib directory (in case you broke something), build your altered compiler, use that to rebuild itself (a good sanity test) and then run all of the tests. If they pass, theres a good chance youve made a successful change.
* [Browser Tests](v<%= majorVersion %>/test.html)<br>
`git checkout lib && bin/cake build:full` is a good command to run when youre working on the core language. Itll refresh the `lib` folder (in case you broke something), build your altered compiler, use that to rebuild itself (a good sanity test) and then run all of the tests. If they pass, theres a good chance youve made a successful change.
* [Browser Tests](test.html)<br>
Run CoffeeScripts test suite in your current browser.
* [CoffeeScript Issues](http://github.com/jashkenas/coffeescript/issues)<br>
* [CoffeeScript Issues](https://github.com/jashkenas/coffeescript/issues)<br>
Bug reports, feature proposals, and ideas for changes to the language belong here.
* [CoffeeScript Google Group](https://groups.google.com/forum/#!forum/coffeescript)<br>
If youd like to ask a question, the mailing list is a good place to get help.
* [The CoffeeScript Wiki](http://github.com/jashkenas/coffeescript/wiki)<br>
If youve ever learned a neat CoffeeScript tip or trick, or ran into a gotcha — share it on the wiki. The wiki also serves as a directory of handy [text editor extensions](http://github.com/jashkenas/coffeescript/wiki/Text-editor-plugins), [web framework plugins](http://github.com/jashkenas/coffeescript/wiki/Web-framework-plugins), and general [CoffeeScript build tools](http://github.com/jashkenas/coffeescript/wiki/Build-tools).
* [The FAQ](http://github.com/jashkenas/coffeescript/wiki/FAQ)<br>
* [The CoffeeScript Wiki](https://github.com/jashkenas/coffeescript/wiki)<br>
If youve ever learned a neat CoffeeScript tip or trick, or ran into a gotcha — share it on the wiki. The wiki also serves as a directory of handy [text editor extensions](https://github.com/jashkenas/coffeescript/wiki/Text-editor-plugins), [web framework plugins](https://github.com/jashkenas/coffeescript/wiki/Web-framework-plugins), and general [CoffeeScript build tools](https://github.com/jashkenas/coffeescript/wiki/Build-tools).
* [The FAQ](https://github.com/jashkenas/coffeescript/wiki/FAQ)<br>
Perhaps your CoffeeScript-related question has been asked before. Check the FAQ first.
* [JS2Coffee](http://js2coffee.org)<br>
Is a very well done reverse JavaScript-to-CoffeeScript compiler. Its not going to be perfect (infer what your JavaScript classes are, when you need bound functions, and so on…) — but its a great starting point for converting simple scripts.

View File

@@ -1,5 +1,5 @@
## Screencasts
* [A Sip of CoffeeScript](http://coffeescript.codeschool.com) is a [Code School Course](http://www.codeschool.com) which combines 6 screencasts with in-browser coding to make learning fun. The first level is free to try out.
* [Meet CoffeeScript](http://peepcode.com/products/coffeescript) is a 75-minute long screencast by [PeepCode](http://peepcode.com/). Highly memorable for its animations which demonstrate transforming CoffeeScript into the equivalent JS.
* [A Sip of CoffeeScript](http://coffeescript.codeschool.com/) is a [Code School Course](https://www.codeschool.com) which combines 6 screencasts with in-browser coding to make learning fun. The first level is free to try out.
* [Meet CoffeeScript](https://www.pluralsight.com/courses/meet-coffeescript) is a 75-minute long screencast by PeepCode, now [PluralSight](https://www.pluralsight.com/). Highly memorable for its animations which demonstrate transforming CoffeeScript into the equivalent JS.
* If youre looking for less of a time commitment, RailsCasts [CoffeeScript Basics](http://railscasts.com/episodes/267-coffeescript-basics) should have you covered, hitting all of the important notes about CoffeeScript in 11 minutes.

View File

@@ -1,6 +1,6 @@
## "text/coffeescript" Script Tags
While its not recommended for serious use, CoffeeScripts may be included directly within the browser using `<script type="text/coffeescript">` tags. The source includes a compressed and minified version of the compiler ([Download current version here, 51k when gzipped](v<%= majorVersion %>/browser-compiler/coffee-script.js)) as `v<%= majorVersion %>/browser-compiler/coffee-script.js`. Include this file on a page with inline CoffeeScript tags, and it will compile and evaluate them in order.
While its not recommended for serious use, CoffeeScripts may be included directly within the browser using `<script type="text/coffeescript">` tags. The source includes a compressed and minified version of the compiler ([Download current version here, 51k when gzipped](browser-compiler/coffee-script.js)) as `docs/v1/browser-compiler/coffee-script.js`. Include this file on a page with inline CoffeeScript tags, and it will compile and evaluate them in order.
In fact, the little bit of glue script that runs “Try CoffeeScript” above, as well as the jQuery for the menu, is implemented in just this way. View source and look at the bottom of the page to see the example. Including the script also gives you access to `CoffeeScript.compile()` so you can pop open Firebug and try compiling some strings.

View File

@@ -2,4 +2,4 @@
CoffeeScript 1.6.1 and above include support for generating source maps, a way to tell your JavaScript engine what part of your CoffeeScript program matches up with the code being evaluated. Browsers that support it can automatically use source maps to show your original source code in the debugger. To generate source maps alongside your JavaScript files, pass the `--map` or `-m` flag to the compiler.
For a full introduction to source maps, how they work, and how to hook them up in your browser, read the [HTML5 Tutorial](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/).
For a full introduction to source maps, how they work, and how to hook them up in your browser, read the [HTML5 Tutorial](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/).

View File

@@ -2,158 +2,24 @@
Once installed, you should have access to the `coffee` command, which can execute scripts, compile `.coffee` files into `.js`, and provide an interactive REPL. The `coffee` command takes the following options:
<table>
<tbody>
<tr>
<td>`-c, --compile`</td>
<td>Compile a `.coffee` script into a `.js` JavaScript file of the same name.</td>
</tr>
<tr>
<td>`-m, --map`</td>
<td>Generate source maps alongside the compiled JavaScript files. Adds `sourceMappingURL` directives to the JavaScript as well.</td>
</tr>
<tr>
<td>`-M, --inline-map`</td>
<td>Just like `--map`, but include the source map directly in the compiled JavaScript files, rather than in a separate file.</td>
</tr>
<tr>
<td width="25%">`-i, --interactive`</td>
<td>Launch an interactive CoffeeScript session to try short snippets. Identical to calling `coffee` with no arguments.</td>
</tr>
<tr>
<td>`-o, --output [DIR]`</td>
<td>Write out all compiled JavaScript files into the specified directory. Use in conjunction with `--compile` or `--watch`.</td>
</tr>
<tr>
<td>`-w, --watch`</td>
<td>Watch files for changes, rerunning the specified command when any file is updated.</td>
</tr>
<tr>
<td>`-p, --print`</td>
<td>Instead of writing out the JavaScript as a file, print it directly to **stdout**.</td>
</tr>
<tr>
<td>`-s, --stdio`</td>
<td>Pipe in CoffeeScript to STDIN and get back JavaScript over STDOUT. Good for use with processes written in other languages. An example:<br>
`cat src/cake.coffee | coffee -sc`</td>
</tr>
<tr>
<td>`-l, --literate`</td>
<td>Parses the code as Literate CoffeeScript. You only need to specify this when passing in code directly over **stdio**, or using some sort of extension-less file name.</td>
</tr>
<tr>
<td>`-e, --eval`</td>
<td>Compile and print a little snippet of CoffeeScript directly from the command line. For example:<br>
`coffee -e "console.log num for num in [10..1]"`</td>
</tr>
<tr>
<td>`-r, --require [MODULE]`</td>
<td>`require()` the given module before starting the REPL or evaluating the code given with the `--eval` flag.</td>
</tr>
<tr>
<td>`-b, --bare`</td>
<td>Compile the JavaScript without the [top-level function safety wrapper](#lexical-scope).</td>
</tr>
<tr>
<td>`-t, --tokens`</td>
<td>Instead of parsing the CoffeeScript, just lex it, and print out the token stream:<br>
`[IDENTIFIER square] [= =] [PARAM_START (]` ...</td>
</tr>
<tr>
<td>`-n, --nodes`</td>
<td>Instead of compiling the CoffeeScript, just lex and parse it, and print out the parse tree:<br>
```
Block
Assign
Value IdentifierLiteral: square
Code
Param IdentifierLiteral: x
Block
Op *
Value IdentifierLiteral: x
Value IdentifierLiteral: x
```
</td>
</tr>
<tr>
<td>`--nodejs`</td>
<td>The `node` executable has some useful options you can set, such as<br>
`--debug`, `--debug-brk`, `--max-stack-size`, and `--expose-gc`. Use this flag to forward options directly to Node.js. To pass multiple flags, use `--nodejs` multiple times.</td>
</tr>
<tr>
<td>`--no-header`</td>
<td>Suppress the “Generated by CoffeeScript” header.</td>
</tr>
</tbody>
</table>
| Option | Description |
| --- | --- |
| `-c, --compile` | Compile a `.coffee` script into a `.js` JavaScript file of the same name. |
| `-m, --map` | Generate source maps alongside the compiled JavaScript files. Adds `sourceMappingURL` directives to the JavaScript as well. |
| `-M, --inline-map` | Just like `--map`, but include the source map directly in the compiled JavaScript files, rather than in a separate file. |
| `-i, --interactive` | Launch an interactive CoffeeScript session to try short snippets. Identical to calling `coffee` with no arguments. |
| `-o, --output [DIR]` | Write out all compiled JavaScript files into the specified directory. Use in conjunction with `--compile` or `--watch`. |
| `-w, --watch` | Watch files for changes, rerunning the specified command when any file is updated. |
| `-p, --print` | Instead of writing out the JavaScript as a file, print it directly to **stdout**. |
| `-s, --stdio` | Pipe in CoffeeScript to STDIN and get back JavaScript over STDOUT. Good for use with processes written in other languages. An example:<br>`cat src/cake.coffee | coffee -sc` |
| `-l, --literate` | Parses the code as Literate CoffeeScript. You only need to specify this when passing in code directly over **stdio**, or using some sort of extension-less file name. |
| `-e, --eval` | Compile and print a little snippet of CoffeeScript directly from the command line. For example:<br>`coffee -e "console.log num for num in [10..1]"` |
| `-r, --require [MODULE]`&emsp; | `require()` the given module before starting the REPL or evaluating the code given with the `--eval` flag. |
| `-b, --bare` | Compile the JavaScript without the [top-level function safety wrapper](#lexical-scope). |
| `-t, --tokens` | Instead of parsing the CoffeeScript, just lex it, and print out the token stream. Used for debugging the compiler. |
| `-n, --nodes` | Instead of compiling the CoffeeScript, just lex and parse it, and print out the parse tree. Used for debugging the compiler. |
| `--nodejs` | The `node` executable has some useful options you can set, such as `--debug`, `--debug-brk`, `--max-stack-size`, and `--expose-gc`. Use this flag to forward options directly to Node.js. To pass multiple flags, use `--nodejs` multiple times. |
| `--no-header` | Suppress the “Generated by CoffeeScript” header. |
### Examples:

View File

@@ -64,18 +64,18 @@
Annotated Source
</div>
<div class="contents menu">
<a href="v<%= majorVersion %>/annotated-source/grammar.html">Grammar Rules — src/grammar</a>
<a href="v<%= majorVersion %>/annotated-source/lexer.html">Lexing Tokens — src/lexer</a>
<a href="v<%= majorVersion %>/annotated-source/rewriter.html">The Rewriter — src/rewriter</a>
<a href="v<%= majorVersion %>/annotated-source/nodes.html">The Syntax Tree — src/nodes</a>
<a href="v<%= majorVersion %>/annotated-source/scope.html">Lexical Scope — src/scope</a>
<a href="v<%= majorVersion %>/annotated-source/helpers.html">Helpers &amp; Utility Functions — src/helpers</a>
<a href="v<%= majorVersion %>/annotated-source/coffee-script.html">The CoffeeScript Module — src/coffee-script</a>
<a href="v<%= majorVersion %>/annotated-source/cake.html">Cake &amp; Cakefiles — src/cake</a>
<a href="v<%= majorVersion %>/annotated-source/command.html">“coffee” Command-Line Utility — src/command</a>
<a href="v<%= majorVersion %>/annotated-source/optparse.html">Option Parsing — src/optparse</a>
<a href="v<%= majorVersion %>/annotated-source/repl.html">Interactive REPL — src/repl</a>
<a href="v<%= majorVersion %>/annotated-source/sourcemap.html">Source Maps — src/sourcemap</a>
<a href="annotated-source/grammar.html">Grammar Rules — src/grammar</a>
<a href="annotated-source/lexer.html">Lexing Tokens — src/lexer</a>
<a href="annotated-source/rewriter.html">The Rewriter — src/rewriter</a>
<a href="annotated-source/nodes.html">The Syntax Tree — src/nodes</a>
<a href="annotated-source/scope.html">Lexical Scope — src/scope</a>
<a href="annotated-source/helpers.html">Helpers &amp; Utility Functions — src/helpers</a>
<a href="annotated-source/coffee-script.html">The CoffeeScript Module — src/coffee-script</a>
<a href="annotated-source/cake.html">Cake &amp; Cakefiles — src/cake</a>
<a href="annotated-source/command.html">“coffee” Command-Line Utility — src/command</a>
<a href="annotated-source/optparse.html">Option Parsing — src/optparse</a>
<a href="annotated-source/repl.html">Interactive REPL — src/repl</a>
<a href="annotated-source/sourcemap.html">Source Maps — src/sourcemap</a>
</div>
</div>
</div>

View File

@@ -44,7 +44,6 @@ li {
}
table {
margin: 16px 0 0 13px; padding: 0;
width: 690px;
}
tr, td {
margin: 0; padding: 0;
@@ -53,6 +52,9 @@ table {
padding: 9px 15px 9px 0;
vertical-align: top;
}
th {
text-align: left;
}
table.definitions {
width: auto;
margin: 30px 0;
@@ -86,11 +88,17 @@ code, pre, pre > code, textarea {
padding: 3px 0 3px 12px;
font-size: 12px;
}
td code {
white-space: nowrap;
}
.timestamp {
font-size: 11px;
font-weight: normal;
text-transform: uppercase;
}
.nowrap {
white-space: nowrap;
}
div.anchor {
position: relative;
top: -90px;

View File

@@ -3,4 +3,4 @@
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="v<%= majorVersion %>/browser-compiler/coffee-script.js"></script>
<script src="browser-compiler/coffee-script.js"></script>

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var CoffeeScript, compile, runScripts,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks;

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var Lexer, SourceMap, base64encode, compile, ext, fn1, formatSourcePosition, fs, getSourceMap, helpers, i, len, lexer, packageJson, parser, path, ref, sourceMaps, sources, vm, withPrettyErrors,
hasProp = {}.hasOwnProperty;
@@ -385,7 +385,8 @@
} else if (sources[filename] != null) {
answer = compile(sources[filename], {
filename: filename,
sourceMap: true
sourceMap: true,
literate: helpers.isLiterate(filename)
});
return answer.sourceMap;
} else {

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, findDirectoryIndex, forkNode, fs, helpers, hidden, joinTimeout, makePrelude, mkdirp, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, ref, removeSource, removeSourceDir, silentUnlink, sourceCode, sources, spawn, timeLog, usage, useWinPathSep, version, wait, watch, watchDir, watchedDirs, writeJs,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap;
@@ -143,6 +143,8 @@
Return: [
o('RETURN Expression', function() {
return new Return($2);
}), o('RETURN INDENT Object OUTDENT', function() {
return new Return(new Value($3));
}), o('RETURN', function() {
return new Return;
})
@@ -367,6 +369,8 @@
}));
}), o('EXPORT DEFAULT Expression', function() {
return new ExportDefaultDeclaration($3);
}), o('EXPORT DEFAULT INDENT Object OUTDENT', function() {
return new ExportDefaultDeclaration(new Value($4));
}), o('EXPORT EXPORT_ALL FROM String', function() {
return new ExportAllDeclaration(new Literal($2), $4);
}), o('EXPORT { ExportSpecifierList OptComma } FROM String', function() {
@@ -395,6 +399,8 @@
return new ExportSpecifier($1, new Literal($3));
}), o('DEFAULT', function() {
return new ExportSpecifier(new Literal($1));
}), o('DEFAULT AS Identifier', function() {
return new ExportSpecifier(new Literal($1), $3);
})
],
Invocation: [

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var buildLocationData, extend, flatten, ref, repeat, syntaxErrorToString;

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var key, ref, val;

View File

@@ -1,6 +1,6 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, HERE_JSTOKEN, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVALID_ESCAPE, INVERSES, JSTOKEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, isForFrom, isUnassignable, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,
var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, HERE_JSTOKEN, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVERSES, JSTOKEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, REGEX_INVALID_ESCAPE, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_INVALID_ESCAPE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, UNFINISHED, UNICODE_CODE_POINT_ESCAPE, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, isForFrom, isUnassignable, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
slice = [].slice;
@@ -27,6 +27,7 @@
this.seenFor = false;
this.seenImport = false;
this.seenExport = false;
this.importSpecifierList = false;
this.exportSpecifierList = false;
this.chunkLine = opts.line || 0;
this.chunkColumn = opts.column || 0;
@@ -69,7 +70,7 @@
};
Lexer.prototype.identifierToken = function() {
var alias, colon, colonOffset, id, idLength, input, match, poppedToken, prev, ref2, ref3, ref4, ref5, ref6, ref7, tag, tagToken;
var alias, colon, colonOffset, id, idLength, input, match, poppedToken, prev, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, tag, tagToken;
if (!(match = IDENTIFIER.exec(this.chunk))) {
return 0;
}
@@ -95,19 +96,19 @@
return id.length;
}
}
if (id === 'as' && this.seenExport && this.tag() === 'IDENTIFIER') {
if (id === 'as' && this.seenExport && ((ref4 = this.tag()) === 'IDENTIFIER' || ref4 === 'DEFAULT')) {
this.token('AS', id);
return id.length;
}
if (id === 'default' && this.seenExport) {
if (id === 'default' && this.seenExport && ((ref5 = this.tag()) === 'EXPORT' || ref5 === 'AS')) {
this.token('DEFAULT', id);
return id.length;
}
ref4 = this.tokens, prev = ref4[ref4.length - 1];
tag = colon || (prev != null) && (((ref5 = prev[0]) === '.' || ref5 === '?.' || ref5 === '::' || ref5 === '?::') || !prev.spaced && prev[0] === '@') ? 'PROPERTY' : 'IDENTIFIER';
ref6 = this.tokens, prev = ref6[ref6.length - 1];
tag = colon || (prev != null) && (((ref7 = prev[0]) === '.' || ref7 === '?.' || ref7 === '::' || ref7 === '?::') || !prev.spaced && prev[0] === '@') ? 'PROPERTY' : 'IDENTIFIER';
if (tag === 'IDENTIFIER' && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(COFFEE_KEYWORDS, id) >= 0) && !(this.exportSpecifierList && indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {
tag = id.toUpperCase();
if (tag === 'WHEN' && (ref6 = this.tag(), indexOf.call(LINE_BREAK, ref6) >= 0)) {
if (tag === 'WHEN' && (ref8 = this.tag(), indexOf.call(LINE_BREAK, ref8) >= 0)) {
tag = 'LEADING_WHEN';
} else if (tag === 'FOR') {
this.seenFor = true;
@@ -172,7 +173,7 @@
tagToken.origin = [tag, alias, tagToken[2]];
}
if (poppedToken) {
ref7 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = ref7[0], tagToken[2].first_column = ref7[1];
ref9 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = ref9[0], tagToken[2].first_column = ref9[1];
}
if (colon) {
colonOffset = input.lastIndexOf(':');
@@ -281,7 +282,9 @@
delimiter: delimiter
}, (function(_this) {
return function(value, i) {
value = _this.formatString(value);
value = _this.formatString(value, {
delimiter: quote
});
if (indentRegex) {
value = value.replace(indentRegex, '\n');
}
@@ -299,7 +302,9 @@
delimiter: delimiter
}, (function(_this) {
return function(value, i) {
value = _this.formatString(value);
value = _this.formatString(value, {
delimiter: quote
});
value = value.replace(SIMPLE_STRING_OMIT, function(match, offset) {
if ((i === 0 && offset === 0) || (i === $ && offset + match.length === value.length)) {
return '';
@@ -364,6 +369,9 @@
isRegex: true,
offsetInChunk: 1
});
body = this.formatRegex(body, {
delimiter: '/'
});
index = regex.length;
ref2 = this.tokens, prev = ref2[ref2.length - 1];
if (prev) {
@@ -409,11 +417,11 @@
double: true
}, this.formatHeregex);
if (flags) {
this.token(',', ',', index, 0);
this.token('STRING', '"' + flags + '"', index, flags.length);
this.token(',', ',', index - 1, 0);
this.token('STRING', '"' + flags + '"', index - 1, flags.length);
}
this.token(')', ')', end, 0);
this.token('REGEX_END', ')', end, 0);
this.token(')', ')', end - 1, 0);
this.token('REGEX_END', ')', end - 1, 0);
}
return end;
};
@@ -425,6 +433,12 @@
}
indent = match[0];
this.seenFor = false;
if (!this.importSpecifierList) {
this.seenImport = false;
}
if (!this.exportSpecifierList) {
this.seenExport = false;
}
size = indent.length - 1 - indent.lastIndexOf('\n');
noNewlines = this.unfinished();
if (size - this.indebt === this.indent) {
@@ -566,7 +580,11 @@
return value.length;
}
}
if (value === '{' && (prev != null ? prev[0] : void 0) === 'EXPORT') {
if (value === '{' && this.seenImport) {
this.importSpecifierList = true;
} else if (this.importSpecifierList && value === '}') {
this.importSpecifierList = false;
} else if (value === '{' && (prev != null ? prev[0] : void 0) === 'EXPORT') {
this.exportSpecifierList = true;
} else if (this.exportSpecifierList && value === '}') {
this.exportSpecifierList = false;
@@ -734,7 +752,7 @@
tokensToPush = value;
break;
case 'NEOSTRING':
converted = fn(token[1], i);
converted = fn.call(this, token[1], i);
if (converted.length === 0) {
if (i === 0) {
firstEmptyStringIndex = this.tokens.length;
@@ -856,32 +874,70 @@
Lexer.prototype.unfinished = function() {
var ref2;
return LINE_CONTINUER.test(this.chunk) || ((ref2 = this.tag()) === '\\' || ref2 === '.' || ref2 === '?.' || ref2 === '?::' || ref2 === 'UNARY' || ref2 === 'MATH' || ref2 === 'UNARY_MATH' || ref2 === '+' || ref2 === '-' || ref2 === '**' || ref2 === 'SHIFT' || ref2 === 'RELATION' || ref2 === 'COMPARE' || ref2 === '&' || ref2 === '^' || ref2 === '|' || ref2 === '&&' || ref2 === '||' || ref2 === 'BIN?' || ref2 === 'THROW' || ref2 === 'EXTENDS');
return LINE_CONTINUER.test(this.chunk) || (ref2 = this.tag(), indexOf.call(UNFINISHED, ref2) >= 0);
};
Lexer.prototype.formatString = function(str) {
return str.replace(STRING_OMIT, '$1');
Lexer.prototype.formatString = function(str, options) {
return this.replaceUnicodeCodePointEscapes(str.replace(STRING_OMIT, '$1'), options);
};
Lexer.prototype.formatHeregex = function(str) {
return str.replace(HEREGEX_OMIT, '$1$2');
return this.formatRegex(str.replace(HEREGEX_OMIT, '$1$2'), {
delimiter: '///'
});
};
Lexer.prototype.formatRegex = function(str, options) {
return this.replaceUnicodeCodePointEscapes(str, options);
};
Lexer.prototype.unicodeCodePointToUnicodeEscapes = function(codePoint) {
var high, low, toUnicodeEscape;
toUnicodeEscape = function(val) {
var str;
str = val.toString(16);
return "\\u" + (repeat('0', 4 - str.length)) + str;
};
if (codePoint < 0x10000) {
return toUnicodeEscape(codePoint);
}
high = Math.floor((codePoint - 0x10000) / 0x400) + 0xD800;
low = (codePoint - 0x10000) % 0x400 + 0xDC00;
return "" + (toUnicodeEscape(high)) + (toUnicodeEscape(low));
};
Lexer.prototype.replaceUnicodeCodePointEscapes = function(str, options) {
return str.replace(UNICODE_CODE_POINT_ESCAPE, (function(_this) {
return function(match, escapedBackslash, codePointHex, offset) {
var codePointDecimal;
if (escapedBackslash) {
return escapedBackslash;
}
codePointDecimal = parseInt(codePointHex, 16);
if (codePointDecimal > 0x10ffff) {
_this.error("unicode code point escapes greater than \\u{10ffff} are not allowed", {
offset: offset + options.delimiter.length,
length: codePointHex.length + 4
});
}
return _this.unicodeCodePointToUnicodeEscapes(codePointDecimal);
};
})(this));
};
Lexer.prototype.validateEscapes = function(str, options) {
var before, hex, invalidEscape, match, message, octal, ref2, unicode;
var before, hex, invalidEscape, invalidEscapeRegex, match, message, octal, ref2, unicode, unicodeCodePoint;
if (options == null) {
options = {};
}
match = INVALID_ESCAPE.exec(str);
invalidEscapeRegex = options.isRegex ? REGEX_INVALID_ESCAPE : STRING_INVALID_ESCAPE;
match = invalidEscapeRegex.exec(str);
if (!match) {
return;
}
match[0], before = match[1], octal = match[2], hex = match[3], unicode = match[4];
if (options.isRegex && octal && octal.charAt(0) !== '0') {
return;
}
match[0], before = match[1], octal = match[2], hex = match[3], unicodeCodePoint = match[4], unicode = match[5];
message = octal ? "octal escape sequences are not allowed" : "invalid escape sequence";
invalidEscape = "\\" + (octal || hex || unicode);
invalidEscape = "\\" + (octal || hex || unicodeCodePoint || unicode);
return this.error(message + " " + invalidEscape, {
offset: ((ref2 = options.offsetInChunk) != null ? ref2 : 0) + match.index + before.length,
length: invalidEscape.length
@@ -1053,7 +1109,7 @@
REGEX_FLAGS = /^\w*/;
VALID_FLAGS = /^(?!.*(.).*\1)[imgy]*$/;
VALID_FLAGS = /^(?!.*(.).*\1)[imguy]*$/;
HEREGEX = /^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/;
@@ -1067,7 +1123,11 @@
LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/;
INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/;
STRING_INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/;
REGEX_INVALID_ESCAPE = /((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/;
UNICODE_CODE_POINT_ESCAPE = /(\\\\)|\\u\{([\da-fA-F]+)\}/g;
LEADING_BLANK_LINE = /^[^\n\S]*\n/;
@@ -1101,4 +1161,6 @@
INDENTABLE_CLOSERS = [')', '}', ']'];
UNFINISHED = ['\\', '.', '?.', '?::', 'UNARY', 'MATH', 'UNARY_MATH', '+', '-', '**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||', 'BIN?', 'THROW', 'EXTENDS'];
}).call(this);

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var Access, Arr, Assign, Base, Block, BooleanLiteral, Call, Class, Code, CodeFragment, Comment, Existence, Expansion, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ExportSpecifierList, Extends, For, IdentifierLiteral, If, ImportClause, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportSpecifierList, In, Index, InfinityLiteral, JS_FORBIDDEN, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, ModuleDeclaration, ModuleSpecifier, ModuleSpecifierList, NEGATE, NO, NaNLiteral, NullLiteral, NumberLiteral, Obj, Op, Param, Parens, PassthroughLiteral, PropertyName, Range, RegexLiteral, RegexWithInterpolations, Return, SIMPLENUM, Scope, Slice, Splat, StatementLiteral, StringLiteral, StringWithInterpolations, SuperCall, Switch, TAB, THIS, TaggedTemplateCall, ThisLiteral, Throw, Try, UTILITIES, UndefinedLiteral, Value, While, YES, YieldReturn, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isComplexOrAssignable, isLiteralArguments, isLiteralThis, isUnassignable, locationDataToString, merge, multident, ref1, ref2, some, starts, throwSyntaxError, unfoldSoak, utility,
extend1 = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
@@ -1024,6 +1024,22 @@
Call.prototype.children = ['variable', 'args'];
Call.prototype.updateLocationDataIfMissing = function(locationData) {
var base, ref3;
if (this.locationData && this.needsUpdatedStartLocation) {
this.locationData.first_line = locationData.first_line;
this.locationData.first_column = locationData.first_column;
base = ((ref3 = this.variable) != null ? ref3.base : void 0) || this.variable;
if (base.needsUpdatedStartLocation) {
this.variable.locationData.first_line = locationData.first_line;
this.variable.locationData.first_column = locationData.first_column;
base.updateLocationDataIfMissing(locationData);
}
delete this.needsUpdatedStartLocation;
}
return Call.__super__.updateLocationDataIfMissing.apply(this, arguments);
};
Call.prototype.newInstance = function() {
var base, ref3;
base = ((ref3 = this.variable) != null ? ref3.base : void 0) || this.variable;
@@ -1032,6 +1048,7 @@
} else {
this.isNew = true;
}
this.needsUpdatedStartLocation = true;
return this;
};
@@ -2059,7 +2076,7 @@
ModuleSpecifier.prototype.compileNode = function(o) {
var code;
o.scope.add(this.identifier, this.moduleDeclarationType);
o.scope.find(this.identifier, this.moduleDeclarationType);
code = [];
code.push(this.makeCode(this.original.value));
if (this.alias != null) {
@@ -2708,7 +2725,7 @@
return this.name.assigns(name);
};
Splat.prototype.compileToFragments = function(o) {
Splat.prototype.compileNode = function(o) {
return this.name.compileToFragments(o);
};
@@ -3332,7 +3349,7 @@
return expr.compileToFragments(o);
}
fragments = expr.compileToFragments(o, LEVEL_PAREN);
bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));
bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns)) && (o.level < LEVEL_COND || fragments.length <= 3);
if (bare) {
return fragments;
} else {

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments, repeat;

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, i, len, loadFile, path, ref;

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var CoffeeScript, addHistory, addMultilineHandler, fs, getCommandId, merge, nodeREPL, path, ref, replDefaults, runInContext, updateSyntaxError, vm;
@@ -38,7 +38,7 @@
return results;
})();
ast = CoffeeScript.nodes(tokens);
ast = new Block([new Assign(new Value(new Literal('_')), ast, '=')]);
ast = new Block([new Assign(new Value(new Literal('__')), ast, '=')]);
js = ast.compile({
bare: true,
locals: Object.keys(context),
@@ -173,7 +173,7 @@
opts = {};
}
ref1 = process.versions.node.split('.').map(function(n) {
return parseInt(n);
return parseInt(n, 10);
}), major = ref1[0], minor = ref1[1], build = ref1[2];
if (major === 0 && minor < 8) {
console.warn("Node 0.8.0+ required for CoffeeScript REPL");

View File

@@ -1,6 +1,6 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, ref, rite,
var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, ref, rite,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
slice = [].slice;
@@ -14,7 +14,7 @@
return tok;
};
exports.Rewriter = (function() {
exports.Rewriter = Rewriter = (function() {
function Rewriter() {}
Rewriter.prototype.rewrite = function(tokens1) {
@@ -171,7 +171,7 @@
stack = [];
start = null;
return this.scanTokens(function(token, i, tokens) {
var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, newLine, nextTag, offset, prevTag, prevToken, ref, ref1, ref2, ref3, ref4, ref5, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag;
var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, isImplicit, isImplicitCall, isImplicitObject, k, newLine, nextTag, offset, prevTag, prevToken, ref, ref1, ref2, ref3, ref4, ref5, s, sameLine, stackIdx, stackItem, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag;
tag = token[0];
prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0];
nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0];
@@ -182,17 +182,24 @@
forward = function(n) {
return i - startIdx + n;
};
isImplicit = function(stackItem) {
var ref;
return stackItem != null ? (ref = stackItem[2]) != null ? ref.ours : void 0 : void 0;
};
isImplicitObject = function(stackItem) {
return isImplicit(stackItem) && (stackItem != null ? stackItem[0] : void 0) === '{';
};
isImplicitCall = function(stackItem) {
return isImplicit(stackItem) && (stackItem != null ? stackItem[0] : void 0) === '(';
};
inImplicit = function() {
var ref, ref1;
return (ref = stackTop()) != null ? (ref1 = ref[2]) != null ? ref1.ours : void 0 : void 0;
return isImplicit(stackTop());
};
inImplicitCall = function() {
var ref;
return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '(';
return isImplicitCall(stackTop());
};
inImplicitObject = function() {
var ref;
return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '{';
return isImplicitObject(stackTop());
};
inImplicitControl = function() {
var ref;
@@ -206,7 +213,7 @@
ours: true
}
]);
tokens.splice(idx, 0, generate('CALL_START', '('));
tokens.splice(idx, 0, generate('CALL_START', '(', ['', 'implicit function call', token[2]]));
if (j == null) {
return i += 1;
}
@@ -316,8 +323,16 @@
startImplicitObject(s, !!startsLine);
return forward(2);
}
if (inImplicitObject() && indexOf.call(LINEBREAKS, tag) >= 0) {
stackTop()[2].sameLine = false;
if (indexOf.call(LINEBREAKS, tag) >= 0) {
for (k = stack.length - 1; k >= 0; k += -1) {
stackItem = stack[k];
if (!isImplicit(stackItem)) {
break;
}
if (isImplicitObject(stackItem)) {
stackItem[2].sameLine = false;
}
}
}
newLine = prevTag === 'OUTDENT' || prevToken.newLine;
if (indexOf.call(IMPLICIT_END, tag) >= 0 || indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) {
@@ -395,7 +410,7 @@
starter = indent = outdent = null;
condition = function(token, i) {
var ref, ref1, ref2, ref3;
return token[1] !== ';' && (ref = token[0], indexOf.call(SINGLE_CLOSERS, ref) >= 0) && !(token[0] === 'TERMINATOR' && (ref1 = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((ref2 = token[0]) === 'CATCH' || ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (ref3 = token[0], indexOf.call(CALL_CLOSERS, ref3) >= 0) && this.tokens[i - 1].newLine;
return token[1] !== ';' && (ref = token[0], indexOf.call(SINGLE_CLOSERS, ref) >= 0) && !(token[0] === 'TERMINATOR' && (ref1 = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((ref2 = token[0]) === 'CATCH' || ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (ref3 = token[0], indexOf.call(CALL_CLOSERS, ref3) >= 0) && (this.tokens[i - 1].newLine || this.tokens[i - 1][0] === 'OUTDENT');
};
action = function(token, i) {
return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var Scope,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
@@ -45,11 +45,14 @@
return this.parent.namedMethod();
};
Scope.prototype.find = function(name) {
Scope.prototype.find = function(name, type) {
if (type == null) {
type = 'var';
}
if (this.check(name)) {
return true;
}
this.add(name, 'var');
this.add(name, type);
return false;
};

View File

@@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.12.3
// Generated by CoffeeScript 1.12.8
(function() {
var LineMap, SourceMap;

446
package-lock.json generated Normal file
View File

@@ -0,0 +1,446 @@
{
"name": "coffee-script",
"version": "1.12.7",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"JSONSelect": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.4.0.tgz",
"integrity": "sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40=",
"dev": true
},
"JSV": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
"integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=",
"dev": true
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
"argparse": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
"integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
"dev": true,
"requires": {
"sprintf-js": "1.0.3"
}
},
"cjson": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.0.tgz",
"integrity": "sha1-5kObkHA9MS/24iJAl76pLOPQKhQ=",
"dev": true,
"requires": {
"jsonlint": "1.6.0"
}
},
"clone": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
"integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
"dev": true
},
"clone-buffer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
"integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
"dev": true
},
"clone-stats": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
"integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
"dev": true
},
"cloneable-readable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz",
"integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"process-nextick-args": "1.0.7",
"through2": "2.0.3"
}
},
"colors": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
"integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=",
"dev": true
},
"commander": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.12.1.tgz",
"integrity": "sha512-PCNLExLlI5HiPdaJs4pMXwOTHkSCpNQ1QJH9ykZLKtKEyKu3p9HgmH5l97vM8c0IUz6d54l+xEu2GG9yuYrFzA==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"docco": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/docco/-/docco-0.7.0.tgz",
"integrity": "sha1-1gblqZDLoFLKHhgDqcWH7O48XDg=",
"dev": true,
"requires": {
"commander": "2.12.1",
"fs-extra": "4.0.2",
"highlight.js": "9.12.0",
"marked": "0.3.6",
"underscore": "1.8.3"
}
},
"ebnf-parser": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/ebnf-parser/-/ebnf-parser-0.1.10.tgz",
"integrity": "sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE=",
"dev": true
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"dev": true
},
"escodegen": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz",
"integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=",
"dev": true,
"requires": {
"esprima": "1.1.1",
"estraverse": "1.5.1",
"esutils": "1.0.0",
"source-map": "0.1.43"
}
},
"esprima": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz",
"integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=",
"dev": true
},
"estraverse": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz",
"integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=",
"dev": true
},
"esutils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz",
"integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=",
"dev": true
},
"fs-extra": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
"integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "4.0.0",
"universalify": "0.1.1"
}
},
"google-closure-compiler-js": {
"version": "20170910.0.1",
"resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20170910.0.1.tgz",
"integrity": "sha512-Vric7QFWxzHFxITZ10bmlG1H/5rhODb7hJuWyKWMD8GflpQzRmbMVqkFp3fKvN+U9tPwZItGVhkiOR+84PX3ew==",
"dev": true,
"requires": {
"minimist": "1.2.0",
"vinyl": "2.1.0",
"webpack-core": "0.6.9"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
"highlight.js": {
"version": "9.12.0",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
"integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=",
"dev": true
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"jison": {
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/jison/-/jison-0.4.18.tgz",
"integrity": "sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==",
"dev": true,
"requires": {
"JSONSelect": "0.4.0",
"cjson": "0.3.0",
"ebnf-parser": "0.1.10",
"escodegen": "1.3.3",
"esprima": "1.1.1",
"jison-lex": "0.3.4",
"lex-parser": "0.1.4",
"nomnom": "1.5.2"
}
},
"jison-lex": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/jison-lex/-/jison-lex-0.3.4.tgz",
"integrity": "sha1-gcoo2E+ESZ36jFlNzePYo/Jux6U=",
"dev": true,
"requires": {
"lex-parser": "0.1.4",
"nomnom": "1.5.2"
}
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
}
},
"jsonlint": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.0.tgz",
"integrity": "sha1-iKpGvCiaesk7tGyuLVihh6m7SUo=",
"dev": true,
"requires": {
"JSV": "4.0.2",
"nomnom": "1.5.2"
}
},
"lex-parser": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz",
"integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=",
"dev": true
},
"linkify-it": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz",
"integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=",
"dev": true,
"requires": {
"uc.micro": "1.0.3"
}
},
"markdown-it": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.0.tgz",
"integrity": "sha512-tNuOCCfunY5v5uhcO2AUMArvKAyKMygX8tfup/JrgnsDqcCATQsAExBq7o5Ml9iMmO82bk6jYNLj6khcrl0JGA==",
"dev": true,
"requires": {
"argparse": "1.0.9",
"entities": "1.1.1",
"linkify-it": "2.0.3",
"mdurl": "1.0.1",
"uc.micro": "1.0.3"
}
},
"marked": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz",
"integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=",
"dev": true
},
"mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
"dev": true
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"nomnom": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz",
"integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=",
"dev": true,
"requires": {
"colors": "0.5.1",
"underscore": "1.1.7"
},
"dependencies": {
"underscore": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz",
"integrity": "sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA=",
"dev": true
}
}
},
"process-nextick-args": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
"dev": true
},
"readable-stream": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"safe-buffer": "5.1.1",
"string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
},
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
"replace-ext": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
"dev": true
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true
},
"source-list-map": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
"integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
"dev": true
},
"source-map": {
"version": "0.1.43",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
"dev": true,
"optional": true,
"requires": {
"amdefine": "1.0.1"
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"dev": true,
"requires": {
"readable-stream": "2.3.3",
"xtend": "4.0.1"
}
},
"uc.micro": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz",
"integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=",
"dev": true
},
"underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
"dev": true
},
"universalify": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
"dev": true
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"vinyl": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
"integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
"dev": true,
"requires": {
"clone": "2.1.1",
"clone-buffer": "1.0.0",
"clone-stats": "1.0.0",
"cloneable-readable": "1.0.0",
"remove-trailing-separator": "1.1.0",
"replace-ext": "1.0.0"
}
},
"webpack-core": {
"version": "0.6.9",
"resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
"integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
"dev": true,
"requires": {
"source-list-map": "0.1.8",
"source-map": "0.4.4"
},
"dependencies": {
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": "1.0.1"
}
}
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
}
}
}

View File

@@ -8,7 +8,7 @@
"compiler"
],
"author": "Jeremy Ashkenas",
"version": "1.12.3",
"version": "1.12.8",
"license": "MIT",
"engines": {
"node": ">=0.8.0"
@@ -27,8 +27,8 @@
"register.js",
"repl.js"
],
"preferGlobal": true,
"scripts": {
"postinstall": "node --eval 'if (require(\"./package.json\").name === \"coffee-script\") { var red, yellow, cyan, reset; red = yellow = cyan = reset = \"\"; if (!process.env.NODE_DISABLE_COLORS) { red = \"\\x1b[31m\"; yellow = \"\\x1b[33m\"; cyan = \"\\x1b[36m\"; reset = \"\\x1b[0m\"; } console.warn(red + \"CoffeeScript has moved!\" + reset + \" Please update references to \" + yellow + \"\\\"coffee-script\\\"\" + reset + \" to use \" + yellow + \"\\\"coffeescript\\\"\" + reset + \" (no hyphen) instead.\"); console.warn(\"Also, a new major version has been released under the \" + yellow + \"coffeescript\" + reset + \" name on NPM. This new release targets modern JavaScript, with minimal breaking changes. Learn more at \" + cyan + \"http://coffeescript.org\" + reset + \".\"); console.warn(\"\"); }'",
"test": "node ./bin/cake test",
"test-harmony": "node --harmony ./bin/cake test"
},
@@ -40,10 +40,10 @@
},
"devDependencies": {
"docco": "~0.7.0",
"google-closure-compiler-js": "^20161201.0.1",
"highlight.js": "~9.9.0",
"jison": ">=0.4.17",
"marked": "^0.3.6",
"google-closure-compiler-js": "~20170910.0.1",
"highlight.js": "~9.12.0",
"jison": "~0.4.18",
"markdown-it": "~8.4.0",
"underscore": "~1.8.3"
}
}

View File

@@ -1,5 +1,5 @@
# `cake` is a simplified version of [Make](http://www.gnu.org/software/make/)
# ([Rake](http://rake.rubyforge.org/), [Jake](http://github.com/280north/jake))
# ([Rake](http://rake.rubyforge.org/), [Jake](https://github.com/280north/jake))
# for CoffeeScript. You define tasks with names and descriptions in a Cakefile,
# and can call them from the command line, or invoke them from other tasks.
#

View File

@@ -366,6 +366,7 @@ getSourceMap = (filename) ->
answer = compile sources[filename],
filename: filename
sourceMap: yes
literate: helpers.isLiterate filename
answer.sourceMap
else
null

View File

@@ -1,14 +1,14 @@
# The CoffeeScript parser is generated by [Jison](http://github.com/zaach/jison)
# The CoffeeScript parser is generated by [Jison](https://github.com/zaach/jison)
# from this grammar file. Jison is a bottom-up parser generator, similar in
# style to [Bison](http://www.gnu.org/software/bison), implemented in JavaScript.
# It can recognize [LALR(1), LR(0), SLR(1), and LR(1)](http://en.wikipedia.org/wiki/LR_grammar)
# It can recognize [LALR(1), LR(0), SLR(1), and LR(1)](https://en.wikipedia.org/wiki/LR_grammar)
# type grammars. To create the Jison parser, we list the pattern to match
# on the left-hand side, and the action to take (usually the creation of syntax
# tree nodes) on the right. As the parser runs, it
# shifts tokens from our token stream, from left to right, and
# [attempts to match](http://en.wikipedia.org/wiki/Bottom-up_parsing)
# [attempts to match](https://en.wikipedia.org/wiki/Bottom-up_parsing)
# the token sequence against the rules below. When a match can be made, it
# reduces into the [nonterminal](http://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols)
# reduces into the [nonterminal](https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols)
# (the enclosing name at the top), and we proceed from there.
#
# If you run the `cake build:parser` command, Jison constructs a parse table
@@ -26,7 +26,7 @@
unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/
# Our handy DSL for Jison grammar generation, thanks to
# [Tim Caswell](http://github.com/creationix). For every rule in the grammar,
# [Tim Caswell](https://github.com/creationix). For every rule in the grammar,
# we pass the pattern-defining string, the action to run, and extra options,
# optionally. If no action is specified, we simply pass the value of the
# previous nonterminal.
@@ -211,6 +211,7 @@ grammar =
# A return statement from a function body.
Return: [
o 'RETURN Expression', -> new Return $2
o 'RETURN INDENT Object OUTDENT', -> new Return new Value $3
o 'RETURN', -> new Return
]
@@ -395,6 +396,7 @@ grammar =
o 'EXPORT Identifier = INDENT Expression OUTDENT', -> new ExportNamedDeclaration new Assign $2, $5, null,
moduleDeclaration: 'export'
o 'EXPORT DEFAULT Expression', -> new ExportDefaultDeclaration $3
o 'EXPORT DEFAULT INDENT Object OUTDENT', -> new ExportDefaultDeclaration new Value $4
o 'EXPORT EXPORT_ALL FROM String', -> new ExportAllDeclaration new Literal($2), $4
o 'EXPORT { ExportSpecifierList OptComma } FROM String', -> new ExportNamedDeclaration new ExportSpecifierList($3), $7
]
@@ -412,6 +414,7 @@ grammar =
o 'Identifier AS Identifier', -> new ExportSpecifier $1, $3
o 'Identifier AS DEFAULT', -> new ExportSpecifier $1, new Literal $3
o 'DEFAULT', -> new ExportSpecifier new Literal $1
o 'DEFAULT AS Identifier', -> new ExportSpecifier new Literal($1), $3
]
# Ordinary function invocation, or a chained series of calls.

View File

@@ -6,7 +6,7 @@
# [tag, value, locationData]
#
# where locationData is {first_line, first_column, last_line, last_column}, which is a
# format that can be fed directly into [Jison](http://github.com/zaach/jison). These
# format that can be fed directly into [Jison](https://github.com/zaach/jison). These
# are read by jison in the `parser.lexer` function defined in coffee-script.coffee.
{Rewriter, INVERSES} = require './rewriter'
@@ -45,6 +45,7 @@ exports.Lexer = class Lexer
@seenFor = no # Used to recognize FORIN, FOROF and FORFROM tokens.
@seenImport = no # Used to recognize IMPORT FROM? AS? tokens.
@seenExport = no # Used to recognize EXPORT FROM? AS? tokens.
@importSpecifierList = no # Used to identify when in an IMPORT {...} FROM? ...
@exportSpecifierList = no # Used to identify when in an EXPORT {...} FROM? ...
@chunkLine =
@@ -124,10 +125,10 @@ exports.Lexer = class Lexer
if @tag() in ['DEFAULT', 'IMPORT_ALL', 'IDENTIFIER']
@token 'AS', id
return id.length
if id is 'as' and @seenExport and @tag() is 'IDENTIFIER'
if id is 'as' and @seenExport and @tag() in ['IDENTIFIER', 'DEFAULT']
@token 'AS', id
return id.length
if id is 'default' and @seenExport
if id is 'default' and @seenExport and @tag() in ['EXPORT', 'AS']
@token 'DEFAULT', id
return id.length
@@ -260,14 +261,14 @@ exports.Lexer = class Lexer
indent = attempt if indent is null or 0 < attempt.length < indent.length
indentRegex = /// \n#{indent} ///g if indent
@mergeInterpolationTokens tokens, {delimiter}, (value, i) =>
value = @formatString value
value = @formatString value, delimiter: quote
value = value.replace indentRegex, '\n' if indentRegex
value = value.replace LEADING_BLANK_LINE, '' if i is 0
value = value.replace TRAILING_BLANK_LINE, '' if i is $
value
else
@mergeInterpolationTokens tokens, {delimiter}, (value, i) =>
value = @formatString value
value = @formatString value, delimiter: quote
value = value.replace SIMPLE_STRING_OMIT, (match, offset) ->
if (i is 0 and offset is 0) or
(i is $ and offset + match.length is value.length)
@@ -317,6 +318,7 @@ exports.Lexer = class Lexer
when match = REGEX.exec @chunk
[regex, body, closed] = match
@validateEscapes body, isRegex: yes, offsetInChunk: 1
body = @formatRegex body, delimiter: '/'
index = regex.length
[..., prev] = @tokens
if prev
@@ -343,10 +345,10 @@ exports.Lexer = class Lexer
@token 'CALL_START', '(', 0, 0
@mergeInterpolationTokens tokens, {delimiter: '"', double: yes}, @formatHeregex
if flags
@token ',', ',', index, 0
@token 'STRING', '"' + flags + '"', index, flags.length
@token ')', ')', end, 0
@token 'REGEX_END', ')', end, 0
@token ',', ',', index - 1, 0
@token 'STRING', '"' + flags + '"', index - 1, flags.length
@token ')', ')', end - 1, 0
@token 'REGEX_END', ')', end - 1, 0
end
@@ -365,6 +367,8 @@ exports.Lexer = class Lexer
indent = match[0]
@seenFor = no
@seenImport = no unless @importSpecifierList
@seenExport = no unless @exportSpecifierList
size = indent.length - 1 - indent.lastIndexOf '\n'
noNewlines = @unfinished()
@@ -426,7 +430,7 @@ exports.Lexer = class Lexer
this
# Matches and consumes non-meaningful whitespace. Tag the previous token
# as being "spaced", because there are some cases where it makes a difference.
# as being spaced, because there are some cases where it makes a difference.
whitespaceToken: ->
return 0 unless (match = WHITESPACE.exec @chunk) or
(nline = @chunk.charAt(0) is '\n')
@@ -473,7 +477,11 @@ exports.Lexer = class Lexer
@error message, origin[2] if message
return value.length if skipToken
if value is '{' and prev?[0] is 'EXPORT'
if value is '{' and @seenImport
@importSpecifierList = yes
else if @importSpecifierList and value is '}'
@importSpecifierList = no
else if value is '{' and prev?[0] is 'EXPORT'
@exportSpecifierList = yes
else if @exportSpecifierList and value is '}'
@exportSpecifierList = no
@@ -625,7 +633,7 @@ exports.Lexer = class Lexer
tokensToPush = value
when 'NEOSTRING'
# Convert 'NEOSTRING' into 'STRING'.
converted = fn token[1], i
converted = fn.call this, token[1], i
# Optimize out empty strings. We ensure that the tokens stream always
# starts with a string token, though, to make sure that the result
# really is a string.
@@ -751,28 +759,56 @@ exports.Lexer = class Lexer
# Are we in the midst of an unfinished expression?
unfinished: ->
LINE_CONTINUER.test(@chunk) or
@tag() in ['\\', '.', '?.', '?::', 'UNARY', 'MATH', 'UNARY_MATH', '+', '-',
'**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||',
'BIN?', 'THROW', 'EXTENDS']
@tag() in UNFINISHED
formatString: (str) ->
str.replace STRING_OMIT, '$1'
formatString: (str, options) ->
@replaceUnicodeCodePointEscapes str.replace(STRING_OMIT, '$1'), options
formatHeregex: (str) ->
str.replace HEREGEX_OMIT, '$1$2'
@formatRegex str.replace(HEREGEX_OMIT, '$1$2'), delimiter: '///'
formatRegex: (str, options) ->
@replaceUnicodeCodePointEscapes str, options
unicodeCodePointToUnicodeEscapes: (codePoint) ->
toUnicodeEscape = (val) ->
str = val.toString 16
"\\u#{repeat '0', 4 - str.length}#{str}"
return toUnicodeEscape(codePoint) if codePoint < 0x10000
# surrogate pair
high = Math.floor((codePoint - 0x10000) / 0x400) + 0xD800
low = (codePoint - 0x10000) % 0x400 + 0xDC00
"#{toUnicodeEscape(high)}#{toUnicodeEscape(low)}"
# Replace \u{...} with \uxxxx[\uxxxx] in strings and regexes
replaceUnicodeCodePointEscapes: (str, options) ->
str.replace UNICODE_CODE_POINT_ESCAPE, (match, escapedBackslash, codePointHex, offset) =>
return escapedBackslash if escapedBackslash
codePointDecimal = parseInt codePointHex, 16
if codePointDecimal > 0x10ffff
@error "unicode code point escapes greater than \\u{10ffff} are not allowed",
offset: offset + options.delimiter.length
length: codePointHex.length + 4
@unicodeCodePointToUnicodeEscapes codePointDecimal
# Validates escapes in strings and regexes.
validateEscapes: (str, options = {}) ->
match = INVALID_ESCAPE.exec str
invalidEscapeRegex =
if options.isRegex
REGEX_INVALID_ESCAPE
else
STRING_INVALID_ESCAPE
match = invalidEscapeRegex.exec str
return unless match
[[], before, octal, hex, unicode] = match
return if options.isRegex and octal and octal.charAt(0) isnt '0'
[[], before, octal, hex, unicodeCodePoint, unicode] = match
message =
if octal
"octal escape sequences are not allowed"
else
"invalid escape sequence"
invalidEscape = "\\#{octal or hex or unicode}"
invalidEscape = "\\#{octal or hex or unicodeCodePoint or unicode}"
@error "#{message} #{invalidEscape}",
offset: (options.offsetInChunk ? 0) + match.index + before.length
length: invalidEscape.length
@@ -959,7 +995,7 @@ REGEX = /// ^
///
REGEX_FLAGS = /^\w*/
VALID_FLAGS = /^(?!.*(.).*\1)[imgy]*$/
VALID_FLAGS = /^(?!.*(.).*\1)[imguy]*$/
HEREGEX = /// ^(?: [^\\/#] | \\[\s\S] | /(?!//) | \#(?!\{) )* ///
@@ -978,14 +1014,30 @@ HERECOMMENT_ILLEGAL = /\*\//
LINE_CONTINUER = /// ^ \s* (?: , | \??\.(?![.\d]) | :: ) ///
INVALID_ESCAPE = ///
STRING_INVALID_ESCAPE = ///
( (?:^|[^\\]) (?:\\\\)* ) # make sure the escape isnt escaped
\\ (
?: (0[0-7]|[1-7]) # octal escape
| (x(?![\da-fA-F]{2}).{0,2}) # hex escape
| (u(?![\da-fA-F]{4}).{0,4}) # unicode escape
| (u\{(?![\da-fA-F]{1,}\})[^}]*\}?) # unicode code point escape
| (u(?!\{|[\da-fA-F]{4}).{0,4}) # unicode escape
)
///
REGEX_INVALID_ESCAPE = ///
( (?:^|[^\\]) (?:\\\\)* ) # make sure the escape isnt escaped
\\ (
?: (0[0-7]) # octal escape
| (x(?![\da-fA-F]{2}).{0,2}) # hex escape
| (u\{(?![\da-fA-F]{1,}\})[^}]*\}?) # unicode code point escape
| (u(?!\{|[\da-fA-F]{4}).{0,4}) # unicode escape
)
///
UNICODE_CODE_POINT_ESCAPE = ///
( \\\\ ) # make sure the escape isnt escaped
|
\\u\{ ( [\da-fA-F]+ ) \}
///g
LEADING_BLANK_LINE = /^[^\n\S]*\n/
TRAILING_BLANK_LINE = /\n[^\n\S]*$/
@@ -1040,3 +1092,8 @@ LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR']
# Additional indent in front of these is ignored.
INDENTABLE_CLOSERS = [')', '}', ']']
# Tokens that, when appearing at the end of a line, suppress a following TERMINATOR/INDENT token
UNFINISHED = ['\\', '.', '?.', '?::', 'UNARY', 'MATH', 'UNARY_MATH', '+', '-',
'**', 'SHIFT', 'RELATION', 'COMPARE', '&', '^', '|', '&&', '||',
'BIN?', 'THROW', 'EXTENDS']

View File

@@ -633,6 +633,21 @@ exports.Call = class Call extends Base
children: ['variable', 'args']
# When setting the location, we sometimes need to update the start location to
# account for a newly-discovered `new` operator to the left of us. This
# expands the range on the left, but not the right.
updateLocationDataIfMissing: (locationData) ->
if @locationData and @needsUpdatedStartLocation
@locationData.first_line = locationData.first_line
@locationData.first_column = locationData.first_column
base = @variable?.base or @variable
if base.needsUpdatedStartLocation
@variable.locationData.first_line = locationData.first_line
@variable.locationData.first_column = locationData.first_column
base.updateLocationDataIfMissing locationData
delete @needsUpdatedStartLocation
super
# Tag this invocation as creating a new instance.
newInstance: ->
base = @variable?.base or @variable
@@ -640,6 +655,7 @@ exports.Call = class Call extends Base
base.newInstance()
else
@isNew = true
@needsUpdatedStartLocation = true
this
# Soaked chained invocations unfold into if/else ternary structures.
@@ -1352,7 +1368,7 @@ exports.ModuleSpecifier = class ModuleSpecifier extends Base
children: ['original', 'alias']
compileNode: (o) ->
o.scope.add @identifier, @moduleDeclarationType
o.scope.find @identifier, @moduleDeclarationType
code = []
code.push @makeCode @original.value
code.push @makeCode " as #{@alias.value}" if @alias?
@@ -1796,7 +1812,7 @@ exports.Splat = class Splat extends Base
assigns: (name) ->
@name.assigns name
compileToFragments: (o) ->
compileNode: (o) ->
@name.compileToFragments o
unwrap: -> @name
@@ -1946,7 +1962,7 @@ exports.Op = class Op extends Base
not @isNumber()
# Am I capable of
# [Python-style comparison chaining](http://docs.python.org/reference/expressions.html#notin)?
# [Python-style comparison chaining](https://docs.python.org/3/reference/expressions.html#not-in)?
isChainable: ->
@operator in ['<', '>', '>=', '<=', '===', '!==']
@@ -2238,7 +2254,8 @@ exports.Parens = class Parens extends Base
return expr.compileToFragments o
fragments = expr.compileToFragments o, LEVEL_PAREN
bare = o.level < LEVEL_OP and (expr instanceof Op or expr instanceof Call or
(expr instanceof For and expr.returns))
(expr instanceof For and expr.returns)) and (o.level < LEVEL_COND or
fragments.length <= 3)
if bare then fragments else @wrapInBraces fragments
#### StringWithInterpolations

View File

@@ -33,7 +33,7 @@ replDefaults =
ast = CoffeeScript.nodes tokens
# Add assignment to `_` variable to force the input to be an expression.
ast = new Block [
new Assign (new Value new Literal '_'), ast, '='
new Assign (new Value new Literal '__'), ast, '='
]
js = ast.compile {bare: yes, locals: Object.keys(context), referencedVars}
cb null, runInContext js, context, filename
@@ -145,7 +145,7 @@ getCommandId = (repl, commandName) ->
module.exports =
start: (opts = {}) ->
[major, minor, build] = process.versions.node.split('.').map (n) -> parseInt(n)
[major, minor, build] = process.versions.node.split('.').map (n) -> parseInt(n, 10)
if major is 0 and minor < 8
console.warn "Node 0.8.0+ required for CoffeeScript REPL"

View File

@@ -14,11 +14,7 @@ generate = (tag, value, origin) ->
# The **Rewriter** class is used by the [Lexer](lexer.html), directly against
# its internal array of tokens.
class exports.Rewriter
# Helpful snippet for debugging:
#
# console.log (t[0] + '/' + t[1] for t in @tokens).join ' '
exports.Rewriter = class Rewriter
# Rewrite the token stream in multiple passes, one logical filter at
# a time. This could certainly be changed into a single pass through the
@@ -26,6 +22,8 @@ class exports.Rewriter
# like this. The order of these passes matters -- indentation must be
# corrected before implicit parentheses can be wrapped around blocks of code.
rewrite: (@tokens) ->
# Helpful snippet for debugging:
# console.log (t[0] + '/' + t[1] for t in @tokens).join ' '
@removeLeadingNewlines()
@closeOpenCalls()
@closeOpenIndexes()
@@ -151,9 +149,12 @@ class exports.Rewriter
forward = (n) -> i - startIdx + n
# Helper functions
inImplicit = -> stackTop()?[2]?.ours
inImplicitCall = -> inImplicit() and stackTop()?[0] is '('
inImplicitObject = -> inImplicit() and stackTop()?[0] is '{'
isImplicit = (stackItem) -> stackItem?[2]?.ours
isImplicitObject = (stackItem) -> isImplicit(stackItem) and stackItem?[0] is '{'
isImplicitCall = (stackItem) -> isImplicit(stackItem) and stackItem?[0] is '('
inImplicit = -> isImplicit stackTop()
inImplicitCall = -> isImplicitCall stackTop()
inImplicitObject = -> isImplicitObject stackTop()
# Unclosed control statement inside implicit parens (like
# class declaration or if-conditionals)
inImplicitControl = -> inImplicit and stackTop()?[0] is 'CONTROL'
@@ -161,7 +162,7 @@ class exports.Rewriter
startImplicitCall = (j) ->
idx = j ? i
stack.push ['(', idx, ours: yes]
tokens.splice idx, 0, generate 'CALL_START', '('
tokens.splice idx, 0, generate 'CALL_START', '(', ['', 'implicit function call', token[2]]
i += 1 if not j?
endImplicitCall = ->
@@ -186,7 +187,7 @@ class exports.Rewriter
# Don't end an implicit call on next indent if any of these are in an argument
if inImplicitCall() and tag in ['IF', 'TRY', 'FINALLY', 'CATCH',
'CLASS', 'SWITCH']
stack.push ['CONTROL', i, ours: true]
stack.push ['CONTROL', i, ours: yes]
return forward(1)
if tag is 'INDENT' and inImplicit()
@@ -300,7 +301,11 @@ class exports.Rewriter
# .g b
# .h a
stackTop()[2].sameLine = no if inImplicitObject() and tag in LINEBREAKS
# Mark all enclosing objects as not sameLine
if tag in LINEBREAKS
for stackItem in stack by -1
break unless isImplicit stackItem
stackItem[2].sameLine = no if isImplicitObject stackItem
newLine = prevTag is 'OUTDENT' or prevToken.newLine
if tag in IMPLICIT_END or tag in CALL_CLOSERS and newLine
@@ -398,7 +403,8 @@ class exports.Rewriter
not (token[0] is 'TERMINATOR' and @tag(i + 1) in EXPRESSION_CLOSE) and
not (token[0] is 'ELSE' and starter isnt 'THEN') and
not (token[0] in ['CATCH', 'FINALLY'] and starter in ['->', '=>']) or
token[0] in CALL_CLOSERS and @tokens[i - 1].newLine
token[0] in CALL_CLOSERS and
(@tokens[i - 1].newLine or @tokens[i - 1][0] is 'OUTDENT')
action = (token, i) ->
@tokens.splice (if @tag(i - 1) is ',' then i - 1 else i), 0, outdent

View File

@@ -44,9 +44,9 @@ function object that has a name filled in, or bottoms out.
Look up a variable name in lexical scope, and declare it if it does not
already exist.
find: (name) ->
find: (name, type = 'var') ->
return yes if @check name
@add name, 'var'
@add name, type
no
Reserve a variable name as originating from a function parameter for this
@@ -116,4 +116,3 @@ of this scope.
assignedVariables: ->
"#{v.name} = #{v.type.value}" for v in @variables when v.type.assigned

View File

@@ -136,7 +136,7 @@ Base64 VLQ Encoding
Note that SourceMap VLQ encoding is "backwards". MIDI-style VLQ encoding puts
the most-significant-bit (MSB) from the original value into the MSB of the VLQ
encoded value (see [Wikipedia](http://en.wikipedia.org/wiki/File:Uintvar_coding.svg)).
encoded value (see [Wikipedia](https://en.wikipedia.org/wiki/File:Uintvar_coding.svg)).
SourceMap VLQ does things the other way around, with the least significat four
bits of the original value encoded into the first byte of the VLQ encoded value.

View File

@@ -36,9 +36,7 @@ test "array splat expansions with assignments", ->
eq 4, b
arrayEq [0,1,2,3,4], list
test "mixed shorthand objects in array lists", ->
arr = [
a:1
'b'
@@ -58,7 +56,6 @@ test "mixed shorthand objects in array lists", ->
eq arr[2].b, 1
eq arr[3], 'b'
test "array splats with nested arrays", ->
nonce = {}
a = [nonce]
@@ -70,6 +67,30 @@ test "array splats with nested arrays", ->
list = [1, 2, a...]
arrayEq list, [1, 2, [nonce]]
test "#4260: splat after existential operator soak", ->
a = {b: [3]}
foo = (a) -> [a]
arrayEq [a?.b...], [3]
arrayEq [c?.b ? []...], []
arrayEq foo(a?.b...), [3]
arrayEq foo(c?.b ? []...), [undefined]
e = yes
f = null
arrayEq [(a if e)?.b...], [3]
arrayEq [(a if f)?.b ? []...], []
arrayEq foo((a if e)?.b...), [3]
arrayEq foo((a if f)?.b ? []...), [undefined]
test "#1349: trailing if after splat", ->
a = [3]
b = yes
c = null
foo = (a) -> [a]
arrayEq [a if b...], [3]
arrayEq [(a if c) ? []...], []
arrayEq foo((a if b)...), [3]
arrayEq foo((a if c) ? []...), [undefined]
test "#1274: `[] = a()` compiles to `false` instead of `a()`", ->
a = false
fn = -> a = true

View File

@@ -198,6 +198,17 @@ test "#748: trailing reserved identifiers", ->
nonce
eq nonce, result
test 'if-else within an assignment, condition parenthesized', ->
result = if (1 is 1) then 'correct'
eq result, 'correct'
result = if ('whatever' ? no) then 'correct'
eq result, 'correct'
f = -> 'wrong'
result = if (f?()) then 'correct' else 'wrong'
eq result, 'correct'
# Postfix
test "#3056: multiple postfix conditionals", ->

View File

@@ -71,20 +71,21 @@ if require?
test "#2849: compilation error in a require()d file", ->
# Create a temporary file to require().
ok not fs.existsSync 'test/syntax-error.coffee'
fs.writeFileSync 'test/syntax-error.coffee', 'foo in bar or in baz'
tempFile = path.join os.tmpdir(), 'syntax-error.coffee'
ok not fs.existsSync tempFile
fs.writeFileSync tempFile, 'foo in bar or in baz'
try
assertErrorFormat '''
require './test/syntax-error'
''',
assertErrorFormat """
require '#{tempFile}'
""",
"""
#{path.join __dirname, 'syntax-error.coffee'}:1:15: error: unexpected in
#{fs.realpathSync tempFile}:1:15: error: unexpected in
foo in bar or in baz
^^
"""
finally
fs.unlinkSync 'test/syntax-error.coffee'
fs.unlinkSync tempFile
test "#3890 Error.prepareStackTrace doesn't throw an error if a compiled file is deleted", ->
# Adapted from https://github.com/atom/coffee-cash/blob/master/spec/coffee-cash-spec.coffee
@@ -455,6 +456,13 @@ test "octal escapes", ->
/a\\0\\tb\\\\\\07c/
\ \ \ \ ^\^^
'''
assertErrorFormat '''
/a\\1\\tb\\\\\\07c/
''', '''
[stdin]:1:10: error: octal escape sequences are not allowed \\07
/a\\1\\tb\\\\\\07c/
\ \ \ \ ^\^^
'''
assertErrorFormat '''
///a
#{b} \\01///
@@ -1249,3 +1257,116 @@ test "can't use pattern matches for loop indices", ->
a for b, {c} in d
^^^
'''
test "#4248: Unicode code point escapes", ->
assertErrorFormat '''
"a
#{b} \\u{G02}
c"
''', '''
[stdin]:2:8: error: invalid escape sequence \\u{G02}
#{b} \\u{G02}
^\^^^^^^
'''
assertErrorFormat '''
/a\\u{}b/
''', '''
[stdin]:1:3: error: invalid escape sequence \\u{}
/a\\u{}b/
^\^^^
'''
assertErrorFormat '''
///a \\u{01abc///
''', '''
[stdin]:1:6: error: invalid escape sequence \\u{01abc
///a \\u{01abc///
^\^^^^^^^
'''
assertErrorFormat '''
/\\u{123} \\u{110000}/
''', '''
[stdin]:1:10: error: unicode code point escapes greater than \\u{10ffff} are not allowed
/\\u{123} \\u{110000}/
\ ^\^^^^^^^^^
'''
assertErrorFormat '''
///abc\\\\\\u{123456}///u
''', '''
[stdin]:1:9: error: unicode code point escapes greater than \\u{10ffff} are not allowed
///abc\\\\\\u{123456}///u
\ \^\^^^^^^^^^
'''
assertErrorFormat '''
"""
\\u{123}
a
\\u{00110000}
#{ 'b' }
"""
''', '''
[stdin]:4:5: error: unicode code point escapes greater than \\u{10ffff} are not allowed
\\u{00110000}
^\^^^^^^^^^^^
'''
assertErrorFormat '''
'\\u{a}\\u{1111110000}'
''', '''
[stdin]:1:7: error: unicode code point escapes greater than \\u{10ffff} are not allowed
'\\u{a}\\u{1111110000}'
\ ^\^^^^^^^^^^^^^
'''
test "#4283: error message for implicit call", ->
assertErrorFormat '''
console.log {search, users, contacts users_to_display}
''', '''
[stdin]:1:29: error: unexpected implicit function call
console.log {search, users, contacts users_to_display}
^^^^^^^^
'''
test "#3199: error message for call indented non-object", ->
assertErrorFormat '''
fn = ->
fn
1
''', '''
[stdin]:3:1: error: unexpected indentation
1
^^
'''
test "#3199: error message for call indented comprehension", ->
assertErrorFormat '''
fn = ->
fn
x for x in [1, 2, 3]
''', '''
[stdin]:3:1: error: unexpected indentation
x for x in [1, 2, 3]
^^
'''
test "#3199: error message for return indented non-object", ->
assertErrorFormat '''
return
1
''', '''
[stdin]:2:3: error: unexpected number
1
^
'''
test "#3199: error message for return indented comprehension", ->
assertErrorFormat '''
return
x for x in [1, 2, 3]
''', '''
[stdin]:2:3: error: unexpected identifier
x for x in [1, 2, 3]
^
'''

View File

@@ -128,6 +128,9 @@ test "indented heredoc", ->
# * single line arguments
# * inline function literal
# * inline object literal
#
# * chaining inside
# * implicit object literal
test "chaining after outdent", ->
id = (x) -> x
@@ -198,6 +201,47 @@ test "#1495, method call chaining", ->
).join ', '
eq 'a, b, c', result
test "chaining should not wrap spilling ternary", ->
throws -> CoffeeScript.compile """
if 0 then 1 else g
a: 42
.h()
"""
test "chaining should wrap calls containing spilling ternary", ->
f = (x) -> h: x
id = (x) -> x
result = f if true then 42 else id
a: 2
.h
eq 42, result
test "chaining should work within spilling ternary", ->
f = (x) -> h: x
id = (x) -> x
result = f if false then 1 else id
a: 3
.a
eq 3, result.h
test "method call chaining inside objects", ->
f = (x) -> c: 42
result =
a: f 1
b: f a: 1
.c
eq 42, result.b
test "#4568: refine sameLine implicit object tagging", ->
condition = yes
fn = -> yes
x =
fn bar: {
foo: 123
} if not condition
eq x, undefined
# Nested blocks caused by paren unwrapping
test "#1492: Nested blocks don't cause double semicolons", ->
js = CoffeeScript.compile '(0;0)'
@@ -254,3 +298,10 @@ test "#1275: allow indentation before closing brackets", ->
a = 1
)
eq 1, a
test "#3199: return multiline implicit object", ->
y = do ->
if no then return
type: 'a'
msg: 'b'
eq undefined, y

View File

@@ -585,6 +585,29 @@ test "Verify indented heredocs have the right position", ->
eq stringToken[2].last_line, 3
eq stringToken[2].last_column, 4
test "Verify heregexes with interpolations have the right ending position", ->
source = '''
[a ///#{b}///g]
'''
[..., stringEnd, comma, flagsString, regexCallEnd, regexEnd, fnCallEnd,
arrayEnd, terminator] = CoffeeScript.tokens source
eq comma[0], ','
eq arrayEnd[0], ']'
assertColumn = (token, column) ->
eq token[2].first_line, 0
eq token[2].first_column, column
eq token[2].last_line, 0
eq token[2].last_column, column
arrayEndColumn = arrayEnd[2].first_column
for token in [comma, flagsString]
assertColumn token, arrayEndColumn - 2
for token in [regexCallEnd, regexEnd, fnCallEnd]
assertColumn token, arrayEndColumn - 1
assertColumn arrayEnd, arrayEndColumn
test "Verify all tokens get a location", ->
doesNotThrow ->
tokens = CoffeeScript.tokens testScript

View File

@@ -36,12 +36,6 @@
# CoffeeScript also supports optional commas within `{ … }`.
# Helper function
toJS = (str) ->
CoffeeScript.compile str, bare: yes
.replace /^\s+|\s+$/g, '' # Trim leading/trailing whitespace
# Import statements
test "backticked import statement", ->
@@ -353,6 +347,47 @@ test "export default object", ->
};"""
eq toJS(input), output
test "export default implicit object", ->
input = "export default foo: 'bar', baz: 'qux'"
output = """
export default {
foo: 'bar',
baz: 'qux'
};"""
eq toJS(input), output
test "export default multiline implicit object", ->
input = """
export default
foo: 'bar'
baz: 'qux'
"""
output = """
export default {
foo: 'bar',
baz: 'qux'
};"""
eq toJS(input), output
test "export default multiline implicit object with internal braces", ->
input = """
export default
foo: yes
bar: {
baz
}
quz: no
"""
output = """
export default {
foo: true,
bar: {
baz: baz
},
quz: false
};"""
eq toJS(input), output
test "export default assignment expression", ->
input = "export default foo = 'bar'"
output = """
@@ -718,7 +753,7 @@ test "export an aliased member named default", ->
};"""
eq toJS(input), output
test "export an imported member named default", ->
test "import an imported member named default", ->
input = "import { default } from 'lib'"
output = """
import {
@@ -726,10 +761,157 @@ test "export an imported member named default", ->
} from 'lib';"""
eq toJS(input), output
test "export an imported aliased member named default", ->
test "import an imported aliased member named default", ->
input = "import { default as def } from 'lib'"
output = """
import {
default as def
} from 'lib';"""
eq toJS(input), output
test "export an imported member named default", ->
input = "export { default } from 'lib'"
output = """
export {
default
} from 'lib';"""
eq toJS(input), output
test "export an imported aliased member named default", ->
input = "export { default as def } from 'lib'"
output = """
export {
default as def
} from 'lib';"""
eq toJS(input), output
test "#4394: export shouldn't prevent variable declarations", ->
input = """
x = 1
export { x }
"""
output = """
var x;
x = 1;
export {
x
};
"""
eq toJS(input), output
test "#4451: `default` in an export statement is only treated as a keyword when it follows `export` or `as`", ->
input = "export default { default: 1 }"
output = """
export default {
"default": 1
};
"""
eq toJS(input), output
test "#4491: import- and export-specific lexing should stop after import/export statement", ->
input = """
import {
foo,
bar as baz
} from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import {
foo,
bar as baz
} from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
import { foo, bar as baz } from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import {
foo,
bar as baz
} from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
import * as lib from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
import * as lib from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
export {
foo,
bar
}
foo as
3 * as 4
from 'foo'
"""
output = """
export {
foo,
bar
};
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output
input = """
export * from 'lib'
foo as
3 * as 4
from 'foo'
"""
output = """
export * from 'lib';
foo(as);
3 * as(4);
from('foo');
"""
eq toJS(input), output

View File

@@ -575,3 +575,15 @@ test "#4324: Shorthand after interpolated key", ->
obj = {"#{1}": 1, a}
eq 1, obj[1]
eq 2, obj.a
test "#1263: Braceless object return", ->
fn = ->
return
a: 1
b: 2
c: -> 3
obj = fn()
eq 1, obj.a
eq 2, obj.b
eq 3, obj.c()

View File

@@ -38,3 +38,43 @@ test "operator precedence for binary ? operator", ->
eq expression.second.first.base.value, 'b'
eq expression.second.operator, '&&'
eq expression.second.second.base.value, 'c'
test "new calls have a range including the new", ->
source = '''
a = new B().c(d)
'''
block = CoffeeScript.nodes source
assertColumnRange = (node, firstColumn, lastColumn) ->
eq node.locationData.first_line, 0
eq node.locationData.first_column, firstColumn
eq node.locationData.last_line, 0
eq node.locationData.last_column, lastColumn
[assign] = block.expressions
outerCall = assign.value
innerValue = outerCall.variable
innerCall = innerValue.base
assertColumnRange assign, 0, 15
assertColumnRange outerCall, 4, 15
assertColumnRange innerValue, 4, 12
assertColumnRange innerCall, 4, 10
test "location data is properly set for nested `new`", ->
source = '''
new new A()()
'''
block = CoffeeScript.nodes source
assertColumnRange = (node, firstColumn, lastColumn) ->
eq node.locationData.first_line, 0
eq node.locationData.first_column, firstColumn
eq node.locationData.last_line, 0
eq node.locationData.last_column, lastColumn
[outerCall] = block.expressions
innerCall = outerCall.variable
assertColumnRange outerCall, 0, 12
assertColumnRange innerCall, 4, 10

View File

@@ -286,3 +286,34 @@ test "#3795: Escape otherwise invalid characters", ->
ok ///#{a}\///.test 'a\u2029'
ok ///#{a}\0
1///.test 'a\x001'
test "#4248: Unicode code point escapes", ->
# Support for the `u` flag in regexes was added in Node 6.
return if new RegExp().unicode is undefined
ok /a\u{1ab}c/u.test 'a\u01abc'
ok ///#{ 'a' }\u{000001ab}c///u.test 'a\u{1ab}c'
ok ///a\u{000001ab}c///u.test 'a\u{1ab}c'
ok /a\u{12345}c/u.test 'a\ud808\udf45c'
# and now without u flag
ok /a\u{1ab}c/.test 'a\u01abc'
ok ///#{ 'a' }\u{000001ab}c///.test 'a\u{1ab}c'
ok ///a\u{000001ab}c///.test 'a\u{1ab}c'
ok /a\u{12345}c/.test 'a\ud808\udf45c'
# rewrite code point escapes
input = """
/\\u{bcdef}\\u{abc}/u
"""
output = """
/\\udab3\\uddef\\u0abc/u;
"""
eq toJS(input), output
input = """
///#{ 'a' }\\u{bcdef}///
"""
output = """
/a\\udab3\\uddef/;
"""
eq toJS(input), output

View File

@@ -67,6 +67,11 @@ testRepl "variables are saved", (input, output) ->
eq "'foobar'", output.lastWrite()
testRepl "empty command evaluates to undefined", (input, output) ->
# A regression fixed in Node 5.11.0 broke the handling of pressing enter in
# the Node REPL; see https://github.com/nodejs/node/pull/6090 and
# https://github.com/jashkenas/coffeescript/issues/4502.
# Just skip this test for versions of Node < 6.
return if parseInt(process.versions.node.split('.')[0], 10) < 6
input.emitLine ''
eq 'undefined', output.lastWrite()
@@ -109,4 +114,6 @@ testRepl "keeps running after runtime error", (input, output) ->
eq 'undefined', output.lastWrite()
process.on 'exit', ->
fs.unlinkSync historyFile
try
fs.unlinkSync historyFile
catch exception # Already deleted, nothing else to do.

View File

@@ -140,10 +140,10 @@ test "`Future Reserved Word`s, `eval` and `arguments` restrictions", ->
check "#{keyword} *= 1"
check "#{keyword} /= 1"
check "#{keyword} ?= 1"
check "{keyword}++"
check "++{keyword}"
check "{keyword}--"
check "--{keyword}"
check "#{keyword}++"
check "++#{keyword}"
check "#{keyword}--"
check "--#{keyword}"
destruct = (keyword, check = strict) ->
check "{#{keyword}}"
check "o = {#{keyword}}"

View File

@@ -400,3 +400,33 @@ test "#4314: Whitespace less than or equal to stripped indentation", ->
eq '1 2 3 4 5 end\na 0 b', """
#{1} #{2} #{3} #{4} #{5} end
a #{0} b"""
test "#4248: Unicode code point escapes", ->
eq '\u01ab\u00cd', '\u{1ab}\u{cd}'
eq '\u01ab', '\u{000001ab}'
eq 'a\u01ab', "#{ 'a' }\u{1ab}"
eq '\u01abc', '''\u{01ab}c'''
eq '\u01abc', """\u{1ab}#{ 'c' }"""
eq '\udab3\uddef', '\u{bcdef}'
eq '\udab3\uddef', '\u{0000bcdef}'
eq 'a\udab3\uddef', "#{ 'a' }\u{bcdef}"
eq '\udab3\uddefc', '''\u{0bcdef}c'''
eq '\udab3\uddefc', """\u{bcdef}#{ 'c' }"""
eq '\\u{123456}', "#{'\\'}#{'u{123456}'}"
# rewrite code point escapes
input = """
'\\u{bcdef}\\u{abc}'
"""
output = """
'\\udab3\\uddef\\u0abc';
"""
eq toJS(input), output
input = """
"#{ 'a' }\\u{bcdef}"
"""
output = """
"a\\udab3\\uddef";
"""
eq toJS(input), output

View File

@@ -15,3 +15,7 @@ arrayEgal = (a, b) ->
exports.eq = (a, b, msg) -> ok egal(a, b), msg or "Expected #{a} to equal #{b}"
exports.arrayEq = (a, b, msg) -> ok arrayEgal(a,b), msg or "Expected #{a} to deep equal #{b}"
exports.toJS = (str) ->
CoffeeScript.compile str, bare: yes
.replace /^\s+|\s+$/g, '' # Trim leading/trailing whitespace