diff --git a/Cakefile b/Cakefile index 46a0df740a..07dd1d2869 100644 --- a/Cakefile +++ b/Cakefile @@ -1,5 +1,6 @@ fs: require 'fs' -CoffeeScript: require 'coffee-script' +helpers: require('./lib/helpers').helpers +CoffeeScript: require './lib/coffee-script' # Run a CoffeeScript through our node/coffee interpreter. run: (args) -> @@ -28,8 +29,8 @@ task 'build', 'build the CoffeeScript language from source', -> run ['-c', '-o', 'lib'].concat(files) -task 'build:full', 'checkout /lib, rebuild the source twice, and run the tests', -> - exec 'git co lib && bin/cake build && bin/cake build && bin/cake test', (err, stdout, stderr) -> +task 'build:full', 'rebuild the source twice, and run the tests', -> + exec 'bin/cake build && bin/cake build && bin/cake test', (err, stdout, stderr) -> print stdout if stdout print stderr if stderr throw err if err @@ -37,14 +38,15 @@ task 'build:full', 'checkout /lib, rebuild the source twice, and run the tests', task 'build:parser', 'rebuild the Jison parser (run build first)', -> require.paths.unshift 'vendor/jison/lib' - parser: require('grammar').parser + parser: require('./lib/grammar').parser js: parser.generate() parser_path: 'lib/parser.js' fs.writeFile parser_path, js task 'build:ultraviolet', 'build and install the Ultraviolet syntax highlighter', -> - exec 'plist2syntax extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage', (err) -> + exec 'plist2syntax ../coffee-script-tmbundle/Syntaxes/CoffeeScript.tmLanguage', (err) -> + throw err if err exec 'sudo mv coffeescript.yaml /usr/local/lib/ruby/gems/1.8/gems/ultraviolet-0.10.2/syntax/coffeescript.syntax' @@ -63,22 +65,35 @@ task 'doc:source', 'rebuild the internal documentation', -> task 'doc:underscore', 'rebuild the Underscore.coffee documentation page', -> - exec 'uv -s coffeescript -t idle -h examples/underscore.coffee > documentation/underscore.html' + exec 'docco examples/underscore.coffee && cp -rf docs documentation && rm -r docs', (err) -> + throw err if err task 'test', 'run the CoffeeScript language test suite', -> - process.mixin require 'assert' - test_count: 0 + helpers.extend global, require 'assert' + passed_tests: failed_tests: 0 start_time: new Date() - [original_ok, original_throws]: [ok, throws] - process.mixin { - ok: (args...) -> test_count += 1; original_ok(args...) - throws: (args...) -> test_count += 1; original_throws(args...) + original_ok: ok + helpers.extend global, { + ok: (args...) -> passed_tests += 1; original_ok(args...) + CoffeeScript: CoffeeScript } - process.addListener 'exit', -> + red: '\033[0;31m' + green: '\033[0;32m' + reset: '\033[0m' + on_exit: -> time: ((new Date() - start_time) / 1000).toFixed(2) - puts '\033[0;32mpassed ' + test_count + ' tests in ' + time + ' seconds\033[0m' + message: "passed $passed_tests tests in $time seconds$reset" + puts(if failed_tests then "${red}failed $failed_tests and $message" else "$green$message") + process.addListener 'exit', on_exit fs.readdir 'test', (err, files) -> - for file in files - fs.readFile 'test/' + file, (err, code) -> - CoffeeScript.run code, {source: file} \ No newline at end of file + files.forEach (file) -> + return unless file.match(/\.coffee$/i) + source: path.join 'test', file + fs.readFile source, (err, code) -> + try + CoffeeScript.run code, {source: source} + catch err + failed_tests += 1 + puts "${red}failed:${reset} $source" + puts err.stack diff --git a/Rakefile b/Rakefile index 2bc6b04d09..575671c44f 100644 --- a/Rakefile +++ b/Rakefile @@ -23,7 +23,7 @@ end desc "Build the single concatenated and minified script for the browser" task :browser do - sources = %w(rewriter.js lexer.js parser.js scope.js nodes.js coffee-script.js) + sources = %w(helpers.js rewriter.js lexer.js parser.js scope.js nodes.js coffee-script.js) code = sources.map {|s| File.read('lib/' + s) }.join('') code = YUI::JavaScriptCompressor.new.compress(code) File.open('extras/coffee-script.js', 'w+') {|f| f.write(code) } diff --git a/bin/cake b/bin/cake index dabdfa99dd..40ac7380c7 100755 --- a/bin/cake +++ b/bin/cake @@ -1,9 +1,8 @@ #!/usr/bin/env node -process.mixin(require('sys')); var path = require('path'); var fs = require('fs'); var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib'); -require.paths.unshift(lib); -require('cake').run(); +require(lib + '/helpers').helpers.extend(global, require('sys')); +require(lib + '/cake').run(); diff --git a/bin/coffee b/bin/coffee index 521db04db3..4d2dd38fd0 100755 --- a/bin/coffee +++ b/bin/coffee @@ -1,9 +1,8 @@ #!/usr/bin/env node -process.mixin(require('sys')); var path = require('path'); var fs = require('fs'); var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib'); -require.paths.unshift(lib); -require('command').run(); +require(lib + '/helpers').helpers.extend(global, require('sys')); +require(lib + '/command').run(); diff --git a/documentation/coffee/arguments.coffee b/documentation/coffee/arguments.coffee deleted file mode 100644 index ac548c127b..0000000000 --- a/documentation/coffee/arguments.coffee +++ /dev/null @@ -1,4 +0,0 @@ -backwards: -> - alert arguments.reverse() - -backwards "stairway", "to", "heaven" \ No newline at end of file diff --git a/documentation/coffee/binding.coffee b/documentation/coffee/binding.coffee new file mode 100644 index 0000000000..651274a0e0 --- /dev/null +++ b/documentation/coffee/binding.coffee @@ -0,0 +1,5 @@ +url: "documentation/coffee/binding.coffee" + +get_source: jQuery.get <- jQuery, url + +get_source (response) -> alert response diff --git a/documentation/coffee/cake_tasks.coffee b/documentation/coffee/cake_tasks.coffee index f5f8b535ae..40b4640a61 100644 --- a/documentation/coffee/cake_tasks.coffee +++ b/documentation/coffee/cake_tasks.coffee @@ -1,5 +1,3 @@ -process.mixin require 'assert' - task 'test', 'run each of the unit tests', -> for test in test_files fs.readFile test, (err, code) -> eval coffee.compile code diff --git a/documentation/coffee/conditionals.coffee b/documentation/coffee/conditionals.coffee index 50c18c43e1..0e59bdd9b1 100644 --- a/documentation/coffee/conditionals.coffee +++ b/documentation/coffee/conditionals.coffee @@ -6,4 +6,4 @@ if happy and knows_it date: if friday then sue else jill -expensive ||= do_the_math() \ No newline at end of file +expensive: or do_the_math() \ No newline at end of file diff --git a/documentation/coffee/interpolation_expression.coffee b/documentation/coffee/interpolation_expression.coffee index ed210d3512..19b0da87f1 100644 --- a/documentation/coffee/interpolation_expression.coffee +++ b/documentation/coffee/interpolation_expression.coffee @@ -1,4 +1,6 @@ sentence: "${ 22 / 7 } is a decent approximation of π" +sep: "[.\\/\\- ]" +dates: /\d+$sep\d+$sep\d+/g diff --git a/documentation/coffee/patterns_and_splats.coffee b/documentation/coffee/patterns_and_splats.coffee new file mode 100644 index 0000000000..b18cf23b71 --- /dev/null +++ b/documentation/coffee/patterns_and_splats.coffee @@ -0,0 +1,7 @@ +tag: "" + +[open, contents..., close]: tag.split("") + + + + diff --git a/documentation/css/docs.css b/documentation/css/docs.css index d5e3d91be6..1c74cfcec2 100644 --- a/documentation/css/docs.css +++ b/documentation/css/docs.css @@ -105,6 +105,7 @@ div.code { position: fixed; z-index: 100; height: 50px; + min-width: 490px; left: 40px; right: 40px; top: 25px; background: #ddd; padding-left: 235px; diff --git a/documentation/docs/cake.html b/documentation/docs/cake.html index a48a30f698..8236d020d8 100644 --- a/documentation/docs/cake.html +++ b/documentation/docs/cake.html @@ -1,4 +1,4 @@ - cake.coffee

cake.coffee

#

cake is a simplified version of Make + cake.coffee

cake.coffee

#

cake is a simplified version of Make (Rake, 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.

@@ -6,11 +6,12 @@

Running cake with no arguments will print out a list of all the tasks in the current directory's Cakefile.

#

External dependencies.

fs:           require 'fs'
 path:         require 'path'
-optparse:     require 'optparse'
-CoffeeScript: require 'coffee-script'
#

Keep track of the list of defined tasks, the accepted options, and so on.

tasks: {}
+helpers:      require('./helpers').helpers
+optparse:     require './optparse'
+CoffeeScript: require './coffee-script'
#

Keep track of the list of defined tasks, the accepted options, and so on.

tasks: {}
 options: {}
 switches: []
-oparse: null
#

Mixin the top-level Cake functions for Cakefiles to use directly.

process.mixin {
#

Define a Cake task with a short name, a sentence description, +oparse: null

#

Mixin the top-level Cake functions for Cakefiles to use directly.

helpers.extend global, {
#

Define a Cake task with a short name, a sentence description, and the function to run as the action itself.

  task: (name, description, action) ->
     tasks[name]: {name: name, description: description, action: action}
#

Define an option that the Cakefile accepts. The parsed options hash, containing all of the command-line options passed, will be made available diff --git a/documentation/docs/coffee-script.html b/documentation/docs/coffee-script.html index d547997898..7e9d0ecd4f 100644 --- a/documentation/docs/coffee-script.html +++ b/documentation/docs/coffee-script.html @@ -1,37 +1,47 @@ - coffee-script.coffee

coffee-script.coffee

#

CoffeeScript can be used both on the server, as a command-line compiler based + coffee-script.coffee

coffee-script.coffee

#

CoffeeScript can be used both on the server, as a command-line compiler based on Node.js/V8, or to run CoffeeScripts directly in the browser. This module contains the main entry functions for tokenzing, parsing, and compiling source CoffeeScript into JavaScript.

If included on a webpage, it will automatically sniff out, compile, and execute all scripts present in text/coffeescript tags.

#

Set up dependencies correctly for both the server and the browser.

if process?
-  process.mixin require 'nodes'
   path:         require 'path'
-  lexer:   new (require('lexer').Lexer)()
-  parser:       require('parser').parser
+  Lexer:        require('./lexer').Lexer
+  parser:       require('./parser').parser
+  helpers:      require('./helpers').helpers
+  helpers.extend global, require './nodes'
+  if require.registerExtension
+    require.registerExtension '.coffee', (content) -> compile content
 else
-  lexer: new Lexer()
-  parser: exports.parser
-  this.exports: this.CoffeeScript: {}
#

The current CoffeeScript version number.

exports.VERSION: '0.5.5'
#

Compile a string of CoffeeScript code to JavaScript, using the Coffee/Jison -compiler.

exports.compile: (code, options) ->
+  this.exports: this.CoffeeScript: {}
+  Lexer:        this.Lexer
+  parser:       this.parser
+  helpers:      this.helpers
#

The current CoffeeScript version number.

exports.VERSION: '0.5.6'
#

Instantiate a Lexer for our use here.

lexer: new Lexer()
#

Compile a string of CoffeeScript code to JavaScript, using the Coffee/Jison +compiler.

exports.compile: compile: (code, options) ->
+  options: or {}
   try
     (parser.parse lexer.tokenize code).compile options
   catch err
     err.message: "In ${options.source}, ${err.message}" if options.source
-    throw err
#

Tokenize a string of CoffeeScript code, and return the array of tokens.

exports.tokens: (code) ->
-  lexer.tokenize code
#

Tokenize and parse a string of CoffeeScript code, and return the AST. You can + throw err

#

Tokenize a string of CoffeeScript code, and return the array of tokens.

exports.tokens: (code) ->
+  lexer.tokenize code
#

Tokenize and parse a string of CoffeeScript code, and return the AST. You can then compile it by calling .compile() on the root, or traverse it by using .traverse() with a callback.

exports.nodes: (code) ->
-  parser.parse lexer.tokenize code
#

Compile and execute a string of CoffeeScript (on the server), correctly -setting __filename, __dirname, and relative require().

exports.run: (code, options) ->
+  parser.parse lexer.tokenize code
#

Compile and execute a string of CoffeeScript (on the server), correctly +setting __filename, __dirname, and relative require().

exports.run: ((code, options) ->
   module.filename: __filename: options.source
   __dirname: path.dirname __filename
-  eval exports.compile code, options
#

The real Lexer produces a generic stream of tokens. This object provides a + eval exports.compile code, options +)

#

Extend CoffeeScript with a custom language extension. It should hook in to +the Lexer (as a peer of any of the lexer's tokenizing methods), and +push a token on to the stack that contains a Node as the value (as a +peer of the nodes in nodes.coffee).

exports.extend: (func) ->
+  Lexer.extensions.push func
#

The real Lexer produces a generic stream of tokens. This object provides a thin wrapper around it, compatible with the Jison API. We can then pass it directly as a "Jison lexer".

parser.lexer: {
   lex: ->
     token: @tokens[@pos] or [""]
-    @pos += 1
+    @pos: + 1
     this.yylineno: token[2]
     this.yytext:   token[1]
     token[0]
@@ -40,7 +50,7 @@
     @pos: 0
   upcomingInput: -> ""
   showPosition: -> @pos
-}
#

Activate CoffeeScript in the browser by having it compile and evaluate +}

#

Activate CoffeeScript in the browser by having it compile and evaluate all script tags with a content-type of text/coffeescript. This happens on page load. Unfortunately, the text contents of remote scripts cannot be accessed from the browser, so only inline script tags will work.

if document? and document.getElementsByTagName
diff --git a/documentation/docs/command.html b/documentation/docs/command.html
index 0295ef63fc..5e4ea7c79c 100644
--- a/documentation/docs/command.html
+++ b/documentation/docs/command.html
@@ -1,11 +1,11 @@
-      command.coffee           

command.coffee

#

The coffee utility. Handles command-line compilation of CoffeeScript + command.coffee

command.coffee

#

The coffee utility. Handles command-line compilation of CoffeeScript into various forms: saved into .js files or printed to stdout, piped to JSLint or recompiled every time the source is saved, printed as a token stream or as the syntax tree, or launch an interactive REPL.

#

External dependencies.

fs:           require 'fs'
 path:         require 'path'
-optparse:     require 'optparse'
-CoffeeScript: require 'coffee-script'
#

The help banner that is printed when coffee is called without arguments.

BANNER: '''
+optparse:     require './optparse'
+CoffeeScript: require './coffee-script'
#

The help banner that is printed when coffee is called without arguments.

BANNER: '''
   coffee compiles CoffeeScript source files into JavaScript.
 
   Usage:
@@ -32,7 +32,7 @@
   parse_options()
   return usage()                              if options.help
   return version()                            if options.version
-  return require 'repl'                       if options.interactive
+  return require './repl'                     if options.interactive
   return compile_stdio()                      if options.stdio
   return compile_script 'console', sources[0] if options.eval
   return usage()                              unless sources.length
@@ -70,7 +70,7 @@
   code: ''
   process.stdio.open()
   process.stdio.addListener 'data', (string) ->
-    code += string if string
+    code: + string if string
   process.stdio.addListener 'close', ->
     compile_script 'stdio', code
#

Watch a list of source CoffeeScript files using fs.watchFile, recompiling them every time the files are updated. May be used in combination with other diff --git a/documentation/docs/grammar.html b/documentation/docs/grammar.html index b52665a162..f7538f49fd 100644 --- a/documentation/docs/grammar.html +++ b/documentation/docs/grammar.html @@ -1,4 +1,4 @@ - grammar.coffee

grammar.coffee

#

The CoffeeScript parser is generated by Jison + grammar.coffee

grammar.coffee

#

The CoffeeScript parser is generated by Jison from this grammar file. Jison is a bottom-up parser generator, similar in style to Bison, implemented in JavaScript. It can recognize LALR(1), LR(0), SLR(1), and LR(1) @@ -48,6 +48,7 @@ of many other rules, making them somewhat circular.

  Expression: [
     o "Value"
     o "Call"
+    o "Curry"
     o "Code"
     o "Operation"
     o "Assign"
@@ -63,11 +64,13 @@
     o "Splat"
     o "Existence"
     o "Comment"
+    o "Extension"
   ]
#

A an indented block of expressions. Note that the Rewriter will convert some postfix forms into blocks for us, by adjusting the token stream.

  Block: [
     o "INDENT Expressions OUTDENT",             -> $2
     o "INDENT OUTDENT",                         -> new Expressions()
+    o "TERMINATOR Comment",                     -> Expressions.wrap [$2]
   ]
#

A literal identifier, a variable name or property.

  Identifier: [
     o "IDENTIFIER",                             -> new LiteralNode yytext
   ]
#

Alphanumerics are separated from the other Literal matchers because @@ -137,6 +140,7 @@ or by array index or slice.

  Accessor: [
     o "PROPERTY_ACCESS Identifier",             -> new AccessorNode $2
     o "PROTOTYPE_ACCESS Identifier",            -> new AccessorNode $2, 'prototype'
+    o "::",                                     -> new AccessorNode(new LiteralNode('prototype'))
     o "SOAK_ACCESS Identifier",                 -> new AccessorNode $2, 'soak'
     o "Index"
     o "Slice",                                  -> new SliceNode $1
@@ -166,6 +170,10 @@
     o "Invocation"
     o "NEW Invocation",                         -> $2.new_instance()
     o "Super"
+  ]
+
+  Curry: [
+    o "Value <- Arguments",                     -> new CurryNode $1, $3
   ]
#

Extending an object by setting its prototype chain to reference a parent object.

  Extends: [
     o "Value EXTENDS Value",                    -> new ExtendsNode $1, $3
@@ -217,58 +225,61 @@
 where only values are accepted, wrapping it in parentheses will always do
 the trick.

  Parenthetical: [
     o "( Expression )",                         -> new ParentheticalNode $2
-  ]
#

The condition portion of a while loop.

  WhileSource: [
+  ]
#

A language extension to CoffeeScript from the outside. We simply pass +it through unaltered.

  Extension: [
+    o "EXTENSION",                              -> yytext
+  ]
#

The condition portion of a while loop.

  WhileSource: [
     o "WHILE Expression",                       -> new WhileNode $2
     o "WHILE Expression WHEN Expression",       -> new WhileNode $2, {filter : $4}
-  ]
#

The while loop can either be normal, with a block of expressions to execute, + ]

#

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

  While: [
     o "WhileSource Block",                      -> $1.add_body $2
-    o "Expression WhileSource",                 -> $2.add_body $1
-  ]
#

Array, object, and range comprehensions, at the most generic level. + o "Expression WhileSource", -> $2.add_body Expressions.wrap [$1] + ]

#

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

  For: [
     o "Expression FOR ForVariables ForSource",  -> new ForNode $1, $4, $3[0], $3[1]
     o "FOR ForVariables ForSource Block",       -> new ForNode $4, $3, $2[0], $2[1]
-  ]
#

An array or range comprehension has variables for the current element and + ]

#

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

  ForVariables: [
     o "Identifier",                             -> [$1]
     o "Identifier , Identifier",                -> [$1, $3]
-  ]
#

The source of a comprehension is an array or object with an optional filter + ]

#

The source of a comprehension is an array or object with an optional filter clause. If it's an array comprehension, you can also choose to step throug in fixed-size increments.

  ForSource: [
     o "IN Expression",                          -> {source:   $2}
     o "OF Expression",                          -> {source:   $2, object: true}
     o "ForSource WHEN Expression",              -> $1.filter: $3; $1
     o "ForSource BY Expression",                -> $1.step:   $3; $1
-  ]
#

The CoffeeScript switch/when/else block replaces the JavaScript + ]

#

The CoffeeScript switch/when/else block replaces the JavaScript switch/case/default by compiling into an if-else chain.

  Switch: [
     o "SWITCH Expression INDENT Whens OUTDENT", -> $4.rewrite_condition $2
     o "SWITCH Expression INDENT Whens ELSE Block OUTDENT", -> $4.rewrite_condition($2).add_else $6, true
-  ]
#

The inner list of whens is left recursive. At code-generation time, the + ]

#

The inner list of whens is left recursive. At code-generation time, the IfNode will rewrite them into a proper chain.

  Whens: [
     o "When"
     o "Whens When",                             -> $1.push $2
-  ]
#

An individual When clause, with action.

  When: [
+  ]
#

An individual When clause, with action.

  When: [
     o "LEADING_WHEN SimpleArgs Block",          -> new IfNode $2, $3, null, {statement: true}
     o "LEADING_WHEN SimpleArgs Block TERMINATOR", -> new IfNode $2, $3, null, {statement: true}
     o "Comment TERMINATOR When",                -> $3.comment: $1; $3
-  ]
#

The most basic form of if is a condition and an action. The following + ]

#

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

  IfStart: [
     o "IF Expression Block",                    -> new IfNode $2, $3
     o "IfStart ElsIf",                          -> $1.add_else $2
-  ]
#

An IfStart can optionally be followed by an else block.

  IfBlock: [
+  ]
#

An IfStart can optionally be followed by an else block.

  IfBlock: [
     o "IfStart"
     o "IfStart ELSE Block",                     -> $1.add_else $3
-  ]
#

An else if continuation of the if expression.

  ElsIf: [
+  ]
#

An else if continuation of the if expression.

  ElsIf: [
     o "ELSE IF Expression Block",               -> (new IfNode($3, $4)).force_statement()
-  ]
#

The full complement of if expressions, including postfix one-liner + ]

#

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

  If: [
     o "IfBlock"
     o "Expression IF Expression",               -> new IfNode $3, Expressions.wrap([$1]), null, {statement: true}
     o "Expression UNLESS Expression",           -> new IfNode $3, Expressions.wrap([$1]), null, {statement: true, invert: true}
-  ]
#

Arithmetic and logical operators, working on one or more operands. + ]

#

Arithmetic and logical operators, working on one or more operands. Here they are grouped by order of precedence. The actual precedence rules are defined at the bottom of the page. It would be shorter if we could combine most of these rules into a single generic Operand OpSymbol Operand @@ -278,7 +289,6 @@ o "!! Expression", -> new OpNode '!!', $2 o("- Expression", (-> new OpNode('-', $2)), {prec: 'UMINUS'}) o("+ Expression", (-> new OpNode('+', $2)), {prec: 'UPLUS'}) - o "NOT Expression", -> new OpNode 'not', $2 o "~ Expression", -> new OpNode '~', $2 o "-- Expression", -> new OpNode '--', $2 o "++ Expression", -> new OpNode '++', $2 @@ -308,13 +318,9 @@ o "Expression == Expression", -> new OpNode '==', $1, $3 o "Expression != Expression", -> new OpNode '!=', $1, $3 - o "Expression IS Expression", -> new OpNode 'is', $1, $3 - o "Expression ISNT Expression", -> new OpNode 'isnt', $1, $3 o "Expression && Expression", -> new OpNode '&&', $1, $3 o "Expression || Expression", -> new OpNode '||', $1, $3 - o "Expression AND Expression", -> new OpNode 'and', $1, $3 - o "Expression OR Expression", -> new OpNode 'or', $1, $3 o "Expression ? Expression", -> new OpNode '?', $1, $3 o "Expression -= Expression", -> new OpNode '-=', $1, $3 @@ -330,7 +336,7 @@ o "Expression IN Expression", -> new OpNode 'in', $1, $3 ] -}

#

Precedence

#

Operators at the top of this list have higher precedence than the ones lower +}

#

Precedence

#

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

2 + (3 * 4)
@@ -341,15 +347,15 @@
 
(2 + 3) * 4
 
operators: [
   ["left",      '?']
-  ["nonassoc",  'UMINUS', 'UPLUS', 'NOT', '!', '!!', '~', '++', '--']
+  ["nonassoc",  'UMINUS', 'UPLUS', '!', '!!', '~', '++', '--']
   ["left",      '*', '/', '%']
   ["left",      '+', '-']
   ["left",      '<<', '>>', '>>>']
   ["left",      '&', '|', '^']
   ["left",      '<=', '<', '>', '>=']
   ["right",     'DELETE', 'INSTANCEOF', 'TYPEOF']
-  ["left",      '==', '!=', 'IS', 'ISNT']
-  ["left",      '&&', '||', 'AND', 'OR']
+  ["left",      '==', '!=']
+  ["left",      '&&', '||']
   ["right",     '-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=']
   ["left",      '.']
   ["right",     'INDENT']
@@ -358,8 +364,8 @@
   ["right",     'FOR', 'NEW', 'SUPER', 'CLASS']
   ["left",      'EXTENDS']
   ["right",     'ASSIGN', 'RETURN']
-  ["right",     '->', '=>', 'UNLESS', 'IF', 'ELSE', 'WHILE']
-]
#

Wrapping Up

#

Finally, now what we have our grammar and our operators, we can create + ["right", '->', '=>', '<-', 'UNLESS', 'IF', 'ELSE', 'WHILE'] +]

#

Wrapping Up

#

Finally, now what we have our grammar and our operators, we can create our Jison.Parser. We do this by processing all of our rules, recording all terminals (every symbol which does not appear as the name of a rule above) as "tokens".

tokens: []
@@ -368,7 +374,7 @@
     for token in alt[0].split ' '
       tokens.push token unless grammar[token]
     alt[1] = "return ${alt[1]}" if name is 'Root'
-    alt
#

Initialize the Parser with our list of terminal tokens, our grammar + alt

#

Initialize the Parser with our list of terminal tokens, our grammar rules, and the name of the root. Reverse the operators because Jison orders precedence from low to high, and we have it high to low (as in Yacc).

exports.parser: new Parser {
diff --git a/documentation/docs/helpers.html b/documentation/docs/helpers.html
new file mode 100644
index 0000000000..f02682faa7
--- /dev/null
+++ b/documentation/docs/helpers.html
@@ -0,0 +1,59 @@
+      helpers.coffee           

helpers.coffee

#

This file contains the common helper functions that we'd like to share among +the Lexer, Rewriter, and the Nodes. Merge objects, flatten +arrays, count characters, that sort of thing.

#

Set up exported variables for both Node.js and the browser.

this.exports: this unless process?
+helpers: exports.helpers: {}
#

Does a list include a value?

helpers.include: include: (list, value) ->
+  list.indexOf(value) >= 0
#

Peek at the beginning of a given string to see if it matches a sequence.

helpers.starts: starts: (string, literal, start) ->
+  string.substring(start, (start or 0) + literal.length) is literal
#

Trim out all falsy values from an array.

helpers.compact: compact: (array) -> item for item in array when item
#

Count the number of occurences of a character in a string.

helpers.count: count: (string, letter) ->
+  num: 0
+  pos: string.indexOf(letter)
+  while pos isnt -1
+    num: + 1
+    pos: string.indexOf(letter, pos + 1)
+  num
#

Merge objects, returning a fresh copy with attributes from both sides. +Used every time BaseNode#compile is called, to allow properties in the +options hash to propagate down the tree without polluting other branches.

helpers.merge: merge: (options, overrides) ->
+  fresh: {}
+  (fresh[key]: val) for key, val of options
+  (fresh[key]: val) for key, val of overrides if overrides
+  fresh
#

Extend a source object with the properties of another object (shallow copy). +We use this to simulate Node's deprecated process.mixin

helpers.extend: extend: (object, properties) ->
+  (object[key]: val) for key, val of properties
#

Return a completely flattened version of an array. Handy for getting a +list of children from the nodes.

helpers.flatten: flatten: (array) ->
+  memo: []
+  for item in array
+    if item instanceof Array then memo: memo.concat(item) else memo.push(item)
+  memo
#

Delete a key from an object, returning the value. Useful when a node is +looking for a particular method in an options hash.

helpers.del: del: (obj, key) ->
+  val: obj[key]
+  delete obj[key]
+  val
#

Matches a balanced group such as a single or double-quoted string. Pass in +a series of delimiters, all of which must be nested correctly within the +contents of the string. This method allows us to have strings within +interpolations within strings, ad infinitum.

helpers.balanced_string: balanced_string: (str, delimited, options) ->
+  options: or {}
+  slash: delimited[0][0] is '/'
+  levels: []
+  i: 0
+  while i < str.length
+    if levels.length and starts str, '\\', i
+      i: + 1
+    else
+      for pair in delimited
+        [open, close]: pair
+        if levels.length and starts(str, close, i) and levels[levels.length - 1] is pair
+          levels.pop()
+          i: + close.length - 1
+          i: + 1 unless levels.length
+          break
+        else if starts str, open, i
+          levels.push(pair)
+          i: + open.length - 1
+          break
+    break if not levels.length or slash and starts str, '\n', i
+    i: + 1
+  if levels.length
+    return false if slash
+    throw new Error "SyntaxError: Unterminated ${levels.pop()[0]} starting on line ${@line + 1}"
+  if not i then false else str.substring(0, i)
+
+
\ No newline at end of file diff --git a/documentation/docs/lexer.html b/documentation/docs/lexer.html index 4c183cabd5..ab619d5bb6 100644 --- a/documentation/docs/lexer.html +++ b/documentation/docs/lexer.html @@ -1,4 +1,4 @@ - lexer.coffee

lexer.coffee

#

The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt + lexer.coffee

lexer.coffee

#

The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt matches against the beginning of the source code. When a match is found, a token is produced, we consume the match, and start again. Tokens are in the form:

@@ -8,11 +8,17 @@

Which is a format that can be fed directly into Jison.

#

Set up the Lexer for both Node.js and the browser, depending on where we are.

if process?
   Rewriter: require('./rewriter').Rewriter
+  helpers:  require('./helpers').helpers
 else
   this.exports: this
-  Rewriter: this.Rewriter
#

The Lexer Class

#

The Lexer class reads a stream of CoffeeScript and divvys it up into tagged + Rewriter: this.Rewriter + helpers: this.helpers

#

Import the helpers we need.

include:          helpers.include
+count:            helpers.count
+starts:           helpers.starts
+compact:          helpers.compact
+balanced_string:  helpers.balanced_string
#

The Lexer Class

#

The Lexer class reads a stream of CoffeeScript and divvys it up into tagged tokens. Some potential ambiguity in the grammar has been avoided by -pushing some extra smarts into the Lexer.

exports.Lexer: class Lexer
#

tokenize is the Lexer's main method. Scan by attempting to match tokens +pushing some extra smarts into the Lexer.

exports.Lexer: class Lexer
#

tokenize is the Lexer's main method. Scan by attempting to match tokens one at a time, using a regular expression anchored at the start of the remaining code, or a custom recursive token-matching method (for interpolations). When the next token has been recorded, we move forward @@ -24,6 +30,7 @@

Before returning the token stream, run it through the Rewriter unless explicitly asked not to.

  tokenize: (code, options) ->
+    code     : code.replace(/(\r|\s+$)/g, '')
     o        : options or {}
     @code    : code         # The remainder of the source code.
     @i       : 0            # Current character position we're parsing.
@@ -36,9 +43,10 @@
       @extract_next_token()
     @close_indentation()
     return @tokens if o.rewrite is off
-    (new Rewriter()).rewrite @tokens
#

At every position, run through this list of attempted matches, + (new Rewriter()).rewrite @tokens

#

At every position, run through this list of attempted matches, short-circuiting if any of them succeed. Their order determines precedence: @literal_token is the fallback catch-all.

  extract_next_token: ->
+    return if @extension_token()
     return if @identifier_token()
     return if @number_token()
     return if @heredoc_token()
@@ -48,7 +56,11 @@
     return if @whitespace_token()
     return if @js_token()
     return if @string_token()
-    return    @literal_token()
#

Tokenizers

#

Matches identifying literals: variables, keywords, method names, etc. + return @literal_token()

#

Tokenizers

#

Language extensions get the highest priority, first chance to tag tokens +as something else.

  extension_token: ->
+    for extension in Lexer.extensions
+      return true if extension.call this
+    false
#

Matches identifying literals: variables, keywords, method names, etc. Check to ensure that JavaScript reserved words aren't being used as identifiers. Because CoffeeScript reserves a handful of keywords that are allowed in JavaScript, we're careful not to tag them as keywords when @@ -56,56 +68,72 @@ though is means === otherwise.

  identifier_token: ->
     return false unless id: @match IDENTIFIER, 1
     @name_access_type()
+    accessed: include ACCESSORS, @tag(0)
     tag: 'IDENTIFIER'
-    tag: id.toUpperCase() if include(KEYWORDS, id) and
-      not (include(ACCESSORS, @tag(0)) and not @prev().spaced)
-    @identifier_error id  if include RESERVED, id
-    tag: 'LEADING_WHEN'   if tag is 'WHEN' and include BEFORE_WHEN, @tag()
+    tag: id.toUpperCase()     if not accessed and include(KEYWORDS, id)
+    @identifier_error id      if include RESERVED, id
+    tag: 'LEADING_WHEN'       if tag is 'WHEN' and include LINE_BREAK, @tag()
+    @i: + id.length
+    if not accessed
+      tag: id: CONVERSIONS[id]         if include COFFEE_ALIASES, id
+      return @tag_half_assignment(tag) if @prev() and @prev()[0] is 'ASSIGN' and include HALF_ASSIGNMENTS, tag
     @token(tag, id)
-    @i += id.length
-    true
#

Matches numbers, including decimals, hex, and exponential notation.

  number_token: ->
+    true
#

Matches numbers, including decimals, hex, and exponential notation.

  number_token: ->
     return false unless number: @match NUMBER, 1
     @token 'NUMBER', number
-    @i += number.length
-    true
#

Matches strings, including multi-line strings. Ensures that quotation marks + @i: + number.length + true

#

Matches strings, including multi-line strings. Ensures that quotation marks are balanced within the string's contents, and within nested interpolations.

  string_token: ->
     return false unless starts(@chunk, '"') or starts(@chunk, "'")
-    string: @balanced_token ['"', '"'], ['${', '}']
-    string: @balanced_token ["'", "'"] unless string
-    return false unless string
-    @interpolate_string string.replace STRING_NEWLINES, " \\\n"
-    @line += count string, "\n"
-    @i += string.length
-    true
#

Matches heredocs, adjusting indentation to the correct level, as heredocs + return false unless string: + @balanced_token(['"', '"'], ['${', '}']) or + @balanced_token ["'", "'"] + @interpolate_string string.replace(STRING_NEWLINES, " \\\n") + @line: + count string, "\n" + @i: + string.length + true

#

Matches heredocs, adjusting indentation to the correct level, as heredocs preserve whitespace, but ignore indentation to the left.

  heredoc_token: ->
-    return false unless match = @chunk.match(HEREDOC)
-    doc: @sanitize_heredoc match[2] or match[4]
-    @token 'STRING', "\"$doc\""
-    @line += count match[1], "\n"
-    @i += match[1].length
-    true
#

Matches JavaScript interpolated directly into the source via backticks.

  js_token: ->
+    return false unless match: @chunk.match(HEREDOC)
+    quote: match[1].substr(0, 1)
+    doc: @sanitize_heredoc match[2] or match[4], quote
+    @interpolate_string "$quote$doc$quote"
+    @line: + count match[1], "\n"
+    @i: + match[1].length
+    true
#

Matches JavaScript interpolated directly into the source via backticks.

  js_token: ->
     return false unless starts @chunk, '`'
     return false unless script: @balanced_token ['`', '`']
     @token 'JS', script.replace(JS_CLEANER, '')
-    @i += script.length
-    true
#

Matches regular expression literals. Lexing regular expressions is difficult + @i: + script.length + true

#

Matches regular expression literals. Lexing regular expressions is difficult to distinguish from division, so we borrow some basic heuristics from -JavaScript and Ruby.

  regex_token: ->
-    return false unless regex: @match REGEX, 1
-    return false if include NOT_REGEX, @tag()
-    @token 'REGEX', regex
-    @i += regex.length
-    true
#

Matches a token in which which the passed delimiter pairs must be correctly +JavaScript and Ruby, borrow slash balancing from @balanced_token, and +borrow interpolation from @interpolate_string.

  regex_token: ->
+    return false unless @chunk.match REGEX_START
+    return false if     include NOT_REGEX, @tag()
+    return false unless regex: @balanced_token ['/', '/']
+    regex: + (flags: @chunk.substr(regex.length).match(REGEX_FLAGS))
+    if regex.match REGEX_INTERPOLATION
+      str: regex.substring(1).split('/')[0]
+      str: str.replace REGEX_ESCAPE, (escaped) -> '\\' + escaped
+      @tokens: @tokens.concat [['(', '('], ['NEW', 'new'], ['IDENTIFIER', 'RegExp'], ['CALL_START', '(']]
+      @interpolate_string "\"$str\"", yes
+      @tokens: @tokens.concat [[',', ','], ['STRING', "\"$flags\""], [')', ')'], [')', ')']]
+    else
+      @token 'REGEX', regex
+    @i: + regex.length
+    true
#

Matches a token in which which the passed delimiter pairs must be correctly balanced (ie. strings, JS literals).

  balanced_token: (delimited...) ->
-    @balanced_string @chunk, delimited...
#

Matches and conumes comments. We pass through comments into JavaScript, + balanced_string @chunk, delimited

#

Matches and conumes comments. We pass through comments into JavaScript, so they're treated as real tokens, like any other part of the language.

  comment_token: ->
     return false unless comment: @match COMMENT, 1
-    @line += (comment.match(MULTILINER) or []).length
-    lines: comment.replace(COMMENT_CLEANER, '').split(MULTILINER)
-    @token 'COMMENT', compact lines
-    @token 'TERMINATOR', "\n"
-    @i += comment.length
-    true
#

Matches newlines, indents, and outdents, and determines which is which. + @line: + (comment.match(MULTILINER) or []).length + lines: compact comment.replace(COMMENT_CLEANER, '').split(MULTILINER) + i: @tokens.length - 1 + if @unfinished() + i: - 1 while @tokens[i] and not include LINE_BREAK, @tokens[i][0] + @tokens.splice(i + 1, 0, ['COMMENT', lines, @line], ['TERMINATOR', '\n', @line]) + @i: + comment.length + true

#

Matches newlines, indents, and outdents, and determines which is which. If we can detect that the current line is continued onto the the next line, then the newline is suppressed:

@@ -117,13 +145,12 @@

Keeps track of the level of indentation, because a single outdent token can close multiple indents, so we need to know how far in we happen to be.

  line_token: ->
     return false unless indent: @match MULTI_DENT, 1
-    @line += indent.match(MULTILINER).length
-    @i    += indent.length
+    @line: + indent.match(MULTILINER).length
+    @i   : + indent.length
     prev: @prev(2)
     size: indent.match(LAST_DENTS).reverse()[0].match(LAST_DENT)[1].length
     next_character: @chunk.match(MULTI_DENT)[4]
-    no_newlines: next_character is '.' or (@value() and @value().match(NO_NEWLINE) and
-      prev and (prev[0] isnt '.') and not @value().match(CODE))
+    no_newlines: next_character is '.' or @unfinished()
     if size is @indent
       return @suppress_newlines() if no_newlines
       return @newline_token(indent)
@@ -135,53 +162,55 @@
     else
       @outdent_token @indent - size, no_newlines
     @indent: size
-    true
#

Record an outdent token or multiple tokens, if we happen to be moving back + true

#

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

  outdent_token: (move_out, no_newlines) ->
     while move_out > 0 and @indents.length
       last_indent: @indents.pop()
       @token 'OUTDENT', last_indent
-      move_out -= last_indent
+      move_out: - last_indent
     @token 'TERMINATOR', "\n" unless @tag() is 'TERMINATOR' or no_newlines
-    true
#

Matches and consumes non-meaningful whitespace. Tag the previous token + true

#

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

  whitespace_token: ->
     return false unless space: @match WHITESPACE, 1
     prev: @prev()
     prev.spaced: true if prev
-    @i += space.length
-    true
#

Generate a newline token. Consecutive newlines get merged together.

  newline_token: (newlines) ->
+    @i: + space.length
+    true
#

Generate a newline token. Consecutive newlines get merged together.

  newline_token: (newlines) ->
     @token 'TERMINATOR', "\n" unless @tag() is 'TERMINATOR'
-    true
#

Use a \ at a line-ending to suppress the newline. + true

#

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

  suppress_newlines: ->
     @tokens.pop() if @value() is "\\"
-    true
#

We treat all other single characters as a token. Eg.: ( ) , . ! + true

#

We treat all other single characters as a token. Eg.: ( ) , . ! Multi-character operators are also literal tokens, so that Jison can assign the proper order of operations. There are some symbols that we tag specially here. ; and newlines are both treated as a TERMINATOR, we distinguish parentheses that indicate a method call from regular parentheses, and so on.

  literal_token: ->
     match: @chunk.match(OPERATOR)
     value: match and match[1]
+    space: match and match[2]
     @tag_parameters() if value and value.match(CODE)
-    value ||= @chunk.substr(0, 1)
-    not_spaced: not @prev() or not @prev().spaced
+    value: or @chunk.substr(0, 1)
+    prev_spaced: @prev() and @prev().spaced
     tag: value
     if value.match(ASSIGNMENT)
       tag: 'ASSIGN'
       @assignment_error() if include JS_FORBIDDEN, @value
     else if value is ';'
       tag: 'TERMINATOR'
-    else if value is '[' and @tag() is '?' and not_spaced
+    else if value is '[' and @tag() is '?' and not prev_spaced
       tag: 'SOAKED_INDEX_START'
       @soaked_index: true
       @tokens.pop()
     else if value is ']' and @soaked_index
       tag: 'SOAKED_INDEX_END'
       @soaked_index: false
-    else if include(CALLABLE, @tag()) and not_spaced
+    else if include(CALLABLE, @tag()) and not prev_spaced
       tag: 'CALL_START'  if value is '('
       tag: 'INDEX_START' if value is '['
+    @i: + value.length
+    return @tag_half_assignment(tag) if space and prev_spaced and @prev()[0] is 'ASSIGN' and include HALF_ASSIGNMENTS, tag
     @token tag, value
-    @i += value.length
-    true
#

Token Manipulators

#

As we consume a new IDENTIFIER, look at the previous token to determine + true

#

Token Manipulators

#

As we consume a new IDENTIFIER, look at the previous token to determine if it's a special kind of accessor.

  name_access_type: ->
     @tag(1, 'PROTOTYPE_ACCESS') if @value() is '::'
     if @value() is '.' and not (@value(2) is '.')
@@ -189,55 +218,33 @@
         @tag(1, 'SOAK_ACCESS')
         @tokens.splice(-2, 1)
       else
-        @tag 1, 'PROPERTY_ACCESS'
#

Sanitize a heredoc by escaping internal double quotes and erasing all -external indentation on the left-hand side.

  sanitize_heredoc: (doc) ->
+        @tag 1, 'PROPERTY_ACCESS'
#

Sanitize a heredoc by escaping internal double quotes and erasing all +external indentation on the left-hand side.

  sanitize_heredoc: (doc, quote) ->
     indent: (doc.match(HEREDOC_INDENT) or ['']).sort()[0]
     doc.replace(new RegExp("^" +indent, 'gm'), '')
        .replace(MULTILINER, "\\n")
-       .replace(/"/g, '\\"')
#

A source of ambiguity in our grammar used to be parameter lists in function + .replace(new RegExp(quote, 'g'), '\\"')

#

Tag a half assignment.

  tag_half_assignment: (tag) ->
+    last: @tokens.pop()
+    @tokens.push ["$tag=", "$tag=", last[2]]
+    true
#

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

  tag_parameters: ->
     return if @tag() isnt ')'
     i: 0
     while true
-      i += 1
+      i: + 1
       tok: @prev(i)
       return if not tok
       switch tok[0]
         when 'IDENTIFIER' then tok[0]: 'PARAM'
         when ')'          then tok[0]: 'PARAM_END'
         when '('          then return tok[0]: 'PARAM_START'
-    true
#

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

  close_indentation: ->
-    @outdent_token(@indent)
#

The error for when you try to use a forbidden word in JavaScript as + true

#

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

  close_indentation: ->
+    @outdent_token(@indent)
#

The error for when you try to use a forbidden word in JavaScript as an identifier.

  identifier_error: (word) ->
-    throw new Error "SyntaxError: Reserved word \"$word\" on line ${@line + 1}"
#

The error for when you try to assign to a reserved word in JavaScript, + throw new Error "SyntaxError: Reserved word \"$word\" on line ${@line + 1}"

#

The error for when you try to assign to a reserved word in JavaScript, like "function" or "default".

  assignment_error: ->
-    throw new Error "SyntaxError: Reserved word \"${@value()}\" on line ${@line + 1} can't be assigned"
#

Matches a balanced group such as a single or double-quoted string. Pass in -a series of delimiters, all of which must be nested correctly within the -contents of the string. This method allows us to have strings within -interpolations within strings etc...

  balanced_string: (str, delimited...) ->
-    levels: []
-    i: 0
-    while i < str.length
-      for pair in delimited
-        [open, close]: pair
-        if levels.length and starts str, '\\', i
-          i += 1
-          break
-        else if levels.length and starts(str, close, i) and levels[levels.length - 1] is pair
-          levels.pop()
-          i += close.length - 1
-          i += 1 unless levels.length
-          break
-        else if starts str, open, i
-          levels.push(pair)
-          i += open.length - 1
-          break
-      break unless levels.length
-      i += 1
-    throw new Error "SyntaxError: Unterminated ${levels.pop()[0]} starting on line ${@line + 1}" if levels.length
-    return false if i is 0
-    return str.substring(0, i)
#

Expand variables and expressions inside double-quoted strings using + throw new Error "SyntaxError: Reserved word \"${@value()}\" on line ${@line + 1} can't be assigned"

#

Expand variables and expressions inside double-quoted strings using ECMA Harmony's interpolation syntax for substitution of bare variables as well as arbitrary expressions.

@@ -247,7 +254,7 @@

If it encounters an interpolation, this method will recursively create a new Lexer, tokenize the interpolated contents, and merge them into the -token stream.

  interpolate_string: (str) ->
+token stream.

  interpolate_string: (str, escape_quotes) ->
     if str.length < 3 or not starts str, '"'
       @token 'STRING', str
     else
@@ -257,15 +264,15 @@
       [i, pi]:  [1, 1]
       while i < str.length - 1
         if starts str, '\\', i
-          i += 1
+          i: + 1
         else if match: str.substring(i).match INTERPOLATION
           [group, interp]: match
           interp: "this.${ interp.substring(1) }" if starts interp, '@'
           tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i
           tokens.push ['IDENTIFIER', interp]
-          i += group.length - 1
+          i: + group.length - 1
           pi: i + 1
-        else if (expr: @balanced_string str.substring(i), ['${', '}'])
+        else if (expr: balanced_string str.substring(i), [['${', '}']])
           tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i
           inner: expr.substring(2, expr.length - 1)
           if inner.length
@@ -274,27 +281,36 @@
             tokens.push ['TOKENS', nested]
           else
             tokens.push ['STRING', "$quote$quote"]
-          i += expr.length - 1
+          i: + expr.length - 1
           pi: i + 1
-        i += 1
+        i: + 1
       tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i and pi < str.length - 1
-      for each, i in tokens
-        if each[0] is 'TOKENS'
-          @tokens: @tokens.concat each[1]
+      tokens.unshift ['STRING', '""'] unless tokens[0][0] is 'STRING'
+      for token, i in tokens
+        [tag, value]: token
+        if tag is 'TOKENS'
+          @tokens: @tokens.concat value
+        else if tag is 'STRING' and escape_quotes
+          escaped: value.substring(1, value.length - 1).replace(/"/g, '\\"')
+          @token tag, "\"$escaped\""
         else
-          @token each[0], each[1]
-        @token '+', '+' if i < tokens.length - 1
#

Helpers

#

Add a token to the results, taking note of the line number.

  token: (tag, value) ->
-    @tokens.push([tag, value, @line])
#

Peek at a tag in the current token stream.

  tag: (index, tag) ->
+          @token tag, value
+        @token '+', '+' if i < tokens.length - 1
+      tokens
#

Helpers

#

Add a token to the results, taking note of the line number.

  token: (tag, value) ->
+    @tokens.push([tag, value, @line])
#

Peek at a tag in the current token stream.

  tag: (index, tag) ->
     return unless tok: @prev(index)
     return tok[0]: tag if tag?
-    tok[0]
#

Peek at a value in the current token stream.

  value: (index, val) ->
+    tok[0]
#

Peek at a value in the current token stream.

  value: (index, val) ->
     return unless tok: @prev(index)
     return tok[1]: val if val?
-    tok[1]
#

Peek at a previous token, entire.

  prev: (index) ->
-    @tokens[@tokens.length - (index or 1)]
#

Attempt to match a string against the current chunk, returning the indexed + tok[1]

#

Peek at a previous token, entire.

  prev: (index) ->
+    @tokens[@tokens.length - (index or 1)]
#

Attempt to match a string against the current chunk, returning the indexed match if successful, and false otherwise.

  match: (regex, index) ->
     return false unless m: @chunk.match(regex)
-    if m then m[index] else false
#

Constants

#

Keywords that CoffeeScript shares in common with JavaScript.

JS_KEYWORDS: [
+    if m then m[index] else false
#

Are we in the midst of an unfinished expression?

  unfinished: ->
+    prev: @prev(2)
+    @value() and @value().match and @value().match(NO_NEWLINE) and
+      prev and (prev[0] isnt '.') and not @value().match(CODE)
#

There are no exensions to the core lexer by default.

Lexer.extensions: []
#

Constants

#

Keywords that CoffeeScript shares in common with JavaScript.

JS_KEYWORDS: [
   "if", "else",
   "true", "false",
   "new", "return",
@@ -303,57 +319,57 @@
   "for", "in", "while",
   "delete", "instanceof", "typeof",
   "switch", "super", "extends", "class"
-]
#

CoffeeScript-only keywords, which we're more relaxed about allowing. They can't -be used standalone, but you can reference them as an attached property.

COFFEE_KEYWORDS: [
+]
#

CoffeeScript-only keywords, which we're more relaxed about allowing. They can't +be used standalone, but you can reference them as an attached property.

COFFEE_ALIASES:  ["and", "or", "is", "isnt", "not"]
+COFFEE_KEYWORDS: COFFEE_ALIASES.concat [
   "then", "unless",
   "yes", "no", "on", "off",
-  "and", "or", "is", "isnt", "not",
   "of", "by", "where", "when"
-]
#

The combined list of keywords is the superset that gets passed verbatim to -the parser.

KEYWORDS: JS_KEYWORDS.concat COFFEE_KEYWORDS
#

The list of keywords that are reserved by JavaScript, but not used, or are +]

#

The combined list of keywords is the superset that gets passed verbatim to +the parser.

KEYWORDS: JS_KEYWORDS.concat COFFEE_KEYWORDS
#

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, to avoid having a JavaScript error at runtime.

RESERVED: [
   "case", "default", "do", "function", "var", "void", "with"
   "const", "let", "debugger", "enum", "export", "import", "native",
   "__extends", "__hasProp"
-]
#

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

JS_FORBIDDEN: JS_KEYWORDS.concat RESERVED
#

Token matching regexes.

IDENTIFIER    : /^([a-zA-Z$_](\w|\$)*)/
+]
#

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

JS_FORBIDDEN: JS_KEYWORDS.concat RESERVED
#

Token matching regexes.

IDENTIFIER    : /^([a-zA-Z\$_](\w|\$)*)/
 NUMBER        : /^(\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?)))\b/i
 HEREDOC       : /^("{6}|'{6}|"{3}\n?([\s\S]*?)\n?([ \t]*)"{3}|'{3}\n?([\s\S]*?)\n?([ \t]*)'{3})/
 INTERPOLATION : /^\$([a-zA-Z_@]\w*(\.\w+)*)/
-OPERATOR      : /^([+\*&|\/\-%=<>:!?]+)/
+OPERATOR      : /^([+\*&|\/\-%=<>:!?]+)([ \t]*)/
 WHITESPACE    : /^([ \t]+)/
 COMMENT       : /^(((\n?[ \t]*)?#[^\n]*)+)/
 CODE          : /^((-|=)>)/
-REGEX         : /^(\/(\S.*?)?([^\\]|\\\\)\/[imgy]{0,4})/
 MULTI_DENT    : /^((\n([ \t]*))+)(\.)?/
 LAST_DENTS    : /\n([ \t]*)/g
 LAST_DENT     : /\n([ \t]*)/
-ASSIGNMENT    : /^(:|=)$/
#

Token cleaning regexes.

JS_CLEANER      : /(^`|`$)/g
+ASSIGNMENT    : /^(:|=)$/
#

Regex-matching-regexes.

REGEX_START        : /^\/[^\/ ]/
+REGEX_INTERPOLATION: /([^\\]\$[a-zA-Z_@]|[^\\]\$\{.*[^\\]\})/
+REGEX_FLAGS        : /^[imgy]{0,4}/
+REGEX_ESCAPE       : /\\[^\$]/g
#

Token cleaning regexes.

JS_CLEANER      : /(^`|`$)/g
 MULTILINER      : /\n/g
 STRING_NEWLINES : /\n[ \t]*/g
 COMMENT_CLEANER : /(^[ \t]*#|\n[ \t]*$)/mg
 NO_NEWLINE      : /^([+\*&|\/\-%=<>:!.\\][<>=&|]*|and|or|is|isnt|not|delete|typeof|instanceof)$/
-HEREDOC_INDENT  : /^[ \t]+/mg
#

Tokens which a regular expression will never immediately follow, but which +HEREDOC_INDENT : /^[ \t]+/mg

#

Tokens which a regular expression will never immediately follow, but which a division operator might.

See: http://www.mozilla.org/js/language/js20-2002-04/rationale/syntax.html#regular-expressions

Our list is shorter, due to sans-parentheses method calls.

NOT_REGEX: [
   'NUMBER', 'REGEX', '++', '--', 'FALSE', 'NULL', 'TRUE'
-]
#

Tokens which could legitimately be invoked or indexed. A opening +]

#

Tokens which could legitimately be invoked or indexed. A opening parentheses or bracket following these tokens will be recorded as the start -of a function invocation or indexing operation.

CALLABLE: ['IDENTIFIER', 'SUPER', ')', ']', '}', 'STRING', '@']
#

Tokens that indicate an access -- keywords immediately following will be -treated as identifiers.

ACCESSORS: ['PROPERTY_ACCESS', 'PROTOTYPE_ACCESS', 'SOAK_ACCESS', '@']
#

Tokens that, when immediately preceding a WHEN, indicate that the WHEN +of a function invocation or indexing operation.

CALLABLE: ['IDENTIFIER', 'SUPER', ')', ']', '}', 'STRING', '@']
#

Tokens that indicate an access -- keywords immediately following will be +treated as identifiers.

ACCESSORS: ['PROPERTY_ACCESS', 'PROTOTYPE_ACCESS', 'SOAK_ACCESS', '@']
#

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

BEFORE_WHEN: ['INDENT', 'OUTDENT', 'TERMINATOR']
#

Utility Functions

#

Does a list include a value?

include: (list, value) ->
-  list.indexOf(value) >= 0
#

Peek at the beginning of a given string to see if it matches a sequence.

starts: (string, literal, start) ->
-  string.substring(start, (start or 0) + literal.length) is literal
#

Trim out all falsy values from an array.

compact: (array) -> item for item in array when item
#

Count the number of occurences of a character in a string.

count: (string, letter) ->
-  num: 0
-  pos: string.indexOf(letter)
-  while pos isnt -1
-    num += 1
-    pos: string.indexOf(letter, pos + 1)
-  num
+avoid an ambiguity in the grammar.

LINE_BREAK: ['INDENT', 'OUTDENT', 'TERMINATOR']
#

Half-assignments...

HALF_ASSIGNMENTS: ['-', '+', '/', '*', '%', '||', '&&', '?']
#

Conversions from CoffeeScript operators into JavaScript ones.

CONVERSIONS: {
+  'and':  '&&'
+  'or':   '||'
+  'is':   '=='
+  'isnt': '!='
+  'not':  '!'
+}
 
 
\ No newline at end of file diff --git a/documentation/docs/nodes.html b/documentation/docs/nodes.html index 53715c0544..6a13dcd569 100644 --- a/documentation/docs/nodes.html +++ b/documentation/docs/nodes.html @@ -1,16 +1,22 @@ - nodes.coffee

nodes.coffee

#

nodes.coffee contains all of the node classes for the syntax tree. Most + nodes.coffee

nodes.coffee

#

nodes.coffee contains all of the node classes for the syntax tree. Most nodes are created as the result of actions in the grammar, but some are created by other nodes as a method of code generation. To convert the syntax tree into a string of JavaScript code, call compile() on the root.

#

Set up for both Node.js and the browser, by including the Scope class.

if process?
-  process.mixin require 'scope'
+  Scope:   require('./scope').Scope
+  helpers: require('./helpers').helpers
 else
-  this.exports: this
#

Helper function that marks a node as a JavaScript statement, or as a + this.exports: this + helpers: this.helpers + Scope: this.Scope

#

Import the helpers we need.

compact: helpers.compact
+flatten: helpers.flatten
+merge:   helpers.merge
+del:     helpers.del
#

Helper function that marks a node as a JavaScript statement, or as a pure_statement. Statements must be wrapped in a closure when used as an expression, and nodes tagged as pure_statement cannot be closure-wrapped without losing their meaning.

statement: (klass, only) ->
   klass::is_statement: -> true
-  (klass::is_pure_statement: -> true) if only
#

BaseNode

#

The BaseNode is the abstract base class for all nodes in the syntax tree. + (klass::is_pure_statement: -> true) if only

#

BaseNode

#

The BaseNode is the abstract base class for all nodes in the syntax tree. Each subclass implements the compile_node method, which performs the code generation for that node. To compile a node to JavaScript, call compile on it, which wraps compile_node in some generic extra smarts, @@ -18,7 +24,7 @@ An options hash is passed and cloned throughout, containing information about the environment from higher in the tree (such as if a returned value is being requested by the surrounding function), information about the current -scope, and indentation level.

exports.BaseNode: class BaseNode
#

Common logic for determining whether to wrap this node in a closure before +scope, and indentation level.

exports.BaseNode: class BaseNode
#

Common logic for determining whether to wrap this node in a closure before compiling it, or to compile directly. We need to wrap if this node is a statement, and it's not a pure_statement, and we're not at the top level of a block (which would be unnecessary), and we haven't @@ -30,97 +36,101 @@ top-level statement within the function body.

  compile: (o) ->
     @options: merge o or {}
     @tab:     o.indent
-    del @options, 'operation' unless @operation_sensitive()
+    del @options, 'operation' unless this instanceof ValueNode
     top:      if @top_sensitive() then @options.top else del @options, 'top'
     closure:  @is_statement() and not @is_pure_statement() and not top and
-              not @options.returns and not (this instanceof CommentNode) and
-              not @contains (node) -> node.is_pure_statement()
-    if closure then @compile_closure(@options) else @compile_node(@options)
#

Statements converted into expressions via closure-wrapping share a scope + not @options.as_statement and not (this instanceof CommentNode) and + not @contains_pure_statement() + if closure then @compile_closure(@options) else @compile_node(@options)

#

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

  compile_closure: (o) ->
     @tab: o.indent
     o.shared_scope: o.scope
-    ClosureNode.wrap(this).compile o
#

If the code generation wishes to use the result of a complex expression + ClosureNode.wrap(this).compile o

#

If the code generation wishes to use the result of a complex expression in multiple places, ensure that the expression is only ever evaluated once, by assigning it to a temporary variable.

  compile_reference: (o) ->
     reference: literal o.scope.free_variable()
     compiled:  new AssignNode reference, this
-    [compiled, reference]
#

Convenience method to grab the current indentation level, plus tabbing in.

  idt: (tabs) ->
+    [compiled, reference]
#

Convenience method to grab the current indentation level, plus tabbing in.

  idt: (tabs) ->
     idt: @tab or ''
     num: (tabs or 0) + 1
-    idt += TAB while num -= 1
-    idt
#

Does this node, or any of its children, contain a node of a certain kind? + idt: + TAB while num: - 1 + idt

#

Construct a node that returns the current node's result. +Note that this is overridden for smarter behavior for +many statement nodes (eg IfNode, ForNode)...

  make_return: ->
+    new ReturnNode this
#

Does this node, or any of its children, contain a node of a certain kind? Recursively traverses down the children of the nodes, yielding to a block and returning true when the block finds a match. contains does not cross scope boundaries.

  contains: (block) ->
     for node in @children
       return true if block(node)
       return true if node.contains and node.contains block
-    false
#

Perform an in-order traversal of the AST. Crosses scope boundaries.

  traverse: (block) ->
+    false
#

Convenience for the most common use of contains. Does the node contain +a pure statement?

  contains_pure_statement: ->
+    @is_pure_statement() or @contains (n) -> n.is_pure_statement()
#

Perform an in-order traversal of the AST. Crosses scope boundaries.

  traverse: (block) ->
     for node in @children
       block node
-      node.traverse block if node.traverse
#

toString representation of the node, for inspecting the parse tree. + node.traverse block if node.traverse

#

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

  toString: (idt) ->
-    idt ||= ''
-    '\n' + idt + @type + (child.toString(idt + TAB) for child in @children).join('')
#

Default implementations of the common node identification methods. Nodes + idt: or '' + '\n' + idt + @type + (child.toString(idt + TAB) for child in @children).join('')

#

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

  unwrap:               -> this
   children:             []
   is_statement:         -> false
   is_pure_statement:    -> false
-  top_sensitive:        -> false
-  operation_sensitive:  -> false
#

Expressions

#

The expressions body is the list of expressions that forms the body of an + top_sensitive: -> false

#

Expressions

#

The expressions body is the list of expressions that forms the body of an indented block of code -- the implementation of a function, a clause in an if, switch, or try, and so on...

exports.Expressions: class Expressions extends BaseNode
   type: 'Expressions'
 
   constructor: (nodes) ->
-    @children: @expressions: compact flatten nodes or []
#

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

  push: (node) ->
+    @children: @expressions: compact flatten nodes or []
#

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

  push: (node) ->
     @expressions.push(node)
-    this
#

Add an expression at the beginning of this expression list.

  unshift: (node) ->
+    this
#

Add an expression at the beginning of this expression list.

  unshift: (node) ->
     @expressions.unshift(node)
-    this
#

If this Expressions consists of just a single node, unwrap it by pulling + this

#

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

  unwrap: ->
-    if @expressions.length is 1 then @expressions[0] else this
#

Is this an empty block of code?

  empty: ->
-    @expressions.length is 0
#

Is the given node the last one in this block of expressions?

  is_last: (node) ->
-    l: @expressions.length
-    last_index: if @expressions[l - 1] instanceof CommentNode then 2 else 1
-    node is @expressions[l - last_index]
#

An Expressions is the only node that can serve as the root.

  compile: (o) ->
-    o ||= {}
+    if @expressions.length is 1 then @expressions[0] else this
#

Is this an empty block of code?

  empty: ->
+    @expressions.length is 0
#

Make a copy of this node.

  copy: ->
+    new Expressions @children.slice()
#

An Expressions node does not return its entire body, rather it +ensures that the final expression is returned.

  make_return: ->
+    idx:  @expressions.length - 1
+    last: @expressions[idx]
+    last: @expressions[idx: - 1] if last instanceof CommentNode
+    return this if not last or last instanceof ReturnNode
+    @expressions[idx]: last.make_return() unless last.contains_pure_statement()
+    this
#

An Expressions is the only node that can serve as the root.

  compile: (o) ->
+    o: or {}
     if o.scope then super(o) else @compile_root(o)
 
   compile_node: (o) ->
-    (@compile_expression(node, merge(o)) for node in @expressions).join("\n")
#

If we happen to be the top-level Expressions, wrap everything in + (@compile_expression(node, merge(o)) for node in @expressions).join("\n")

#

If we happen to be the top-level Expressions, wrap everything in a safety closure, unless requested not to.

  compile_root: (o) ->
     o.indent: @tab: if o.no_wrap then '' else TAB
     o.scope: new Scope(null, this, null)
     code: if o.globals then @compile_node(o) else @compile_with_declarations(o)
     code: code.replace(TRAILING_WHITESPACE, '')
-    if o.no_wrap then code else "(function(){\n$code\n})();\n"
#

Compile the expressions body for the contents of a function, with + if o.no_wrap then code else "(function(){\n$code\n})();\n"

#

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

  compile_with_declarations: (o) ->
     code: @compile_node(o)
-    args: @contains (node) -> node instanceof ValueNode and node.is_arguments()
-    code: "${@tab}arguments = Array.prototype.slice.call(arguments, 0);\n$code" if args
     code: "${@tab}var ${o.scope.compiled_assignments()};\n$code"  if o.scope.has_assignments(this)
     code: "${@tab}var ${o.scope.compiled_declarations()};\n$code" if o.scope.has_declarations(this)
-    code
#

Compiles a single expression within the expressions body. If we need to + code

#

Compiles a single expression within the expressions body. If we need to return the result, and it's an expression, simply return it. If it's a statement, ask the statement to do so.

  compile_expression: (node, o) ->
     @tab: o.indent
-    stmt:    node.is_statement()
-    returns: del(o, 'returns') and @is_last(node) and not node.is_pure_statement()
-    return (if stmt then '' else @idt()) + node.compile(merge(o, {top: true})) + (if stmt then '' else ';') unless returns
-    return node.compile(merge(o, {returns: true})) if node.is_statement()
-    "${@tab}return ${node.compile(o)};"
#

Wrap up the given nodes as an Expressions, unless it already happens + compiled_node: node.compile merge o, {top: true} + if node.is_statement() then compiled_node else "${@idt()}$compiled_node;"

#

Wrap up the given nodes as an Expressions, unless it already happens to be one.

Expressions.wrap: (nodes) ->
   return nodes[0] if nodes.length is 1 and nodes[0] instanceof Expressions
   new Expressions(nodes)
 
-statement Expressions
#

LiteralNode

#

Literals are static values that can be passed through directly into +statement Expressions

#

LiteralNode

#

Literals are static values that can be passed through directly into JavaScript without translation, such as: strings, numbers, true, false, null...

exports.LiteralNode: class LiteralNode extends BaseNode
   type: 'Literal'
 
   constructor: (value) ->
-    @value: value
#

Break and continue must be treated as pure statements -- they lose their + @value: value

#

Break and continue must be treated as pure statements -- they lose their meaning when wrapped in a closure.

  is_statement: ->
     @value is 'break' or @value is 'continue'
   is_pure_statement: LiteralNode::is_statement
@@ -131,7 +141,7 @@
     "$idt$@value$end"
 
   toString: (idt) ->
-    " \"$@value\""
#

ReturnNode

#

A return is a pure_statement -- wrapping it in a closure wouldn't + " \"$@value\""

#

ReturnNode

#

A return is a pure_statement -- wrapping it in a closure wouldn't make sense.

exports.ReturnNode: class ReturnNode extends BaseNode
   type: 'Return'
 
@@ -139,24 +149,21 @@
     @children: [@expression: expression]
 
   compile_node: (o) ->
-    return @expression.compile(merge(o, {returns: true})) if @expression.is_statement()
+    o.as_statement: true if @expression.is_statement()
     "${@tab}return ${@expression.compile(o)};"
 
-statement ReturnNode, true
#

ValueNode

#

A value, variable or literal or parenthesized, indexed or dotted into, +statement ReturnNode, true

#

ValueNode

#

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

exports.ValueNode: class ValueNode extends BaseNode
   type: 'Value'
 
-  SOAK: " == undefined ? undefined : "
#

A ValueNode has a base and a list of property accesses.

  constructor: (base, properties) ->
-    @children:   flatten [@base: base, @properties: (properties or [])]
#

Add a property access to the list.

  push: (prop) ->
+  SOAK: " == undefined ? undefined : "
#

A ValueNode has a base and a list of property accesses.

  constructor: (base, properties) ->
+    @children:   flatten [@base: base, @properties: (properties or [])]
#

Add a property access to the list.

  push: (prop) ->
     @properties.push(prop)
     @children.push(prop)
     this
 
-  operation_sensitive: ->
-    true
-
   has_properties: ->
-    !!@properties.length
#

Some boolean checks for the benefit of other nodes.

  is_array: ->
+    !!@properties.length
#

Some boolean checks for the benefit of other nodes.

  is_array: ->
     @base instanceof ArrayNode and not @has_properties()
 
   is_object: ->
@@ -165,11 +172,11 @@
   is_splice: ->
     @has_properties() and @properties[@properties.length - 1] instanceof SliceNode
 
-  is_arguments: ->
-    @base.value is 'arguments'
#

The value can be unwrapped as its inner node, if there are no attached + make_return: -> + if @has_properties() then super() else @base.make_return()

#

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

  unwrap: ->
-    if @properties.length then this else @base
#

Values are considered to be statements if their base is a statement.

  is_statement: ->
-    @base.is_statement and @base.is_statement() and not @has_properties()
#

We compile a value to JavaScript by compiling and joining each property. + if @properties.length then this else @base

#

Values are considered to be statements if their base is a statement.

  is_statement: ->
+    @base.is_statement and @base.is_statement() and not @has_properties()
#

We compile a value to JavaScript by compiling and joining each property. Things get much more insteresting if the chain of properties has soak operators ?. interspersed. Then we have to take care not to accidentally evaluate a anything twice when building the soak chain.

  compile_node: (o) ->
@@ -189,14 +196,14 @@
           temp: o.scope.free_variable()
           complete: "($temp = $complete)$@SOAK" + (baseline: temp + prop.compile(o))
         else
-          complete: complete + @SOAK + (baseline += prop.compile(o))
+          complete: complete + @SOAK + (baseline: + prop.compile(o))
       else
         part: prop.compile(o)
-        baseline += part
-        complete += part
+        baseline: + part
+        complete: + part
         @last: part
 
-    if op and soaked then "($complete)" else complete
#

CommentNode

#

CoffeeScript passes through comments as JavaScript comments at the + if op and soaked then "($complete)" else complete

#

CommentNode

#

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

exports.CommentNode: class CommentNode extends BaseNode
   type: 'Comment'
 
@@ -204,44 +211,67 @@
     @lines: lines
     this
 
+  make_return: ->
+    this
+
   compile_node: (o) ->
     "$@tab//" + @lines.join("\n$@tab//")
 
-statement CommentNode
#

CallNode

#

Node for a function invocation. Takes care of converting super() calls into +statement CommentNode

#

CallNode

#

Node for a function invocation. Takes care of converting super() calls into calls against the prototype's function of the same name.

exports.CallNode: class CallNode extends BaseNode
   type: 'Call'
 
   constructor: (variable, args) ->
-    @children:  flatten [@variable: variable, @args: (args or [])]
-    @prefix:    ''
#

Tag this invocation as creating a new instance.

  new_instance: ->
-    @prefix: 'new '
-    this
#

Add an argument to the call's arugment list.

  push: (arg) ->
-    @args.push(arg)
-    @children.push(arg)
-    this
#

Compile a vanilla function call.

  compile_node: (o) ->
-    return @compile_splat(o) if @args[@args.length - 1] instanceof SplatNode
+    @is_new:   false
+    @is_super: variable is 'super'
+    @variable: if @is_super then null else variable
+    @children: compact flatten [@variable, @args: (args or [])]
+    @compile_splat_arguments: SplatNode.compile_mixed_array <- @, @args
#

Tag this invocation as creating a new instance.

  new_instance: ->
+    @is_new: true
+    this
+
+  prefix: ->
+    if @is_new then 'new ' else ''
#

Compile a vanilla function call.

  compile_node: (o) ->
+    for arg in @args
+      return @compile_splat(o) if arg instanceof SplatNode
     args: (arg.compile(o) for arg in @args).join(', ')
-    return @compile_super(args, o) if @variable is 'super'
-    "$@prefix${@variable.compile(o)}($args)"
#

super() is converted into a call against the superclass's implementation + return @compile_super(args, o) if @is_super + "${@prefix()}${@variable.compile(o)}($args)"

#

super() is converted into a call against the superclass's implementation of the current function.

  compile_super: (args, o) ->
     methname: o.scope.method.name
     meth: if o.scope.method.proto
       "${o.scope.method.proto}.__superClass__.$methname"
     else
       "${methname}.__superClass__.constructor"
-    "${meth}.call(this${ if args.length then ', ' else '' }$args)"
#

If you call a function with a splat, it's converted into a JavaScript -.apply() call to allow the variable-length arguments.

  compile_splat: (o) ->
+    "${meth}.call(this${ if args.length then ', ' else '' }$args)"
#

If you call a function with a splat, it's converted into a JavaScript +.apply() call to allow an array of arguments to be passed.

  compile_splat: (o) ->
     meth: @variable.compile o
     obj:  @variable.source or 'this'
     if obj.match(/\(/)
       temp: o.scope.free_variable()
       obj:  temp
       meth: "($temp = ${ @variable.source })${ @variable.last }"
-    args: for arg, i in @args
-      code: arg.compile o
-      code: if arg instanceof SplatNode then code else "[$code]"
-      if i is 0 then code else ".concat($code)"
-    "$@prefix${meth}.apply($obj, ${ args.join('') })"
#

ExtendsNode

#

Node to extend an object's prototype with an ancestor object. + "${@prefix()}${meth}.apply($obj, ${ @compile_splat_arguments(o) })"

#

CurryNode

#

Binds a context object and a list of arguments to a function, +returning the bound function. After ECMAScript 5, Prototype.js, and +Underscore's bind functions.

exports.CurryNode: class CurryNode extends CallNode
+  type: 'Curry'
+
+  body: 'func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)))'
+
+  constructor: (meth, args) ->
+    @children:  flatten [@meth: meth, @context: args[0], @args: (args.slice(1) or [])]
+    @compile_splat_arguments: SplatNode.compile_mixed_array <- @, @args
+
+  arguments: (o) ->
+    for arg in @args
+      return @compile_splat_arguments(o) if arg instanceof SplatNode
+    (new ArrayNode(@args)).compile o
+
+  compile_node: (o) ->
+    body: Expressions.wrap([literal @body])
+    curried: new CodeNode([], body)
+    curry: new CodeNode([literal('func'), literal('obj'), literal('args')], Expressions.wrap([curried]))
+    (new ParentheticalNode(new CallNode(curry, [@meth, @context, literal(@arguments(o))]))).compile o
#

ExtendsNode

#

Node to extend an object's prototype with an ancestor object. After goog.inherits from the Closure Library.

exports.ExtendsNode: class ExtendsNode extends BaseNode
   type: 'Extends'
@@ -257,11 +287,11 @@
         '''
 
   constructor: (child, parent) ->
-    @children:  [@child: child, @parent: parent]
#

Hooks one constructor into another's prototype chain.

  compile_node: (o) ->
+    @children:  [@child: child, @parent: parent]
#

Hooks one constructor into another's prototype chain.

  compile_node: (o) ->
     o.scope.assign('__extends', @code, true)
     ref:  new ValueNode literal('__extends')
     call: new CallNode ref, [@child, @parent]
-    call.compile(o)
#

AccessorNode

#

A . accessor into a property of a value, or the :: shorthand for + call.compile(o)

#

AccessorNode

#

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

exports.AccessorNode: class AccessorNode extends BaseNode
   type: 'Accessor'
 
@@ -272,7 +302,8 @@
     this
 
   compile_node: (o) ->
-    '.' + (if @prototype then 'prototype.' else '') + @name.compile(o)
#

IndexNode

#

An indexed accessor into an array or object.

exports.IndexNode: class IndexNode extends BaseNode
+    proto_part: if @prototype then 'prototype.' else ''
+    ".$proto_part${@name.compile(o)}"
#

IndexNode

#

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

exports.IndexNode: class IndexNode extends BaseNode
   type: 'Index'
 
   constructor: (index, tag) ->
@@ -281,18 +312,18 @@
 
   compile_node: (o) ->
     idx: @index.compile o
-    "[$idx]"
#

RangeNode

#

A range literal. Ranges can be used to extract portions (slices) of arrays, + "[$idx]"

#

RangeNode

#

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

exports.RangeNode: class RangeNode extends BaseNode
   type: 'Range'
 
   constructor: (from, to, exclusive) ->
     @children:  [@from: from, @to: to]
-    @exclusive: !!exclusive
#

Compiles the range's source variables -- where it starts and where it ends.

  compile_variables: (o) ->
+    @exclusive: !!exclusive
#

Compiles the range's source variables -- where it starts and where it ends.

  compile_variables: (o) ->
     @tab: o.indent
     [@from_var, @to_var]: [o.scope.free_variable(), o.scope.free_variable()]
     [from, to]:           [@from.compile(o), @to.compile(o)]
-    "$@from_var = $from; $@to_var = $to;\n$@tab"
#

When compiled normally, the range returns the contents of the for loop + "$@from_var = $from; $@to_var = $to;\n$@tab"

#

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

  compile_node: (o) ->
     return    @compile_array(o) unless o.index
     idx:      del o, 'index'
@@ -303,13 +334,13 @@
     intro:    "($@from_var <= $@to_var ? $idx"
     compare:  "$intro <$equals $@to_var : $idx >$equals $@to_var)"
     incr:     "$intro += $step : $idx -= $step)"
-    "$vars; $compare; $incr"
#

When used as a value, expand the range into the equivalent array. In the + "$vars; $compare; $incr"

#

When used as a value, expand the range into the equivalent array. In the future, the code this generates should probably be cleaned up by handwriting it instead of wrapping nodes.

  compile_array: (o) ->
     name: o.scope.free_variable()
     body: Expressions.wrap([literal(name)])
     arr:  Expressions.wrap([new ForNode(body, {source: (new ValueNode(this))}, literal(name))])
-    (new ParentheticalNode(new CallNode(new CodeNode([], arr)))).compile(o)
#

SliceNode

#

An array slice literal. Unlike JavaScript's Array#slice, the second parameter + (new ParentheticalNode(new CallNode(new CodeNode([], arr.make_return())))).compile(o)

#

SliceNode

#

An array slice literal. Unlike JavaScript's Array#slice, the second parameter specifies the index of the end of the slice, just as the first parameter is the index of the beginning.

exports.SliceNode: class SliceNode extends BaseNode
   type: 'Slice'
@@ -322,11 +353,11 @@
     from:       @range.from.compile(o)
     to:         @range.to.compile(o)
     plus_part:  if @range.exclusive then '' else ' + 1'
-    ".slice($from, $to$plus_part)"
#

ObjectNode

#

An object literal, nothing fancy.

exports.ObjectNode: class ObjectNode extends BaseNode
+    ".slice($from, $to$plus_part)"
#

ObjectNode

#

An object literal, nothing fancy.

exports.ObjectNode: class ObjectNode extends BaseNode
   type: 'Object'
 
   constructor: (props) ->
-    @children: @objects: @properties: props or []
#

All the mucking about with commas is to make sure that CommentNodes and + @children: @objects: @properties: props or []

#

All the mucking about with commas is to make sure that CommentNodes and AssignNodes get interleaved correctly, with no trailing commas or commas affixed to comments.

@@ -342,35 +373,43 @@ indent + prop.compile(o) + join props: props.join('') inner: if props then '\n' + props + '\n' + @idt() else '' - "{$inner}"
#

ArrayNode

#

An array literal.

exports.ArrayNode: class ArrayNode extends BaseNode
+    "{$inner}"
#

ArrayNode

#

An array literal.

exports.ArrayNode: class ArrayNode extends BaseNode
   type: 'Array'
 
   constructor: (objects) ->
     @children: @objects: objects or []
+    @compile_splat_literal: SplatNode.compile_mixed_array <- @, @objects
 
   compile_node: (o) ->
     o.indent: @idt(1)
-    objects: for obj, i in @objects
+    objects: []
+    for obj, i in @objects
       code: obj.compile(o)
-      if obj instanceof CommentNode
-        "\n$code\n$o.indent"
+      if obj instanceof SplatNode
+        return @compile_splat_literal(@objects, o)
+      else if obj instanceof CommentNode
+        objects.push "\n$code\n$o.indent"
       else if i is @objects.length - 1
-        code
+        objects.push code
       else
-        "$code, "
+        objects.push "$code, "
     objects: objects.join('')
     ending: if objects.indexOf('\n') >= 0 then "\n$@tab]" else ']'
-    "[$objects$ending"
#

ClassNode

#

The CoffeeScript class definition.

exports.ClassNode: class ClassNode extends BaseNode
-  type: 'Class'
#

Initialize a ClassNode with its name, an optional superclass, and a + "[$objects$ending"

#

ClassNode

#

The CoffeeScript class definition.

exports.ClassNode: class ClassNode extends BaseNode
+  type: 'Class'
#

Initialize a ClassNode with its name, an optional superclass, and a list of prototype property assignments.

  constructor: (variable, parent, props) ->
-    @children: compact flatten [@variable: variable, @parent: parent, @properties: props or []]
#

Instead of generating the JavaScript string directly, we build up the + @children: compact flatten [@variable: variable, @parent: parent, @properties: props or []] + @returns: false + + make_return: -> + @returns: true + this

#

Instead of generating the JavaScript string directly, we build up the equivalent syntax tree and compile that, in pieces. You can see the constructor, property assignments, and inheritance getting built out below.

  compile_node: (o) ->
     extension:   @parent and new ExtendsNode(@variable, @parent)
     constructor: null
     props:       new Expressions()
     o.top:       true
-    ret:         del o, 'returns'
 
     for prop in @properties
       if prop.variable and prop.variable.base.value is 'constructor'
@@ -395,30 +434,12 @@
     construct:                       @idt() + constructor.compile(o) + ';\n'
     props:     if props.empty() then '' else props.compile(o) + '\n'
     extension: if extension     then @idt() + extension.compile(o) + ';\n' else ''
-    returns:   if ret           then '\n' + @idt() + 'return ' + @variable.compile(o) + ';' else ''
+    returns:   if @returns      then new ReturnNode(@variable).compile(o)  else ''
     "$construct$extension$props$returns"
 
-statement ClassNode
#

PushNode

#

A faux-node that is never created by the grammar, but is used during -code generation to generate a quick array.push(value) tree of nodes. -Helpful for recording the result arrays from comprehensions.

PushNode: exports.PushNode: {
-
-  wrap: (array, expressions) ->
-    expr: expressions.unwrap()
-    return expressions if expr.is_pure_statement() or expr.contains (n) -> n.is_pure_statement()
-    Expressions.wrap([new CallNode(
-      new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr]
-    )])
-
-}
#

ClosureNode

#

A faux-node used to wrap an expressions body in a closure.

ClosureNode: exports.ClosureNode: {
-
-  wrap: (expressions, statement) ->
-    func: new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions])))
-    call: new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')])
-    if statement then Expressions.wrap([call]) else call
-
-}
#

AssignNode

#

The AssignNode is used to assign a local variable to value, or to set the +statement ClassNode

#

AssignNode

#

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

exports.AssignNode: class AssignNode extends BaseNode
-  type: 'Assign'
#

Matchers for detecting prototype assignments.

  PROTO_ASSIGN: /^(\S+)\.prototype/
+  type: 'Assign'
#

Matchers for detecting prototype assignments.

  PROTO_ASSIGN: /^(\S+)\.prototype/
   LEADING_DOT:  /^\.(prototype\.)?/
 
   constructor: (variable, value, context) ->
@@ -431,8 +452,11 @@
   is_value: ->
     @variable instanceof ValueNode
 
+  make_return: ->
+    return new Expressions [this, new ReturnNode(@variable)]
+
   is_statement: ->
-    @is_value() and (@variable.is_array() or @variable.is_object())
#

Compile an assignment, delegating to compile_pattern_match or + @is_value() and (@variable.is_array() or @variable.is_object())

#

Compile an assignment, delegating to compile_pattern_match or compile_splice if appropriate. Keep track of the name of the base object we've been assigned to, for correct internal references. If the variable has not been seen yet within the current scope, declare it.

  compile_node: (o) ->
@@ -452,9 +476,7 @@
     o.scope.find name unless @is_value() and @variable.has_properties()
     val: "$name = $val"
     return "$@tab$val;" if stmt
-    val: "($val)" if not top or o.returns
-    val: "${@tab}return $val" if o.returns
-    val
#

Brief implementation of recursive pattern matching, when assigning array or + if top then val else "($val)"

#

Brief implementation of recursive pattern matching, when assigning array or object literals to a value. Peeks at their properties to assign inner names. See the ECMAScript Harmony Wiki for details.

  compile_pattern_match: (o) ->
@@ -463,19 +485,22 @@
     assigns: ["$@tab$val_var = ${ value.compile(o) };"]
     o.top: true
     o.as_statement: true
+    splat: false
     for obj, i in @variable.base.objects
       idx: i
       [obj, idx]: [obj.value, obj.variable.base] if @variable.is_object()
       access_class: if @variable.is_array() then IndexNode else AccessorNode
-      if obj instanceof SplatNode
-        val: literal(obj.compile_value(o, val_var, @variable.base.objects.indexOf(obj)))
+      if obj instanceof SplatNode and not splat
+        val: literal(obj.compile_value(o, val_var,
+          (oindex: @variable.base.objects.indexOf(obj)),
+          (olength: @variable.base.objects.length) - oindex - 1))
+        splat: true
       else
-        idx: literal(idx) unless typeof idx is 'object'
+        idx: literal(if splat then "${val_var}.length - ${olength - idx}" else idx) if typeof idx isnt 'object'
         val: new ValueNode(literal(val_var), [new access_class(idx)])
       assigns.push(new AssignNode(obj, val).compile(o))
     code: assigns.join("\n")
-    code += "\n${@tab}return ${ @variable.compile(o) };" if o.returns
-    code
#

Compile the assignment from an array splice literal, using JavaScript's + code

#

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

  compile_splice: (o) ->
     name:   @variable.compile(merge(o, {only_first: true}))
     l:      @variable.properties.length
@@ -484,7 +509,7 @@
     from:   range.from.compile(o)
     to:     range.to.compile(o) + ' - ' + from + plus
     val:    @value.compile(o)
-    "${name}.splice.apply($name, [$from, $to].concat($val))"
#

CodeNode

#

A function definition. This is the only node that creates a new Scope. + "${name}.splice.apply($name, [$from, $to].concat($val))"

#

CodeNode

#

A function definition. This is the only node that creates a new Scope. When for the purposes of walking the contents of a function body, the CodeNode has no children -- they're within the inner scope.

exports.CodeNode: class CodeNode extends BaseNode
   type: 'Code'
@@ -492,7 +517,7 @@
   constructor: (params, body, tag) ->
     @params:  params or []
     @body:    body or new Expressions()
-    @bound:   tag is 'boundfunc'
#

Compilation creates a new scope unless explicitly asked to share with the + @bound: tag is 'boundfunc'

#

Compilation creates a new scope unless explicitly asked to share with the outer scope. Handles splat parameters in the parameter list by peeking at the JavaScript arguments objects. If the function is bound with the => arrow, generates a wrapper that saves the current value of this through @@ -500,16 +525,26 @@ shared_scope: del o, 'shared_scope' top: del o, 'top' o.scope: shared_scope or new Scope(o.scope, @body, this) - o.returns: true o.top: true o.indent: @idt(if @bound then 2 else 1) del o, 'no_wrap' del o, 'globals' - if @params[@params.length - 1] instanceof SplatNode - splat: @params.pop() - splat.index: @params.length - @body.unshift(splat) - params: (param.compile(o) for param in @params) + i: 0 + splat: undefined + params: [] + for param in @params + if param instanceof SplatNode and not splat? + splat: param + splat.index: i + @body.unshift(splat) + splat.trailings: [] + else if splat? + splat.trailings.push(param) + else + params.push(param) + i: + 1 + params: (param.compile(o) for param in params) + @body.make_return() (o.scope.parameter(param)) for param in params code: if @body.expressions.length then "\n${ @body.compile_with_declarations(o) }\n" else '' name_part: if @name then ' ' + @name else '' @@ -520,16 +555,16 @@ "(function(__this) {\n${@idt(1)}var __func = $func;\n${@idt(1)}return $inner\n$@tab})(this)" top_sensitive: -> - true

#

When traversing (for printing or inspecting), return the real children of + true

#

When traversing (for printing or inspecting), return the real children of the function -- the parameters and body of expressions.

  real_children: ->
-    flatten [@params, @body.expressions]
#

Custom traverse implementation that uses the real_children.

  traverse: (block) ->
+    flatten [@params, @body.expressions]
#

Custom traverse implementation that uses the real_children.

  traverse: (block) ->
     block this
-    block(child) for child in @real_children()
+    child.traverse block for child in @real_children()
 
   toString: (idt) ->
-    idt ||= ''
+    idt: or ''
     children: (child.toString(idt + TAB) for child in @real_children()).join('')
-    "\n$idt$children"
#

SplatNode

#

A splat, either as a parameter to a function, an argument to a call, + "\n$idt$children"

#

SplatNode

#

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

exports.SplatNode: class SplatNode extends BaseNode
   type: 'Splat'
 
@@ -538,13 +573,36 @@
     @children: [@name: name]
 
   compile_node: (o) ->
-    if @index? then @compile_param(o) else @name.compile(o)
#

Compiling a parameter splat means recovering the parameters that succeed + if @index? then @compile_param(o) else @name.compile(o)

#

Compiling a parameter splat means recovering the parameters that succeed the splat in the parameter list, by slicing the arguments object.

  compile_param: (o) ->
     name: @name.compile(o)
     o.scope.find name
-    "$name = Array.prototype.slice.call(arguments, $@index)"
#

A compiling a splat as a destructuring assignment means slicing arguments -from the right-hand-side's corresponding array.

  compile_value: (o, name, index) ->
-    "Array.prototype.slice.call($name, $index)"
#

WhileNode

#

A while loop, the only sort of low-level loop exposed by CoffeeScript. From + i: 0 + for trailing in @trailings + o.scope.assign(trailing.compile(o), "arguments[arguments.length - $@trailings.length + $i]") + i: + 1 + "$name = Array.prototype.slice.call(arguments, $@index, arguments.length - ${@trailings.length})"

#

A compiling a splat as a destructuring assignment means slicing arguments +from the right-hand-side's corresponding array.

  compile_value: (o, name, index, trailings) ->
+    if trailings? then "Array.prototype.slice.call($name, $index, ${name}.length - $trailings)" \
+    else "Array.prototype.slice.call($name, $index)"
#

Utility function that converts arbitrary number of elements, mixed with +splats, to a proper array

SplatNode.compile_mixed_array: (list, o) ->
+  args: []
+  i: 0
+  for arg in list
+    code: arg.compile o
+    if not (arg instanceof SplatNode)
+      prev: args[i - 1]
+      if i is 1 and prev.substr(0, 1) is '[' and prev.substr(prev.length - 1, 1) is ']'
+        args[i - 1]: "${prev.substr(0, prev.length - 1)}, $code]"
+        continue
+      else if i > 1 and prev.substr(0, 9) is '.concat([' and prev.substr(prev.length - 2, 2) is '])'
+        args[i - 1]: "${prev.substr(0, prev.length - 2)}, $code])"
+        continue
+      else
+        code: "[$code]"
+    args.push(if i is 0 then code else ".concat($code)")
+    i: + 1
+  args.join('')
#

WhileNode

#

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

exports.WhileNode: class WhileNode extends BaseNode
   type: 'While'
@@ -557,12 +615,15 @@
     @children.push @body: body
     this
 
+  make_return: ->
+    @returns: true
+    this
+
   top_sensitive: ->
-    true
#

The main difference from a JavaScript while is that the CoffeeScript + true

#

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

  compile_node: (o) ->
-    returns:    del(o, 'returns')
-    top:        del(o, 'top') and not returns
+    top:        del(o, 'top') and not @returns
     o.indent:   @idt(1)
     o.top:      true
     cond:       @condition.compile(o)
@@ -571,27 +632,25 @@
       rvar:     o.scope.free_variable()
       set:      "$@tab$rvar = [];\n"
       @body:    PushNode.wrap(rvar, @body) if @body
-    post:       if returns then "\n${@tab}return $rvar;" else ''
     pre:        "$set${@tab}while ($cond)"
-    return      "$pre null;$post" if not @body
+    return "$pre null;$post" if not @body
     @body:      Expressions.wrap([new IfNode(@filter, @body)]) if @filter
-    "$pre {\n${ @body.compile(o) }\n$@tab}$post"
+    if @returns
+      post: new ReturnNode(literal(rvar)).compile(merge(o, {indent: @idt()}))
+    else
+      post: ''
+    "$pre {\n${ @body.compile(o) }\n$@tab}\n$post"
 
-statement WhileNode
#

OpNode

#

Simple Arithmetic and logical operations. Performs some conversion from +statement WhileNode

#

OpNode

#

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

exports.OpNode: class OpNode extends BaseNode
-  type: 'Op'
#

The map of conversions from CoffeeScript to JavaScript symbols.

  CONVERSIONS: {
-    '==':   '==='
-    '!=':   '!=='
-    'and':  '&&'
-    'or':   '||'
-    'is':   '==='
-    'isnt': '!=='
-    'not':  '!'
-  }
#

The list of operators for which we perform -Python-style comparison chaining.

  CHAINABLE:        ['<', '>', '>=', '<=', '===', '!==']
#

Our assignment operators that have no JavaScript equivalent.

  ASSIGNMENT:       ['||=', '&&=', '?=']
#

Operators must come before their operands with a space.

  PREFIX_OPERATORS: ['typeof', 'delete']
+  type: 'Op'
#

The map of conversions from CoffeeScript to JavaScript symbols.

  CONVERSIONS: {
+    '==': '==='
+    '!=': '!=='
+  }
#

The list of operators for which we perform +Python-style comparison chaining.

  CHAINABLE:        ['<', '>', '>=', '<=', '===', '!==']
#

Our assignment operators that have no JavaScript equivalent.

  ASSIGNMENT:       ['||=', '&&=', '?=']
#

Operators must come before their operands with a space.

  PREFIX_OPERATORS: ['typeof', 'delete']
 
   constructor: (operator, first, second, flip) ->
-    @type += ' ' + operator
+    @type: + ' ' + operator
     @children: compact [@first: first, @second: second]
     @operator: @CONVERSIONS[operator] or operator
     @flip: !!flip
@@ -608,7 +667,7 @@
     return @compile_assignment(o) if @ASSIGNMENT.indexOf(@operator) >= 0
     return @compile_unary(o)      if @is_unary()
     return @compile_existence(o)  if @operator is '?'
-    [@first.compile(o), @operator, @second.compile(o)].join ' '
#

Mimic Python's chained comparisons when multiple comparison operators are + [@first.compile(o), @operator, @second.compile(o)].join ' '

#

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

bin/coffee -e "puts 50 < 65 > 10"
@@ -617,46 +676,52 @@
     shared: @first.unwrap().second
     [@first.second, shared]: shared.compile_reference(o) if shared instanceof CallNode
     [first, second, shared]: [@first.compile(o), @second.compile(o), shared.compile(o)]
-    "($first) && ($shared $@operator $second)"
#

When compiling a conditional assignment, take care to ensure that the + "($first) && ($shared $@operator $second)"

#

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

  compile_assignment: (o) ->
     [first, second]: [@first.compile(o), @second.compile(o)]
     o.scope.find(first) if first.match(IDENTIFIER)
     return "$first = ${ ExistenceNode.compile_test(o, @first) } ? $first : $second" if @operator is '?='
-    "$first = $first ${ @operator.substr(0, 2) } $second"
#

If this is an existence operator, we delegate to ExistenceNode.compile_test + "$first = $first ${ @operator.substr(0, 2) } $second"

#

If this is an existence operator, we delegate to ExistenceNode.compile_test to give us the safe references for the variables.

  compile_existence: (o) ->
     [first, second]: [@first.compile(o), @second.compile(o)]
     test: ExistenceNode.compile_test(o, @first)
-    "$test ? $first : $second"
#

Compile a unary OpNode.

  compile_unary: (o) ->
+    "$test ? $first : $second"
#

Compile a unary OpNode.

  compile_unary: (o) ->
     space: if @PREFIX_OPERATORS.indexOf(@operator) >= 0 then ' ' else ''
     parts: [@operator, space, @first.compile(o)]
     parts: parts.reverse() if @flip
-    parts.join('')
#

TryNode

#

A classic try/catch/finally block.

exports.TryNode: class TryNode extends BaseNode
+    parts.join('')
#

TryNode

#

A classic try/catch/finally block.

exports.TryNode: class TryNode extends BaseNode
   type: 'Try'
 
   constructor: (attempt, error, recovery, ensure) ->
     @children: compact [@attempt: attempt, @recovery: recovery, @ensure: ensure]
     @error: error
-    this
#

Compilation is more or less as you would expect -- the finally clause + this + + make_return: -> + @attempt: @attempt.make_return() if @attempt + @recovery: @recovery.make_return() if @recovery + this

#

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

  compile_node: (o) ->
     o.indent:     @idt(1)
     o.top:        true
     attempt_part: @attempt.compile(o)
     error_part:   if @error then " (${ @error.compile(o) }) " else ' '
-    catch_part:   "${ (@recovery or '') and ' catch' }$error_part{\n${ @recovery.compile(o) }\n$@tab}"
-    finally_part: (@ensure or '') and ' finally {\n' + @ensure.compile(merge(o, {returns: null})) + "\n$@tab}"
+    catch_part:   if @recovery then " catch$error_part{\n${ @recovery.compile(o) }\n$@tab}" else ''
+    finally_part: (@ensure or '') and ' finally {\n' + @ensure.compile(merge(o)) + "\n$@tab}"
     "${@tab}try {\n$attempt_part\n$@tab}$catch_part$finally_part"
 
-statement TryNode
#

ThrowNode

#

Simple node to throw an exception.

exports.ThrowNode: class ThrowNode extends BaseNode
+statement TryNode
#

ThrowNode

#

Simple node to throw an exception.

exports.ThrowNode: class ThrowNode extends BaseNode
   type: 'Throw'
 
   constructor: (expression) ->
-    @children: [@expression: expression]
+    @children: [@expression: expression]
#

A ThrowNode is already a return, of sorts...

  make_return: ->
+    return this
 
   compile_node: (o) ->
     "${@tab}throw ${@expression.compile(o)};"
 
-statement ThrowNode
#

ExistenceNode

#

Checks a variable for existence -- not null and not undefined. This is +statement ThrowNode

#

ExistenceNode

#

Checks a variable for existence -- not null and not undefined. This is similar to .nil? in Ruby, and avoids having to consult a JavaScript truth table.

exports.ExistenceNode: class ExistenceNode extends BaseNode
   type: 'Existence'
@@ -665,14 +730,14 @@
     @children: [@expression: expression]
 
   compile_node: (o) ->
-    ExistenceNode.compile_test(o, @expression)
#

The meat of the ExistenceNode is in this static compile_test method + ExistenceNode.compile_test(o, @expression)

#

The meat of the ExistenceNode is in this static compile_test method because other nodes like to check the existence of their variables as well. Be careful not to double-evaluate anything.

ExistenceNode.compile_test: (o, variable) ->
   [first, second]: [variable, variable]
   if variable instanceof CallNode or (variable instanceof ValueNode and variable.has_properties())
     [first, second]: variable.compile_reference(o)
   [first, second]: [first.compile(o), second.compile(o)]
-  "(typeof $first !== \"undefined\" && $second !== null)"
#

ParentheticalNode

#

An extra set of parentheses, specified explicitly in the source. At one time + "(typeof $first !== \"undefined\" && $second !== null)"

#

ParentheticalNode

#

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

@@ -685,12 +750,15 @@ is_statement: -> @expression.is_statement() + make_return: -> + @expression.make_return() + compile_node: (o) -> code: @expression.compile(o) return code if @is_statement() l: code.length code: code.substr(o, l-1) if code.substr(l-1, 1) is ';' - "($code)"
#

ForNode

#

CoffeeScript's replacement for the for loop is our array and object + if @expression instanceof AssignNode then code else "($code)"

#

ForNode

#

CoffeeScript's replacement for the for loop is our array and object comprehensions, that compile into for loops here. They also act as an expression, able to return the result of each filtered iteration.

@@ -709,20 +777,29 @@ @object: !!source.object [@name, @index]: [@index, @name] if @object @children: compact [@body, @source, @filter] + @returns: false top_sensitive: -> - true
#

Welcome to the hairiest method in all of CoffeeScript. Handles the inner + true + + make_return: -> + @returns: true + this + + compile_return_value: (val, o) -> + return new ReturnNode(literal(val)).compile(o) if @returns + val or ''

#

Welcome to the hairiest method in all of CoffeeScript. Handles the inner loop, filtering, stepping, and result saving for array, object, and range comprehensions. Some of the generated code can be shared in common, and some cannot.

  compile_node: (o) ->
-    top_level:      del(o, 'top') and not o.returns
+    top_level:      del(o, 'top') and not @returns
     range:          @source instanceof ValueNode and @source.base instanceof RangeNode and not @source.properties.length
     source:         if range then @source.base else @source
     scope:          o.scope
     name:           @name and @name.compile o
     index:          @index and @index.compile o
-    name_found:     name and scope.find name
-    index_found:    index and scope.find index
+    scope.find name  if name
+    scope.find index if index
     body_dent:      @idt(1)
     rvar:           scope.free_variable() unless top_level
     svar:           scope.free_variable()
@@ -743,25 +820,21 @@
         step_part:  if @step then "$ivar += ${ @step.compile(o) }" else "$ivar++"
         for_part:   "$ivar = 0, $lvar = ${svar}.length; $ivar < $lvar; $step_part"
     set_result:     if rvar then @idt() + rvar + ' = []; ' else @idt()
-    return_result:  rvar or ''
-    body:           ClosureNode.wrap(body, true) if top_level and @contains (n) -> n instanceof CodeNode
+    return_result:  @compile_return_value(rvar, o)
+
+    body:           ClosureNode.wrap(body, true) if top_level and body.contains (n) -> n instanceof CodeNode
     body:           PushNode.wrap(rvar, body) unless top_level
-    if o.returns
-      return_result: 'return ' + return_result
-      del o, 'returns'
-      body:         new IfNode(@filter, body, null, {statement: true}) if @filter
-    else if @filter
+    if @filter
       body:         Expressions.wrap([new IfNode(@filter, body)])
     if @object
       o.scope.assign('__hasProp', 'Object.prototype.hasOwnProperty', true)
       for_part: "$ivar in $svar) { if (__hasProp.call($svar, $ivar)"
-    return_result:  "\n$@tab$return_result;" unless top_level
     body:           body.compile(merge(o, {indent: body_dent, top: true}))
     vars:           if range then name else "$name, $ivar"
     close:          if @object then '}}\n' else '}\n'
-    "$set_result${source_part}for ($for_part) {\n$var_part$body\n$@tab$close$@tab$return_result"
+    "$set_result${source_part}for ($for_part) {\n$var_part$body\n$@tab$close$return_result"
 
-statement ForNode
#

IfNode

#

If/else statements. Our switch/when will be compiled into this. Acts as an +statement ForNode

#

IfNode

#

If/else statements. Our switch/when will be compiled into this. Acts as an expression by pushing down requested returns to the last line of each clause.

Single-expression IfNodes are compiled into ternary operators if possible, @@ -772,10 +845,10 @@ @condition: condition @body: body and body.unwrap() @else_body: else_body and else_body.unwrap() - @children: compact [@condition, @body, @else_body] + @children: compact flatten [@condition, @body, @else_body] @tags: tags or {} @multiple: true if @condition instanceof Array - @condition: new OpNode('!', new ParentheticalNode(@condition)) if @tags.invert

#

Add a new else clause to this IfNode, or push it down to the bottom + @condition: new OpNode('!', new ParentheticalNode(@condition)) if @tags.invert

#

Add a new else clause to this IfNode, or push it down to the bottom of the chain recursively.

  push: (else_body) ->
     eb: else_body.unwrap()
     if @else_body then @else_body.push(eb) else @else_body: eb
@@ -783,10 +856,10 @@
 
   force_statement: ->
     @tags.statement: true
-    this
#

Tag a chain of IfNodes with their object(s) to switch on for equality + this

#

Tag a chain of IfNodes with their object(s) to switch on for equality tests. rewrite_switch will perform the actual change at compile time.

  rewrite_condition: (expression) ->
     @switcher: expression
-    this
#

Rewrite a chain of IfNodes with their switch condition for equality. + this

#

Rewrite a chain of IfNodes with their switch condition for equality. Ensure that the switch expression isn't evaluated more than once.

  rewrite_switch: (o) ->
     assigner: @switcher
     if not (@switcher.unwrap() instanceof LiteralNode)
@@ -795,31 +868,35 @@
       @switcher: variable
     @condition: if @multiple
       for cond, i in @condition
-        new OpNode('is', (if i is 0 then assigner else @switcher), cond)
+        new OpNode('==', (if i is 0 then assigner else @switcher), cond)
     else
-      new OpNode('is', assigner, @condition)
+      new OpNode('==', assigner, @condition)
     @else_body.rewrite_condition(@switcher) if @is_chain()
-    this
#

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

  add_else: (exprs, statement) ->
+    this
#

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

  add_else: (exprs, statement) ->
     if @is_chain()
       @else_body.add_else exprs, statement
     else
       exprs: exprs.unwrap() unless statement
       @children.push @else_body: exprs
-    this
#

If the else_body is an IfNode itself, then we've got an if-else chain.

  is_chain: ->
-    @chain ||= @else_body and @else_body instanceof IfNode
#

The IfNode only compiles into a statement if either of its bodies needs + this

#

If the else_body is an IfNode itself, then we've got an if-else chain.

  is_chain: ->
+    @chain: or @else_body and @else_body instanceof IfNode
#

The IfNode only compiles into a statement if either of its bodies needs to be a statement. Otherwise a ternary is safe.

  is_statement: ->
-    @statement ||= !!(@comment or @tags.statement or @body.is_statement() or (@else_body and @else_body.is_statement()))
+    @statement: or !!(@comment or @tags.statement or @body.is_statement() or (@else_body and @else_body.is_statement()))
 
   compile_condition: (o) ->
     (cond.compile(o) for cond in flatten([@condition])).join(' || ')
 
   compile_node: (o) ->
-    if @is_statement() then @compile_statement(o) else @compile_ternary(o)
#

Compile the IfNode as a regular if-else statement. Flattened chains + if @is_statement() then @compile_statement(o) else @compile_ternary(o) + + make_return: -> + @body: and @body.make_return() + @else_body: and @else_body.make_return() + this

#

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

  compile_statement: (o) ->
     @rewrite_switch(o) if @switcher
     child:        del o, 'chain_child'
     cond_o:       merge o
-    del cond_o, 'returns'
     o.indent:     @idt(1)
     o.top:        true
     if_dent:      if child then '' else @idt()
@@ -832,26 +909,30 @@
       ' else ' + @else_body.compile(merge(o, {indent: @idt(), chain_child: true}))
     else
       " else {\n${ Expressions.wrap([@else_body]).compile(o) }\n$@tab}"
-    "$if_part$else_part"
#

Compile the IfNode as a ternary operator.

  compile_ternary: (o) ->
+    "$if_part$else_part"
#

Compile the IfNode as a ternary operator.

  compile_ternary: (o) ->
     if_part:    @condition.compile(o) + ' ? ' + @body.compile(o)
     else_part:  if @else_body then @else_body.compile(o) else 'null'
-    "$if_part : $else_part"
#

Constants

#

Tabs are two spaces for pretty printing.

TAB: '  '
#

Trim out all trailing whitespace, so that the generated code plays nice -with Git.

TRAILING_WHITESPACE: /\s+$/gm
#

Keep this identifier regex in sync with the Lexer.

IDENTIFIER: /^[a-zA-Z$_](\w|\$)*$/
#

Utility Functions

#

Merge objects, returning a fresh copy with attributes from both sides. -Used every time compile is called, to allow properties in the options hash -to propagate down the tree without polluting other branches.

merge: (options, overrides) ->
-  fresh: {}
-  (fresh[key]: val) for key, val of options
-  (fresh[key]: val) for key, val of overrides if overrides
-  fresh
#

Trim out all falsy values from an array.

compact: (array) -> item for item in array when item
#

Return a completely flattened version of an array. Handy for getting a -list of children.

flatten: (array) ->
-  memo: []
-  for item in array
-    if item instanceof Array then memo: memo.concat(item) else memo.push(item)
-  memo
#

Delete a key from an object, returning the value. Useful when a node is -looking for a particular method in an options hash.

del: (obj, key) ->
-  val: obj[key]
-  delete obj[key]
-  val
#

Handy helper for a generating LiteralNode.

literal: (name) ->
+    "$if_part : $else_part"
#

Faux-Nodes

#

PushNode

#

Faux-nodes are never created by the grammar, but are used during code +generation to generate other combinations of nodes. The PushNode creates +the tree for array.push(value), which is helpful for recording the result +arrays from comprehensions.

PushNode: exports.PushNode: {
+
+  wrap: (array, expressions) ->
+    expr: expressions.unwrap()
+    return expressions if expr.is_pure_statement() or expr.contains_pure_statement()
+    Expressions.wrap([new CallNode(
+      new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr]
+    )])
+
+}
#

ClosureNode

#

A faux-node used to wrap an expressions body in a closure.

ClosureNode: exports.ClosureNode: {
#

Wrap the expressions body, unless it contains a pure statement, +in which case, no dice.

  wrap: (expressions, statement) ->
+    return expressions if expressions.contains_pure_statement()
+    func: new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions])))
+    call: new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')])
+    if statement then Expressions.wrap([call]) else call
+
+}
#

Constants

#

Tabs are two spaces for pretty printing.

TAB: '  '
#

Trim out all trailing whitespace, so that the generated code plays nice +with Git.

TRAILING_WHITESPACE: /\s+$/gm
#

Keep this identifier regex in sync with the Lexer.

IDENTIFIER: /^[a-zA-Z\$_](\w|\$)*$/
#

Utility Functions

#

Handy helper for a generating LiteralNode.

literal: (name) ->
   new LiteralNode(name)
 
 
\ No newline at end of file diff --git a/documentation/docs/optparse.html b/documentation/docs/optparse.html index 98486a9b6c..8f8532d716 100644 --- a/documentation/docs/optparse.html +++ b/documentation/docs/optparse.html @@ -1,4 +1,4 @@ - optparse.coffee

optparse.coffee

#

A simple OptionParser class to parse option flags from the command-line. + optparse.coffee

optparse.coffee

#

A simple OptionParser class to parse option flags from the command-line. Use it like so:

parser:  new OptionParser switches, help_banner
diff --git a/documentation/docs/repl.html b/documentation/docs/repl.html
index 73fff170da..ddf7c06e0b 100644
--- a/documentation/docs/repl.html
+++ b/documentation/docs/repl.html
@@ -1,9 +1,10 @@
-      repl.coffee           

repl.coffee

#

A very simple Read-Eval-Print-Loop. Compiles one line at a time to JavaScript + repl.coffee

repl.coffee

#

A very simple Read-Eval-Print-Loop. Compiles one line at a time to JavaScript and evaluates it. Good for simple tests, or poking around the Node.js API. Using it looks like this:

coffee> puts "$num bottles of beer" for num in [99..1]
-
#

Require the coffee-script module to get access to the compiler.

CoffeeScript: require 'coffee-script'
#

Our prompt.

prompt: 'coffee> '
#

Quick alias for quitting the REPL.

process.mixin {
+
#

Require the coffee-script module to get access to the compiler.

CoffeeScript: require './coffee-script'
+helpers:      require('./helpers').helpers
#

Our prompt.

prompt: 'coffee> '
#

Quick alias for quitting the REPL.

helpers.extend global, {
   quit: -> process.exit(0)
 }
#

The main REPL function. run is called every time a line of code is entered. Attempt to evaluate the command. If there's an exception, print it out instead diff --git a/documentation/docs/rewriter.html b/documentation/docs/rewriter.html index 4d4e04a730..35e71c7e36 100644 --- a/documentation/docs/rewriter.html +++ b/documentation/docs/rewriter.html @@ -1,11 +1,14 @@ - rewriter.coffee

rewriter.coffee

#

The CoffeeScript language has a decent amount of optional syntax, -implicit syntax, and shorthand syntax. These things can greatly complicate a -grammar and bloat the resulting parse table. Instead of making the parser -handle it all, we take a series of passes over the token stream, -using this Rewriter to convert shorthand into the unambiguous long form, -add implicit indentation and parentheses, balance incorrect nestings, and -generally clean things up.

#

Set up exported variables for both Node.js and the browser.

this.exports: this unless process?
#

The Rewriter class is used by the Lexer, directly against -its internal array of tokens.

exports.Rewriter: class Rewriter
#

Rewrite the token stream in multiple passes, one logical filter at + rewriter.coffee

rewriter.coffee

#

The CoffeeScript language has a good deal of optional syntax, implicit syntax, +and shorthand syntax. This can greatly complicate a grammar and bloat +the resulting parse table. Instead of making the parser handle it all, we take +a series of passes over the token stream, using this Rewriter to convert +shorthand into the unambiguous long form, add implicit indentation and +parentheses, balance incorrect nestings, and generally clean things up.

#

Set up exported variables for both Node.js and the browser.

if process?
+  helpers: require('./helpers').helpers
+else
+  this.exports: this
+  helpers:      this.helpers
#

Import the helpers we need.

include: helpers.include
#

The Rewriter class is used by the Lexer, directly against +its internal array of tokens.

exports.Rewriter: class Rewriter
#

Rewrite the token stream in multiple passes, one logical filter at a time. This could certainly be changed into a single pass through the stream, with a big ol' efficient switch, but it's much nicer to work with like this. The order of these passes matters -- indentation must be @@ -19,7 +22,7 @@ @add_implicit_parentheses() @ensure_balance(BALANCED_PAIRS) @rewrite_closing_parens() - @tokens

#

Rewrite the token stream, looking one token ahead and behind. + @tokens

#

Rewrite the token stream, looking one token ahead and behind. Allow the return value of the block to tell us how many tokens to move forwards (or backwards) in the stream, to make sure we don't miss anything as tokens are inserted and removed, and the stream changes length under @@ -28,28 +31,28 @@ while true break unless @tokens[i] move: block(@tokens[i - 1], @tokens[i], @tokens[i + 1], i) - i += move - true

#

Massage newlines and indentations so that comments don't have to be + i: + move + true

#

Massage newlines and indentations so that comments don't have to be correctly indented, or appear on a line of their own.

  adjust_comments: ->
     @scan_tokens (prev, token, post, i) =>
       return 1 unless token[0] is 'COMMENT'
       after:  @tokens[i + 2]
       if after and after[0] is 'INDENT'
-        @tokens.splice(i + 2, 1)
-        @tokens.splice(i, 0, after)
+        @tokens.splice i + 2, 1
+        @tokens.splice i, 0, after
         return 1
       else if prev and prev[0] isnt 'TERMINATOR' and prev[0] isnt 'INDENT' and prev[0] isnt 'OUTDENT'
-        @tokens.splice(i, 0, ['TERMINATOR', "\n", prev[2]])
+        @tokens.splice i, 0, ['TERMINATOR', "\n", prev[2]]
         return 2
       else
-        return 1
#

Leading newlines would introduce an ambiguity in the grammar, so we + return 1

#

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

  remove_leading_newlines: ->
-    @tokens.shift() while @tokens[0][0] is 'TERMINATOR'
#

Some blocks occur in the middle of expressions -- when we're expecting + @tokens.shift() while @tokens[0] and @tokens[0][0] is 'TERMINATOR'

#

Some blocks occur in the middle of expressions -- when we're expecting this, remove their trailing newlines.

  remove_mid_expression_newlines: ->
     @scan_tokens (prev, token, post, i) =>
       return 1 unless post and include(EXPRESSION_CLOSE, post[0]) and token[0] is 'TERMINATOR'
       @tokens.splice(i, 1)
-      return 0
#

The lexer has tagged the opening parenthesis of a method call, and the + return 0

#

The lexer has tagged the opening parenthesis of a method call, and the opening bracket of an indexing operation. Match them with their paired close.

  close_open_calls_and_indexes: ->
     parens:   [0]
@@ -58,33 +61,42 @@
       switch token[0]
         when 'CALL_START'  then parens.push(0)
         when 'INDEX_START' then brackets.push(0)
-        when '('           then parens[parens.length - 1] += 1
-        when '['           then brackets[brackets.length - 1] += 1
+        when '('           then parens[parens.length - 1]: + 1
+        when '['           then brackets[brackets.length - 1]: + 1
         when ')'
           if parens[parens.length - 1] is 0
             parens.pop()
             token[0]: 'CALL_END'
           else
-            parens[parens.length - 1] -= 1
+            parens[parens.length - 1]: - 1
         when ']'
           if brackets[brackets.length - 1] == 0
             brackets.pop()
             token[0]: 'INDEX_END'
           else
-            brackets[brackets.length - 1] -= 1
-      return 1
#

Methods may be optionally called without parentheses, for simple cases. + brackets[brackets.length - 1]: - 1 + return 1

#

Methods may be optionally called without parentheses, for simple cases. Insert the implicit parentheses here, so that the parser doesn't have to deal with them.

  add_implicit_parentheses: ->
     stack: [0]
+    calls: 0
     @scan_tokens (prev, token, post, i) =>
       tag: token[0]
-      stack.push(0) if tag is 'INDENT'
-      if tag is 'OUTDENT'
-        last: stack.pop()
-        stack[stack.length - 1] += last
+      switch tag
+        when 'CALL_START' then calls: + 1
+        when 'CALL_END'   then calls: - 1
+        when 'INDENT'     then stack.push(0)
+        when 'OUTDENT'
+          last: stack.pop()
+          stack[stack.length - 1]: + last
+      open: stack[stack.length - 1] > 0
+      if tag is 'CALL_END' and calls < 0 and open
+        stack[stack.length - 1]: - 1
+        @tokens.splice(i, 0, ['CALL_END', ')', token[2]])
+        return 2
       if !post? or include IMPLICIT_END, tag
         return 1 if tag is 'INDENT' and prev and include IMPLICIT_BLOCK, prev[0]
-        if stack[stack.length - 1] > 0 or tag is 'INDENT'
+        if open or tag is 'INDENT'
           idx: if tag is 'OUTDENT' then i + 1 else i
           stack_pointer: if tag is 'INDENT' then 2 else 1
           for tmp in [0...stack[stack.length - stack_pointer]]
@@ -93,9 +105,10 @@
           stack[stack.length - stack_pointer]: 0
           return size
       return 1 unless prev and include(IMPLICIT_FUNC, prev[0]) and include IMPLICIT_CALL, tag
+      calls: 0
       @tokens.splice(i, 0, ['CALL_START', '(', token[2]])
-      stack[stack.length - 1] += 1
-      return 2
#

Because our grammar is LALR(1), it can't handle some single-line + stack[stack.length - 1]: + 1 + return 2

#

Because our grammar is LALR(1), it can't handle some single-line expressions that lack ending delimiters. The Rewriter adds the implicit blocks, so it doesn't need to. ')' can close a single-line block, but we need to make sure it's balanced.

  add_implicit_indentation: ->
@@ -108,7 +121,7 @@
       idx: i + 1
       parens: 0
       while true
-        idx += 1
+        idx: + 1
         tok: @tokens[idx]
         pre: @tokens[idx - 1]
         if (not tok or
@@ -118,23 +131,29 @@
           insertion: if pre[0] is "," then idx - 1 else idx
           @tokens.splice(insertion, 0, ['OUTDENT', 2, token[2]])
           break
-        parens += 1 if tok[0] is '('
-        parens -= 1 if tok[0] is ')'
+        parens: + 1 if tok[0] is '('
+        parens: - 1 if tok[0] is ')'
       return 1 unless token[0] is 'THEN'
       @tokens.splice(i, 1)
-      return 0
#

Ensure that all listed pairs of tokens are correctly balanced throughout + return 0

#

Ensure that all listed pairs of tokens are correctly balanced throughout the course of the token stream.

  ensure_balance: (pairs) ->
     levels: {}
+    open_line: {}
     @scan_tokens (prev, token, post, i) =>
       for pair in pairs
         [open, close]: pair
-        levels[open] ||= 0
-        levels[open] += 1 if token[0] is open
-        levels[open] -= 1 if token[0] is close
+        levels[open]: or 0
+        if token[0] is open
+          open_line[open]: token[2] if levels[open] == 0
+          levels[open]: + 1
+        levels[open]: - 1 if token[0] is close
         throw new Error("too many ${token[1]} on line ${token[2] + 1}") if levels[open] < 0
       return 1
     unclosed: key for key, value of levels when value > 0
-    throw new Error("unclosed ${unclosed[0]}") if unclosed.length
#

We'd like to support syntax like this:

+ if unclosed.length + open: unclosed[0] + line: open_line[open] + 1 + throw new Error "unclosed $open on line $line"
#

We'd like to support syntax like this:

el.click((event) ->
   el.hide())
@@ -162,30 +181,29 @@
         return 1
       else if include EXPRESSION_END, tag
         if debt[inv] > 0
-          debt[inv] -= 1
+          debt[inv]: - 1
           @tokens.splice i, 1
           return 0
         else
           match: stack.pop()
           mtag:  match[0]
           return 1 if tag is INVERSES[mtag]
-          debt[mtag] += 1
+          debt[mtag]: + 1
           val: if mtag is 'INDENT' then match[1] else INVERSES[mtag]
           @tokens.splice i, 0, [INVERSES[mtag], val]
           return 1
       else
-        return 1
#

Constants

#

List of the token pairs that must be balanced.

BALANCED_PAIRS: [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'],
+        return 1
#

Constants

#

List of the token pairs that must be balanced.

BALANCED_PAIRS: [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'],
   ['PARAM_START', 'PARAM_END'], ['CALL_START', 'CALL_END'],
-  ['INDEX_START', 'INDEX_END'], ['SOAKED_INDEX_START', 'SOAKED_INDEX_END']]
#

The inverse mappings of BALANCED_PAIRS we're trying to fix up, so we can + ['INDEX_START', 'INDEX_END'], ['SOAKED_INDEX_START', 'SOAKED_INDEX_END']]

#

The inverse mappings of BALANCED_PAIRS we're trying to fix up, so we can look things up from either end.

INVERSES: {}
 for pair in BALANCED_PAIRS
   INVERSES[pair[0]]: pair[1]
-  INVERSES[pair[1]]: pair[0]
#

The tokens that signal the start of a balanced pair.

EXPRESSION_START: pair[0] for pair in BALANCED_PAIRS
#

The tokens that signal the end of a balanced pair.

EXPRESSION_END:   pair[1] for pair in BALANCED_PAIRS
#

Tokens that indicate the close of a clause of an expression.

EXPRESSION_CLOSE: ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END
#

Tokens that, if followed by an IMPLICIT_CALL, indicate a function invocation.

IMPLICIT_FUNC:  ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END']
#

If preceded by an IMPLICIT_FUNC, indicates a function invocation.

IMPLICIT_CALL:  ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START',
-                 'TRY', 'DELETE', 'TYPEOF', 'SWITCH',
+  INVERSES[pair[1]]: pair[0]
#

The tokens that signal the start of a balanced pair.

EXPRESSION_START: pair[0] for pair in BALANCED_PAIRS
#

The tokens that signal the end of a balanced pair.

EXPRESSION_END:   pair[1] for pair in BALANCED_PAIRS
#

Tokens that indicate the close of a clause of an expression.

EXPRESSION_CLOSE: ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END
#

Tokens that, if followed by an IMPLICIT_CALL, indicate a function invocation.

IMPLICIT_FUNC:  ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '<-']
#

If preceded by an IMPLICIT_FUNC, indicates a function invocation.

IMPLICIT_CALL:  ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START',
+                 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'EXTENSION',
                  'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT',
-                 '@', '->', '=>', '[', '(', '{']
#

Tokens indicating that the implicit call must enclose a block of expressions.

IMPLICIT_BLOCK: ['->', '=>', '{', '[', ',']
#

Tokens that always mark the end of an implicit call for single-liners.

IMPLICIT_END:   ['IF', 'UNLESS', 'FOR', 'WHILE', 'TERMINATOR', 'INDENT', 'OUTDENT']
#

Single-line flavors of block expressions that have unclosed endings. + '@', '->', '=>', '[', '(', '{']

#

Tokens indicating that the implicit call must enclose a block of expressions.

IMPLICIT_BLOCK: ['->', '=>', '{', '[', ',']
#

Tokens that always mark the end of an implicit call for single-liners.

IMPLICIT_END:   ['IF', 'UNLESS', 'FOR', 'WHILE', 'TERMINATOR', 'INDENT', 'OUTDENT']
#

Single-line flavors of block expressions that have unclosed endings. The grammar can't disambiguate them, so we insert the implicit indentation.

SINGLE_LINERS: ['ELSE', "->", "=>", 'TRY', 'FINALLY', 'THEN']
-SINGLE_CLOSERS: ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']
#

Utility Functions

#

Does a list include a value?

include: (list, value) ->
-  list.indexOf(value) >= 0
+SINGLE_CLOSERS: ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']
 
 
\ No newline at end of file diff --git a/documentation/docs/scope.html b/documentation/docs/scope.html index 5c6419d083..ddb81d2514 100644 --- a/documentation/docs/scope.html +++ b/documentation/docs/scope.html @@ -1,4 +1,4 @@ - scope.coffee

scope.coffee

#

The Scope class regulates lexical scoping within CoffeeScript. As you + scope.coffee

@@ -395,6 +395,13 @@ coffee --print app/scripts/*.coffee > concatenation.js should not be able to change the value of the external variable of the same name, and therefore has a declaration of its own.

+

+ This behavior is effectively identical to Ruby's scope for local variables. + Because you don't have direct access to the var keyword, + it's impossible to shadow an outer variable on purpose, you may only refer + to it. So be careful that you're not reusing the name of an external + variable accidentally, if you're writing a deeply nested function. +

Although suppressed within this documentation for clarity, all CoffeeScript output is wrapped in an anonymous function: @@ -424,10 +431,9 @@ coffee --print app/scripts/*.coffee > concatenation.js

<%= code_for('conditionals') %>

- The conditional assignment operators are included: ||=, - which only assigns a value to a variable if the variable's current value - is falsy, and &&=, which only replaces the value of - truthy variables. + You can assign a variable to a half-expression to perform an operation + like Ruby's ||=, which only assigns a value to a variable + if the variable's current value is falsy.

@@ -474,16 +480,6 @@ coffee --print app/scripts/*.coffee > concatenation.js

<%= code_for('splats', true) %> -

- - Arguments are Arrays - If you reference the arguments object directly, it will be converted - into a real Array, making all of the - Array methods - available. -

- <%= code_for('arguments', true) %> -

While Loops @@ -637,7 +633,7 @@ coffee --print app/scripts/*.coffee > concatenation.js

If structuring your prototypes classically isn't your cup of tea, CoffeeScript provides a couple of lower-level conveniences. The extends operator - helps with proper prototype setup, as seen above, :: gives you + helps with proper prototype setup, :: gives you quick access to an object's prototype, and super() is converted into a call against the immediate ancestor's method of the same name.

@@ -665,6 +661,10 @@ coffee --print app/scripts/*.coffee > concatenation.js to help pull out deeply nested properties.

<%= code_for('object_extraction', 'poet + " — " + street') %> +

+ Pattern matching can even be combined with splats. +

+ <%= code_for('patterns_and_splats', 'contents.join("")') %>

@@ -677,7 +677,7 @@ coffee --print app/scripts/*.coffee > concatenation.js gives a good overview of the quirks.

- The fat arrow => can be used to both define a function, and to bind + The fat arrow => can be used to both define a function, and to bind it to the current value of this, right on the spot. This is helpful when using callback-based libraries like Prototype or jQuery, for creating iterator functions to pass to each, or event-handler functions @@ -690,6 +690,15 @@ coffee --print app/scripts/*.coffee > concatenation.js have referred to the undefined "customer" property of the DOM element, and trying to call purchase() on it would have raised an exception.

+

+ If you have more custom needs for function binding, CoffeeScript includes + the <- bind operator, which works the same as ECMAScript 5 + and Prototype.js's Function#bind. The first argument is the this + value, and the remainder are curried arguments. In the example below, + we curry a jQuery request for a URL, and then execute the bound function + with the missing callback argument. +

+ <%= code_for('binding', true) %>

@@ -736,6 +745,20 @@ coffee --print app/scripts/*.coffee > concatenation.js

<%= code_for('comparisons', 'healthy') %> +

+ + String and RegExp Interpolation + A version of ECMAScript Harmony's proposed string interpolation + is included in CoffeeScript. Simple variables can be included by marking + them with a dollar sign. +

+ <%= code_for('interpolation', 'quote') %> +

+ And arbitrary expressions can be interpolated by using brackets ${ ... }
+ Interpolation works the same way within regular expressions. +

+ <%= code_for('interpolation_expression', 'sentence') %> +

Multiline Strings and Heredocs @@ -749,19 +772,9 @@ coffee --print app/scripts/*.coffee > concatenation.js you can keep it all aligned with the body of your code.

<%= code_for('heredocs') %> - -

- - String Interpolation - A version of ECMAScript Harmony's proposed string interpolation - is included in CoffeeScript. Simple variables can be included by marking - them with a dollar sign. -

- <%= code_for('interpolation', 'quote') %>

- And arbitrary expressions can be interpolated by using brackets ${ ... } + Double-quoted heredocs, like double-quoted strings, allow interpolation.

- <%= code_for('interpolation_expression', 'sentence') %>

@@ -858,6 +871,17 @@ coffee --print app/scripts/*.coffee > concatenation.js Change Log

+

+ 0.5.6 + Interpolation can now be used within regular expressions and heredocs, as well as + strings. Added the <- bind operator. + Allowing assignment to half-expressions instead of special ||=-style + operators. The arguments object is no longer automatically converted into + an array. After requiring coffee-script, Node.js can now directly + load .coffee files, thanks to registerExtension. Multiple + splats can now be used in function calls, arrays, and pattern matching. +

+

0.5.5 String interpolation, contributed by diff --git a/documentation/js/arguments.js b/documentation/js/arguments.js deleted file mode 100644 index 87722e6d73..0000000000 --- a/documentation/js/arguments.js +++ /dev/null @@ -1,8 +0,0 @@ -(function(){ - var backwards; - backwards = function backwards() { - arguments = Array.prototype.slice.call(arguments, 0); - return alert(arguments.reverse()); - }; - backwards("stairway", "to", "heaven"); -})(); diff --git a/documentation/js/binding.js b/documentation/js/binding.js new file mode 100644 index 0000000000..50ca532aab --- /dev/null +++ b/documentation/js/binding.js @@ -0,0 +1,12 @@ +(function(){ + var get_source, url; + url = "documentation/coffee/binding.coffee"; + get_source = (function(func, obj, args) { + return function() { + return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0))); + }; + }(jQuery.get, jQuery, [url])); + get_source(function(response) { + return alert(response); + }); +})(); diff --git a/documentation/js/cake_tasks.js b/documentation/js/cake_tasks.js index 07d1b62dbe..b1c20d0a90 100644 --- a/documentation/js/cake_tasks.js +++ b/documentation/js/cake_tasks.js @@ -1,5 +1,4 @@ (function(){ - process.mixin(require('assert')); task('test', 'run each of the unit tests', function() { var _a, _b, _c, _d, test; _a = []; _b = test_files; diff --git a/documentation/js/expressions.js b/documentation/js/expressions.js index 78be417397..e1dfcb7b64 100644 --- a/documentation/js/expressions.js +++ b/documentation/js/expressions.js @@ -4,7 +4,11 @@ if (student.excellent_work) { return "A+"; } else if (student.okay_stuff) { - return student.tried_hard ? "B" : "B-"; + if (student.tried_hard) { + return "B"; + } else { + return "B-"; + } } else { return "C"; } diff --git a/documentation/js/expressions_assignment.js b/documentation/js/expressions_assignment.js index 4b6976186b..1f6d799185 100644 --- a/documentation/js/expressions_assignment.js +++ b/documentation/js/expressions_assignment.js @@ -1,4 +1,4 @@ (function(){ var one, six, three, two; - six = ((one = 1)) + ((two = 2)) + ((three = 3)); + six = (one = 1) + (two = 2) + (three = 3); })(); diff --git a/documentation/js/heredocs.js b/documentation/js/heredocs.js index a7a75b5a35..bc9f2d6b35 100644 --- a/documentation/js/heredocs.js +++ b/documentation/js/heredocs.js @@ -1,4 +1,4 @@ (function(){ var html; - html = "\n cup of coffeescript\n"; + html = '\n cup of coffeescript\n'; })(); diff --git a/documentation/js/interpolation_expression.js b/documentation/js/interpolation_expression.js index 7d41340d02..88fff5914d 100644 --- a/documentation/js/interpolation_expression.js +++ b/documentation/js/interpolation_expression.js @@ -1,4 +1,6 @@ (function(){ - var sentence; - sentence = (22 / 7) + " is a decent approximation of π"; + var dates, sentence, sep; + sentence = "" + (22 / 7) + " is a decent approximation of π"; + sep = "[.\\/\\- ]"; + dates = (new RegExp("\\d+" + sep + "\\d+" + sep + "\\d+", "g")); })(); diff --git a/documentation/js/overview.js b/documentation/js/overview.js index 6164287d11..31d61866fe 100644 --- a/documentation/js/overview.js +++ b/documentation/js/overview.js @@ -24,7 +24,7 @@ // Splats: race = function race(winner) { var runners; - runners = Array.prototype.slice.call(arguments, 1); + runners = Array.prototype.slice.call(arguments, 1, arguments.length - 0); return print(winner, runners); }; // Existence: diff --git a/documentation/js/patterns_and_splats.js b/documentation/js/patterns_and_splats.js new file mode 100644 index 0000000000..cb5f7eddf4 --- /dev/null +++ b/documentation/js/patterns_and_splats.js @@ -0,0 +1,8 @@ +(function(){ + var _a, close, contents, open, tag; + tag = ""; + _a = tag.split(""); + open = _a[0]; + contents = Array.prototype.slice.call(_a, 1, _a.length - 1); + close = _a[_a.length - 1]; +})(); diff --git a/documentation/js/scope.js b/documentation/js/scope.js index f1980c6c94..3c5c459706 100644 --- a/documentation/js/scope.js +++ b/documentation/js/scope.js @@ -4,7 +4,8 @@ change_numbers = function change_numbers() { var new_num; new_num = -1; - return num = 10; + num = 10; + return num; }; new_num = change_numbers(); })(); diff --git a/documentation/js/splats.js b/documentation/js/splats.js index eab92d9b0e..1beeb06645 100644 --- a/documentation/js/splats.js +++ b/documentation/js/splats.js @@ -3,10 +3,11 @@ gold = (silver = (the_field = "unknown")); award_medals = function award_medals(first, second) { var rest; - rest = Array.prototype.slice.call(arguments, 2); + rest = Array.prototype.slice.call(arguments, 2, arguments.length - 0); gold = first; silver = second; - return the_field = rest; + the_field = rest; + return the_field; }; contenders = ["Michael Phelps", "Liu Xiang", "Yao Ming", "Allyson Felix", "Shawn Johnson", "Roman Sebrle", "Guo Jingjing", "Tyson Gay", "Asafa Powell", "Usain Bolt"]; award_medals.apply(this, contenders); diff --git a/documentation/underscore.html b/documentation/underscore.html deleted file mode 100644 index 17fe8a8411..0000000000 --- a/documentation/underscore.html +++ /dev/null @@ -1,668 +0,0 @@ - - - - - - - Underscore.coffee - - - -

   1  
-   2    # Underscore.coffee
-   3    # (c) 2010 Jeremy Ashkenas, DocumentCloud Inc.
-   4    # Underscore is freely distributable under the terms of the MIT license.
-   5    # Portions of Underscore are inspired by or borrowed from Prototype.js,
-   6    # Oliver Steele's Functional, and John Resig's Micro-Templating.
-   7    # For all details and documentation:
-   8    # http://documentcloud.github.com/underscore/
-   9  
-  10  
-  11    # ------------------------- Baseline setup ---------------------------------
-  12  
-  13    # Establish the root object, "window" in the browser, or "global" on the server.
-  14    root: this
-  15  
-  16  
-  17    # Save the previous value of the "_" variable.
-  18    previousUnderscore: root._
-  19  
-  20  
-  21    # Establish the object that gets thrown to break out of a loop iteration.
-  22    breaker: if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration
-  23  
-  24  
-  25    # Quick regexp-escaping function, because JS doesn't have RegExp.escape().
-  26    escapeRegExp: (string) -> string.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1')
-  27  
-  28  
-  29    # Save bytes in the minified (but not gzipped) version:
-  30    ArrayProto:           Array.prototype
-  31    ObjProto:             Object.prototype
-  32  
-  33  
-  34    #Create quick reference variables for speed access to core prototypes.
-  35    slice:                ArrayProto.slice
-  36    unshift:              ArrayProto.unshift
-  37    toString:             ObjProto.toString
-  38    hasOwnProperty:       ObjProto.hasOwnProperty
-  39    propertyIsEnumerable: ObjProto.propertyIsEnumerable
-  40  
-  41  
-  42    # All ECMA5 native implementations we hope to use are declared here.
-  43    nativeForEach:        ArrayProto.forEach
-  44    nativeMap:            ArrayProto.map
-  45    nativeReduce:         ArrayProto.reduce
-  46    nativeReduceRight:    ArrayProto.reduceRight
-  47    nativeFilter:         ArrayProto.filter
-  48    nativeEvery:          ArrayProto.every
-  49    nativeSome:           ArrayProto.some
-  50    nativeIndexOf:        ArrayProto.indexOf
-  51    nativeLastIndexOf:    ArrayProto.lastIndexOf
-  52    nativeIsArray:        Array.isArray
-  53    nativeKeys:           Object.keys
-  54  
-  55  
-  56    # Create a safe reference to the Underscore object for use below.
-  57    _: (obj) -> new wrapper(obj)
-  58  
-  59  
-  60    # Export the Underscore object for CommonJS.
-  61    if typeof(exports) != 'undefined' then exports._: _
-  62  
-  63  
-  64    # Export Underscore to global scope.
-  65    root._: _
-  66  
-  67  
-  68    # Current version.
-  69    _.VERSION: '0.6.0'
-  70  
-  71  
-  72    # ------------------------ Collection Functions: ---------------------------
-  73  
-  74    # The cornerstone, an each implementation.
-  75    # Handles objects implementing forEach, arrays, and raw objects.
-  76    _.each: (obj, iterator, context) ->
-  77      try
-  78        if nativeForEach and obj.forEach is nativeForEach
-  79          obj.forEach iterator, context
-  80        else if _.isNumber obj.length
-  81          iterator.call(context, obj[i], i, obj) for i in [0...obj.length]
-  82        else
-  83          iterator.call(context, val, key, obj) for key, val of obj
-  84      catch e
-  85        throw e if e isnt breaker
-  86      obj
-  87  
-  88  
-  89    # Return the results of applying the iterator to each element. Use JavaScript
-  90    # 1.6's version of map, if possible.
-  91    _.map: (obj, iterator, context) ->
-  92      return obj.map(iterator, context) if nativeMap and obj.map is nativeMap
-  93      results: []
-  94      _.each obj, (value, index, list) ->
-  95        results.push iterator.call context, value, index, list
-  96      results
-  97  
-  98  
-  99    # Reduce builds up a single result from a list of values. Also known as
- 100    # inject, or foldl. Uses JavaScript 1.8's version of reduce, if possible.
- 101    _.reduce: (obj, memo, iterator, context) ->
- 102      return obj.reduce(_.bind(iterator, context), memo) if nativeReduce and obj.reduce is nativeReduce
- 103      _.each obj, (value, index, list) ->
- 104        memo: iterator.call context, memo, value, index, list
- 105      memo
- 106  
- 107  
- 108    # The right-associative version of reduce, also known as foldr. Uses
- 109    # JavaScript 1.8's version of reduceRight, if available.
- 110    _.reduceRight: (obj, memo, iterator, context) ->
- 111      return obj.reduceRight(_.bind(iterator, context), memo) if nativeReduceRight and obj.reduceRight is nativeReduceRight
- 112      _.each _.clone(_.toArray(obj)).reverse(), (value, index) ->
- 113        memo: iterator.call context, memo, value, index, obj
- 114      memo
- 115  
- 116  
- 117    # Return the first value which passes a truth test.
- 118    _.detect: (obj, iterator, context) ->
- 119      result: null
- 120      _.each obj, (value, index, list) ->
- 121        if iterator.call context, value, index, list
- 122          result: value
- 123          _.breakLoop()
- 124      result
- 125  
- 126  
- 127    # Return all the elements that pass a truth test. Use JavaScript 1.6's
- 128    # filter(), if it exists.
- 129    _.filter: (obj, iterator, context) ->
- 130      return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter
- 131      results: []
- 132      _.each obj, (value, index, list) ->
- 133        results.push value if iterator.call context, value, index, list
- 134      results
- 135  
- 136  
- 137    # Return all the elements for which a truth test fails.
- 138    _.reject: (obj, iterator, context) ->
- 139      results: []
- 140      _.each obj, (value, index, list) ->
- 141        results.push value if not iterator.call context, value, index, list
- 142      results
- 143  
- 144  
- 145    # Determine whether all of the elements match a truth test. Delegate to
- 146    # JavaScript 1.6's every(), if it is present.
- 147    _.every: (obj, iterator, context) ->
- 148      iterator ||= _.identity
- 149      return obj.every iterator, context if nativeEvery and obj.every is nativeEvery
- 150      result: true
- 151      _.each obj, (value, index, list) ->
- 152        _.breakLoop() unless (result: result and iterator.call(context, value, index, list))
- 153      result
- 154  
- 155  
- 156    # Determine if at least one element in the object matches a truth test. Use
- 157    # JavaScript 1.6's some(), if it exists.
- 158    _.some: (obj, iterator, context) ->
- 159      iterator ||= _.identity
- 160      return obj.some iterator, context if nativeSome and obj.some is nativeSome
- 161      result: false
- 162      _.each obj, (value, index, list) ->
- 163        _.breakLoop() if (result: iterator.call(context, value, index, list))
- 164      result
- 165  
- 166  
- 167    # Determine if a given value is included in the array or object,
- 168    # based on '==='.
- 169    _.include: (obj, target) ->
- 170      return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf
- 171      for key, val of obj
- 172        return true if val is target
- 173      false
- 174  
- 175  
- 176    # Invoke a method with arguments on every item in a collection.
- 177    _.invoke: (obj, method) ->
- 178      args: _.rest arguments, 2
- 179      (if method then val[method] else val).apply(val, args) for val in obj
- 180  
- 181  
- 182    # Convenience version of a common use case of map: fetching a property.
- 183    _.pluck: (obj, key) ->
- 184      _.map(obj, (val) -> val[key])
- 185  
- 186  
- 187    # Return the maximum item or (item-based computation).
- 188    _.max: (obj, iterator, context) ->
- 189      return Math.max.apply(Math, obj) if not iterator and _.isArray(obj)
- 190      result: {computed: -Infinity}
- 191      _.each obj, (value, index, list) ->
- 192        computed: if iterator then iterator.call(context, value, index, list) else value
- 193        computed >= result.computed and (result: {value: value, computed: computed})
- 194      result.value
- 195  
- 196  
- 197    # Return the minimum element (or element-based computation).
- 198    _.min: (obj, iterator, context) ->
- 199      return Math.min.apply(Math, obj) if not iterator and _.isArray(obj)
- 200      result: {computed: Infinity}
- 201      _.each obj, (value, index, list) ->
- 202        computed: if iterator then iterator.call(context, value, index, list) else value
- 203        computed < result.computed and (result: {value: value, computed: computed})
- 204      result.value
- 205  
- 206  
- 207    # Sort the object's values by a criterion produced by an iterator.
- 208    _.sortBy: (obj, iterator, context) ->
- 209      _.pluck(((_.map obj, (value, index, list) ->
- 210        {value: value, criteria: iterator.call(context, value, index, list)}
- 211      ).sort((left, right) ->
- 212        a: left.criteria; b: right.criteria
- 213        if a < b then -1 else if a > b then 1 else 0
- 214      )), 'value')
- 215  
- 216  
- 217    # Use a comparator function to figure out at what index an object should
- 218    # be inserted so as to maintain order. Uses binary search.
- 219    _.sortedIndex: (array, obj, iterator) ->
- 220      iterator ||= _.identity
- 221      low:  0
- 222      high: array.length
- 223      while low < high
- 224        mid: (low + high) >> 1
- 225        if iterator(array[mid]) < iterator(obj) then low: mid + 1 else high: mid
- 226      low
- 227  
- 228  
- 229    # Convert anything iterable into a real, live array.
- 230    _.toArray: (iterable) ->
- 231      return []                   if (!iterable)
- 232      return iterable.toArray()   if (iterable.toArray)
- 233      return iterable             if (_.isArray(iterable))
- 234      return slice.call(iterable) if (_.isArguments(iterable))
- 235      _.values(iterable)
- 236  
- 237  
- 238    # Return the number of elements in an object.
- 239    _.size: (obj) -> _.toArray(obj).length
- 240  
- 241  
- 242    # -------------------------- Array Functions: ------------------------------
- 243  
- 244    # Get the first element of an array. Passing "n" will return the first N
- 245    # values in the array. Aliased as "head". The "guard" check allows it to work
- 246    # with _.map.
- 247    _.first: (array, n, guard) ->
- 248      if n and not guard then slice.call(array, 0, n) else array[0]
- 249  
- 250  
- 251    # Returns everything but the first entry of the array. Aliased as "tail".
- 252    # Especially useful on the arguments object. Passing an "index" will return
- 253    # the rest of the values in the array from that index onward. The "guard"
- 254    # check allows it to work with _.map.
- 255    _.rest: (array, index, guard) ->
- 256      slice.call(array, if _.isUndefined(index) or guard then 1 else index)
- 257  
- 258  
- 259    # Get the last element of an array.
- 260    _.last: (array) -> array[array.length - 1]
- 261  
- 262  
- 263    # Trim out all falsy values from an array.
- 264    _.compact: (array) -> item for item in array when item
- 265  
- 266  
- 267    # Return a completely flattened version of an array.
- 268    _.flatten: (array) ->
- 269      _.reduce array, [], (memo, value) ->
- 270        return memo.concat(_.flatten(value)) if _.isArray value
- 271        memo.push value
- 272        memo
- 273  
- 274  
- 275    # Return a version of the array that does not contain the specified value(s).
- 276    _.without: (array) ->
- 277      values: _.rest arguments
- 278      val for val in _.toArray(array) when not _.include values, val
- 279  
- 280  
- 281    # Produce a duplicate-free version of the array. If the array has already
- 282    # been sorted, you have the option of using a faster algorithm.
- 283    _.uniq: (array, isSorted) ->
- 284      memo: []
- 285      for el, i in _.toArray array
- 286        memo.push el if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el))
- 287      memo
- 288  
- 289  
- 290    # Produce an array that contains every item shared between all the
- 291    # passed-in arrays.
- 292    _.intersect: (array) ->
- 293      rest: _.rest arguments
- 294      _.select _.uniq(array), (item) ->
- 295        _.all rest, (other) ->
- 296          _.indexOf(other, item) >= 0
- 297  
- 298  
- 299    # Zip together multiple lists into a single array -- elements that share
- 300    # an index go together.
- 301    _.zip: ->
- 302      length:  _.max _.pluck arguments, 'length'
- 303      results: new Array length
- 304      for i in [0...length]
- 305        results[i]: _.pluck arguments, String i
- 306      results
- 307  
- 308  
- 309    # If the browser doesn't supply us with indexOf (I'm looking at you, MSIE),
- 310    # we need this function. Return the position of the first occurence of an
- 311    # item in an array, or -1 if the item is not included in the array.
- 312    _.indexOf: (array, item) ->
- 313      return array.indexOf item if nativeIndexOf and array.indexOf is nativeIndexOf
- 314      i: 0; l: array.length
- 315      while l - i
- 316        if array[i] is item then return i else i++
- 317      -1
- 318  
- 319  
- 320    # Provide JavaScript 1.6's lastIndexOf, delegating to the native function,
- 321    # if possible.
- 322    _.lastIndexOf: (array, item) ->
- 323      return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf
- 324      i: array.length
- 325      while i
- 326        if array[i] is item then return i else i--
- 327      -1
- 328  
- 329  
- 330    # Generate an integer Array containing an arithmetic progression. A port of
- 331    # the native Python range() function. See:
- 332    # http://docs.python.org/library/functions.html#range
- 333    _.range: (start, stop, step) ->
- 334      a:        arguments
- 335      solo:     a.length <= 1
- 336      i: start: if solo then 0 else a[0]
- 337      stop:     if solo then a[0] else a[1]
- 338      step:     a[2] or 1
- 339      len:      Math.ceil((stop - start) / step)
- 340      return [] if len <= 0
- 341      range:    new Array len
- 342      idx:      0
- 343      while true
- 344        return range if (if step > 0 then i - stop else stop - i) >= 0
- 345        range[idx]: i
- 346        idx++
- 347        i+= step
- 348  
- 349  
- 350    # ----------------------- Function Functions: -----------------------------
- 351  
- 352    # Create a function bound to a given object (assigning 'this', and arguments,
- 353    # optionally). Binding with arguments is also known as 'curry'.
- 354    _.bind: (func, obj) ->
- 355      args: _.rest arguments, 2
- 356      -> func.apply obj or root, args.concat arguments
- 357  
- 358  
- 359    # Bind all of an object's methods to that object. Useful for ensuring that
- 360    # all callbacks defined on an object belong to it.
- 361    _.bindAll: (obj) ->
- 362      funcs: if arguments.length > 1 then _.rest(arguments) else _.functions(obj)
- 363      _.each funcs, (f) -> obj[f]: _.bind obj[f], obj
- 364      obj
- 365  
- 366  
- 367    # Delays a function for the given number of milliseconds, and then calls
- 368    # it with the arguments supplied.
- 369    _.delay: (func, wait) ->
- 370      args: _.rest arguments, 2
- 371      setTimeout((-> func.apply(func, args)), wait)
- 372  
- 373  
- 374    # Defers a function, scheduling it to run after the current call stack has
- 375    # cleared.
- 376    _.defer: (func) ->
- 377      _.delay.apply _, [func, 1].concat _.rest arguments
- 378  
- 379  
- 380    # Returns the first function passed as an argument to the second,
- 381    # allowing you to adjust arguments, run code before and after, and
- 382    # conditionally execute the original function.
- 383    _.wrap: (func, wrapper) ->
- 384      -> wrapper.apply wrapper, [func].concat arguments
- 385  
- 386  
- 387    # Returns a function that is the composition of a list of functions, each
- 388    # consuming the return value of the function that follows.
- 389    _.compose: ->
- 390      funcs: arguments
- 391      ->
- 392        args: arguments
- 393        for i in [(funcs.length - 1)..0]
- 394          args: [funcs[i].apply(this, args)]
- 395        args[0]
- 396  
- 397  
- 398    # ------------------------- Object Functions: ----------------------------
- 399  
- 400    # Retrieve the names of an object's properties.
- 401    _.keys: nativeKeys or (obj) ->
- 402      return _.range 0, obj.length if _.isArray(obj)
- 403      key for key, val of obj
- 404  
- 405  
- 406    # Retrieve the values of an object's properties.
- 407    _.values: (obj) ->
- 408      _.map obj, _.identity
- 409  
- 410  
- 411    # Return a sorted list of the function names available in Underscore.
- 412    _.functions: (obj) ->
- 413      _.filter(_.keys(obj), (key) -> _.isFunction(obj[key])).sort()
- 414  
- 415  
- 416    # Extend a given object with all of the properties in a source object.
- 417    _.extend: (destination, source) ->
- 418      (destination[key]: val) for key, val of source
- 419      destination
- 420  
- 421  
- 422    # Create a (shallow-cloned) duplicate of an object.
- 423    _.clone: (obj) ->
- 424      return obj.slice 0 if _.isArray obj
- 425      _.extend {}, obj
- 426  
- 427  
- 428    # Invokes interceptor with the obj, and then returns obj.
- 429    # The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
- 430    _.tap: (obj, interceptor) ->
- 431      interceptor obj
- 432      obj
- 433  
- 434  
- 435    # Perform a deep comparison to check if two objects are equal.
- 436    _.isEqual: (a, b) ->
- 437      # Check object identity.
- 438      return true if a is b
- 439      # Different types?
- 440      atype: typeof(a); btype: typeof(b)
- 441      return false if atype isnt btype
- 442      # Basic equality test (watch out for coercions).
- 443      return true if `a == b`
- 444      # One is falsy and the other truthy.
- 445      return false if (!a and b) or (a and !b)
- 446      # One of them implements an isEqual()?
- 447      return a.isEqual(b) if a.isEqual
- 448      # Check dates' integer values.
- 449      return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)
- 450      # Both are NaN?
- 451      return true if _.isNaN(a) and _.isNaN(b)
- 452      # Compare regular expressions.
- 453      if _.isRegExp(a) and _.isRegExp(b)
- 454        return a.source     is b.source and
- 455               a.global     is b.global and
- 456               a.ignoreCase is b.ignoreCase and
- 457               a.multiline  is b.multiline
- 458      # If a is not an object by this point, we can't handle it.
- 459      return false if atype isnt 'object'
- 460      # Check for different array lengths before comparing contents.
- 461      return false if a.length and (a.length isnt b.length)
- 462      # Nothing else worked, deep compare the contents.
- 463      aKeys: _.keys(a); bKeys: _.keys(b)
- 464      # Different object sizes?
- 465      return false if aKeys.length isnt bKeys.length
- 466      # Recursive comparison of contents.
- 467      (return false) for key, val of a when !_.isEqual(val, b[key])
- 468      true
- 469  
- 470  
- 471    # Is a given array or object empty?
- 472    _.isEmpty: (obj) ->
- 473      return obj.length is 0 if _.isArray obj
- 474      (return false) for key of obj when hasOwnProperty.call(obj, key)
- 475      true
- 476  
- 477  
- 478    # Is a given value a DOM element?
- 479    _.isElement:    (obj) -> obj and obj.nodeType is 1
- 480  
- 481  
- 482    # Is a given value an array?
- 483    _.isArray:      nativeIsArray or (obj) -> !!(obj and obj.concat and obj.unshift)
- 484  
- 485  
- 486    # Is a given variable an arguments object?
- 487    _.isArguments:  (obj) -> obj and _.isNumber(obj.length) and not obj.concat and
- 488                             not obj.substr and not obj.apply and not propertyIsEnumerable.call(obj, 'length')
- 489  
- 490  
- 491    # Is the given value a function?
- 492    _.isFunction:   (obj) -> !!(obj and obj.constructor and obj.call and obj.apply)
- 493  
- 494  
- 495    # Is the given value a string?
- 496    _.isString:     (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr))
- 497  
- 498  
- 499    # Is a given value a number?
- 500    _.isNumber:     (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]'
- 501  
- 502  
- 503    # Is a given value a boolean?
- 504    _.isBoolean:    (obj) -> obj is true or obj is false
- 505  
- 506  
- 507    # Is a given value a Date?
- 508    _.isDate:       (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)
- 509  
- 510  
- 511    # Is the given value a regular expression?
- 512    _.isRegExp:     (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))
- 513  
- 514  
- 515    # Is the given value NaN -- this one is interesting. NaN != NaN, and
- 516    # isNaN(undefined) == true, so we make sure it's a number first.
- 517    _.isNaN:        (obj) -> _.isNumber(obj) and window.isNaN(obj)
- 518  
- 519  
- 520    # Is a given value equal to null?
- 521    _.isNull:       (obj) -> obj is null
- 522  
- 523  
- 524    # Is a given variable undefined?
- 525    _.isUndefined:  (obj) -> typeof obj is 'undefined'
- 526  
- 527  
- 528    # -------------------------- Utility Functions: --------------------------
- 529  
- 530    # Run Underscore.js in noConflict mode, returning the '_' variable to its
- 531    # previous owner. Returns a reference to the Underscore object.
- 532    _.noConflict: ->
- 533      root._: previousUnderscore
- 534      this
- 535  
- 536  
- 537    # Keep the identity function around for default iterators.
- 538    _.identity: (value) -> value
- 539  
- 540  
- 541    # Run a function n times.
- 542    _.times: (n, iterator, context) ->
- 543      iterator.call(context, i) for i in [0...n]
- 544  
- 545  
- 546    # Break out of the middle of an iteration.
- 547    _.breakLoop: -> throw breaker
- 548  
- 549  
- 550    # Add your own custom functions to the Underscore object, ensuring that
- 551    # they're correctly added to the OOP wrapper as well.
- 552    _.mixin: (obj) ->
- 553      for name in _.functions(obj)
- 554        addToWrapper name, _[name]: obj[name]
- 555  
- 556  
- 557    # Generate a unique integer id (unique within the entire client session).
- 558    # Useful for temporary DOM ids.
- 559    idCounter: 0
- 560    _.uniqueId: (prefix) ->
- 561      (prefix or '') + idCounter++
- 562  
- 563  
- 564    # By default, Underscore uses ERB-style template delimiters, change the
- 565    # following template settings to use alternative delimiters.
- 566    _.templateSettings: {
- 567      start:        '<%'
- 568      end:          '%>'
- 569      interpolate:  /<%=(.+?)%>/g
- 570    }
- 571  
- 572  
- 573    # JavaScript templating a-la ERB, pilfered from John Resig's
- 574    # "Secrets of the JavaScript Ninja", page 83.
- 575    # Single-quote fix from Rick Strahl's version.
- 576    _.template: (str, data) ->
- 577      c: _.templateSettings
- 578      endMatch: new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g")
- 579      fn: new Function 'obj',
- 580        'var p=[],print=function(){p.push.apply(p,arguments);};' +
- 581        'with(obj){p.push(\'' +
- 582        str.replace(/[\r\t\n]/g, " ")
- 583           .replace(endMatch,"\t")
- 584           .split("'").join("\\'")
- 585           .split("\t").join("'")
- 586           .replace(c.interpolate, "',$1,'")
- 587           .split(c.start).join("');")
- 588           .split(c.end).join("p.push('") +
- 589           "');}return p.join('');"
- 590      if data then fn(data) else fn
- 591  
- 592  
- 593    # ------------------------------- Aliases ----------------------------------
- 594  
- 595    _.forEach: _.each
- 596    _.foldl:   _.inject:      _.reduce
- 597    _.foldr:   _.reduceRight
- 598    _.select:  _.filter
- 599    _.all:     _.every
- 600    _.any:     _.some
- 601    _.head:    _.first
- 602    _.tail:    _.rest
- 603    _.methods: _.functions
- 604  
- 605  
- 606    # ------------------------ Setup the OOP Wrapper: --------------------------
- 607  
- 608    # If Underscore is called as a function, it returns a wrapped object that
- 609    # can be used OO-style. This wrapper holds altered versions of all the
- 610    # underscore functions. Wrapped objects may be chained.
- 611    wrapper: (obj) ->
- 612      this._wrapped: obj
- 613      this
- 614  
- 615  
- 616    # Helper function to continue chaining intermediate results.
- 617    result: (obj, chain) ->
- 618      if chain then _(obj).chain() else obj
- 619  
- 620  
- 621    # A method to easily add functions to the OOP wrapper.
- 622    addToWrapper: (name, func) ->
- 623      wrapper.prototype[name]: ->
- 624        args: _.toArray arguments
- 625        unshift.call args, this._wrapped
- 626        result func.apply(_, args), this._chain
- 627  
- 628  
- 629    # Add all of the Underscore functions to the wrapper object.
- 630    _.mixin _
- 631  
- 632  
- 633    # Add all mutator Array functions to the wrapper.
- 634    _.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) ->
- 635      method: Array.prototype[name]
- 636      wrapper.prototype[name]: ->
- 637        method.apply(this._wrapped, arguments)
- 638        result(this._wrapped, this._chain)
- 639  
- 640  
- 641    # Add all accessor Array functions to the wrapper.
- 642    _.each ['concat', 'join', 'slice'], (name) ->
- 643      method: Array.prototype[name]
- 644      wrapper.prototype[name]: ->
- 645        result(method.apply(this._wrapped, arguments), this._chain)
- 646  
- 647  
- 648    # Start chaining a wrapped Underscore object.
- 649    wrapper::chain: ->
- 650      this._chain: true
- 651      this
- 652  
- 653  
- 654    # Extracts the result from a wrapped and chained object.
- 655    wrapper::value: -> this._wrapped
-
- - diff --git a/examples/underscore.coffee b/examples/underscore.coffee index 442c033596..03f11e721a 100644 --- a/examples/underscore.coffee +++ b/examples/underscore.coffee @@ -1,28 +1,33 @@ - # Underscore.coffee - # (c) 2010 Jeremy Ashkenas, DocumentCloud Inc. - # Underscore is freely distributable under the terms of the MIT license. - # Portions of Underscore are inspired by or borrowed from Prototype.js, - # Oliver Steele's Functional, and John Resig's Micro-Templating. + # **Underscore.coffee + # (c) 2010 Jeremy Ashkenas, DocumentCloud Inc.** + # Underscore is freely distributable under the terms of the + # [MIT license](http://en.wikipedia.org/wiki/MIT_License). + # Portions of Underscore are inspired by or borrowed from + # [Prototype.js](http://prototypejs.org/api), Oliver Steele's + # [Functional](http://osteele.com), and John Resig's + # [Micro-Templating](http://ejohn.com). # For all details and documentation: # http://documentcloud.github.com/underscore/ - # ------------------------- Baseline setup --------------------------------- + # Baseline setup + # -------------- - # Establish the root object, "window" in the browser, or "global" on the server. + # Establish the root object, `window` in the browser, or `global` on the server. root: this - # Save the previous value of the "_" variable. + # Save the previous value of the `_` variable. previousUnderscore: root._ # Establish the object that gets thrown to break out of a loop iteration. + # `StopIteration` is SOP on Mozilla. breaker: if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration - # Quick regexp-escaping function, because JS doesn't have RegExp.escape(). + # Helper function to escape **RegExp** contents, because JS doesn't have one. escapeRegExp: (string) -> string.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1') @@ -31,7 +36,7 @@ ObjProto: Object.prototype - #Create quick reference variables for speed access to core prototypes. + # Create quick reference variables for speed access to core prototypes. slice: ArrayProto.slice unshift: ArrayProto.unshift toString: ObjProto.toString @@ -39,7 +44,7 @@ propertyIsEnumerable: ObjProto.propertyIsEnumerable - # All ECMA5 native implementations we hope to use are declared here. + # All **ECMA5** native implementations we hope to use are declared here. nativeForEach: ArrayProto.forEach nativeMap: ArrayProto.map nativeReduce: ArrayProto.reduce @@ -57,7 +62,7 @@ _: (obj) -> new wrapper(obj) - # Export the Underscore object for CommonJS. + # Export the Underscore object for **CommonJS**. if typeof(exports) != 'undefined' then exports._: _ @@ -69,10 +74,11 @@ _.VERSION: '0.6.0' - # ------------------------ Collection Functions: --------------------------- + # Collection Functions + # -------------------- - # The cornerstone, an each implementation. - # Handles objects implementing forEach, arrays, and raw objects. + # The cornerstone, an **each** implementation. + # Handles objects implementing **forEach**, arrays, and raw objects. _.each: (obj, iterator, context) -> try if nativeForEach and obj.forEach is nativeForEach @@ -87,7 +93,7 @@ # Return the results of applying the iterator to each element. Use JavaScript - # 1.6's version of map, if possible. + # 1.6's version of **map**, if possible. _.map: (obj, iterator, context) -> return obj.map(iterator, context) if nativeMap and obj.map is nativeMap results: [] @@ -96,8 +102,8 @@ results - # Reduce builds up a single result from a list of values. Also known as - # inject, or foldl. Uses JavaScript 1.8's version of reduce, if possible. + # **Reduce** builds up a single result from a list of values. Also known as + # **inject**, or **foldl**. Uses JavaScript 1.8's version of **reduce**, if possible. _.reduce: (obj, memo, iterator, context) -> return obj.reduce(_.bind(iterator, context), memo) if nativeReduce and obj.reduce is nativeReduce _.each obj, (value, index, list) -> @@ -105,8 +111,8 @@ memo - # The right-associative version of reduce, also known as foldr. Uses - # JavaScript 1.8's version of reduceRight, if available. + # The right-associative version of **reduce**, also known as **foldr**. Uses + # JavaScript 1.8's version of **reduceRight**, if available. _.reduceRight: (obj, memo, iterator, context) -> return obj.reduceRight(_.bind(iterator, context), memo) if nativeReduceRight and obj.reduceRight is nativeReduceRight _.each _.clone(_.toArray(obj)).reverse(), (value, index) -> @@ -125,7 +131,7 @@ # Return all the elements that pass a truth test. Use JavaScript 1.6's - # filter(), if it exists. + # **filter**, if it exists. _.filter: (obj, iterator, context) -> return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter results: [] @@ -143,7 +149,7 @@ # Determine whether all of the elements match a truth test. Delegate to - # JavaScript 1.6's every(), if it is present. + # JavaScript 1.6's **every**, if it is present. _.every: (obj, iterator, context) -> iterator ||= _.identity return obj.every iterator, context if nativeEvery and obj.every is nativeEvery @@ -154,7 +160,7 @@ # Determine if at least one element in the object matches a truth test. Use - # JavaScript 1.6's some(), if it exists. + # JavaScript 1.6's **some**, if it exists. _.some: (obj, iterator, context) -> iterator ||= _.identity return obj.some iterator, context if nativeSome and obj.some is nativeSome @@ -165,7 +171,7 @@ # Determine if a given value is included in the array or object, - # based on '==='. + # based on `===`. _.include: (obj, target) -> return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf for key, val of obj @@ -179,7 +185,7 @@ (if method then val[method] else val).apply(val, args) for val in obj - # Convenience version of a common use case of map: fetching a property. + # Convenience version of a common use case of **map**: fetching a property. _.pluck: (obj, key) -> _.map(obj, (val) -> val[key]) @@ -239,19 +245,20 @@ _.size: (obj) -> _.toArray(obj).length - # -------------------------- Array Functions: ------------------------------ + # Array Functions + # --------------- - # Get the first element of an array. Passing "n" will return the first N - # values in the array. Aliased as "head". The "guard" check allows it to work - # with _.map. + # Get the first element of an array. Passing `n` will return the first N + # values in the array. Aliased as **head**. The `guard` check allows it to work + # with **map**. _.first: (array, n, guard) -> if n and not guard then slice.call(array, 0, n) else array[0] - # Returns everything but the first entry of the array. Aliased as "tail". - # Especially useful on the arguments object. Passing an "index" will return - # the rest of the values in the array from that index onward. The "guard" - # check allows it to work with _.map. + # Returns everything but the first entry of the array. Aliased as **tail**. + # Especially useful on the arguments object. Passing an `index` will return + # the rest of the values in the array from that index onward. The `guard` + # check allows it to work with **map**. _.rest: (array, index, guard) -> slice.call(array, if _.isUndefined(index) or guard then 1 else index) @@ -306,7 +313,7 @@ results - # If the browser doesn't supply us with indexOf (I'm looking at you, MSIE), + # If the browser doesn't supply us with **indexOf** (I'm looking at you, MSIE), # we need this function. Return the position of the first occurence of an # item in an array, or -1 if the item is not included in the array. _.indexOf: (array, item) -> @@ -317,7 +324,7 @@ -1 - # Provide JavaScript 1.6's lastIndexOf, delegating to the native function, + # Provide JavaScript 1.6's **lastIndexOf**, delegating to the native function, # if possible. _.lastIndexOf: (array, item) -> return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf @@ -328,8 +335,7 @@ # Generate an integer Array containing an arithmetic progression. A port of - # the native Python range() function. See: - # http://docs.python.org/library/functions.html#range + # [the native Python **range** function](http://docs.python.org/library/functions.html#range). _.range: (start, stop, step) -> a: arguments solo: a.length <= 1 @@ -347,10 +353,11 @@ i+= step - # ----------------------- Function Functions: ----------------------------- + # Function Functions + # ------------------ - # Create a function bound to a given object (assigning 'this', and arguments, - # optionally). Binding with arguments is also known as 'curry'. + # Create a function bound to a given object (assigning `this`, and arguments, + # optionally). Binding with arguments is also known as **curry**. _.bind: (func, obj) -> args: _.rest arguments, 2 -> func.apply obj or root, args.concat arguments @@ -395,7 +402,8 @@ args[0] - # ------------------------- Object Functions: ---------------------------- + # Object Functions + # ---------------- # Retrieve the names of an object's properties. _.keys: nativeKeys or (obj) -> @@ -443,7 +451,7 @@ return true if `a == b` # One is falsy and the other truthy. return false if (!a and b) or (a and !b) - # One of them implements an isEqual()? + # One of them implements an `isEqual()`? return a.isEqual(b) if a.isEqual # Check dates' integer values. return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b) @@ -512,8 +520,8 @@ _.isRegExp: (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false)) - # Is the given value NaN -- this one is interesting. NaN != NaN, and - # isNaN(undefined) == true, so we make sure it's a number first. + # Is the given value NaN -- this one is interesting. `NaN != NaN`, and + # `isNaN(undefined) == true`, so we make sure it's a number first. _.isNaN: (obj) -> _.isNumber(obj) and window.isNaN(obj) @@ -525,9 +533,10 @@ _.isUndefined: (obj) -> typeof obj is 'undefined' - # -------------------------- Utility Functions: -------------------------- + # Utility Functions + # ----------------- - # Run Underscore.js in noConflict mode, returning the '_' variable to its + # Run Underscore.js in noConflict mode, returning the `_` variable to its # previous owner. Returns a reference to the Underscore object. _.noConflict: -> root._: previousUnderscore @@ -538,7 +547,7 @@ _.identity: (value) -> value - # Run a function n times. + # Run a function `n` times. _.times: (n, iterator, context) -> iterator.call(context, i) for i in [0...n] @@ -561,7 +570,7 @@ (prefix or '') + idCounter++ - # By default, Underscore uses ERB-style template delimiters, change the + # By default, Underscore uses **ERB**-style template delimiters, change the # following template settings to use alternative delimiters. _.templateSettings: { start: '<%' @@ -570,9 +579,9 @@ } - # JavaScript templating a-la ERB, pilfered from John Resig's - # "Secrets of the JavaScript Ninja", page 83. - # Single-quote fix from Rick Strahl's version. + # JavaScript templating a-la **ERB**, pilfered from John Resig's + # *Secrets of the JavaScript Ninja*, page 83. + # Single-quote fix from Rick Strahl. _.template: (str, data) -> c: _.templateSettings endMatch: new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g") @@ -590,7 +599,8 @@ if data then fn(data) else fn - # ------------------------------- Aliases ---------------------------------- + # Aliases + # ------- _.forEach: _.each _.foldl: _.inject: _.reduce @@ -603,7 +613,8 @@ _.methods: _.functions - # ------------------------ Setup the OOP Wrapper: -------------------------- + # Setup the OOP Wrapper + # --------------------- # If Underscore is called as a function, it returns a wrapped object that # can be used OO-style. This wrapper holds altered versions of all the diff --git a/examples/web_server.coffee b/examples/web_server.coffee index 8bf66d1d5f..5ee5c7af47 100644 --- a/examples/web_server.coffee +++ b/examples/web_server.coffee @@ -1,5 +1,6 @@ # Contributed by Jason Huggins +sys: require 'sys' http: require 'http' server: http.createServer (req, res) -> @@ -9,4 +10,4 @@ server: http.createServer (req, res) -> server.listen 3000 -puts "Server running at http://localhost:3000/" +sys.puts "Server running at http://localhost:3000/" diff --git a/extras/CoffeeScript.tmbundle/CoffeeScript.tmPreferences b/extras/CoffeeScript.tmbundle/CoffeeScript.tmPreferences deleted file mode 100644 index bc80ac941f..0000000000 --- a/extras/CoffeeScript.tmbundle/CoffeeScript.tmPreferences +++ /dev/null @@ -1,24 +0,0 @@ - - - - - name - comments - scope - source.coffee - settings - - shellVariables - - - name - TM_COMMENT_START - value - # - - - - uuid - 0A92C6F6-4D73-4859-B38C-4CC19CBC191F - - diff --git a/extras/CoffeeScript.tmbundle/Macros/Overwrite '}' in ${ __ }.tmMacro b/extras/CoffeeScript.tmbundle/Macros/Overwrite '}' in ${ __ }.tmMacro deleted file mode 100644 index cc7c404abd..0000000000 --- a/extras/CoffeeScript.tmbundle/Macros/Overwrite '}' in ${ __ }.tmMacro +++ /dev/null @@ -1,54 +0,0 @@ - - - - - commands - - - command - moveRightAndModifySelection: - - - argument - - action - replaceAll - findInProjectIgnoreCase - - findString - ((?m:.){2,})|\}|([^}]) - ignoreCase - - regularExpression - - replaceAllScope - selection - replaceString - $1}$2 - wrapAround - - - command - findWithOptions: - - - command - moveLeft: - - - command - moveRight: - - - keyEquivalent - } - name - Overwrite '}' in ${ .. } - scope - source.coffee string.quoted.double source.coffee.embedded - scopeType - local - uuid - D7ADBF4B-B25B-4CF6-8FC0-C4FB0C3DBE64 - - diff --git a/extras/CoffeeScript.tmbundle/Preferences/CoffeeScript.tmPreferences b/extras/CoffeeScript.tmbundle/Preferences/CoffeeScript.tmPreferences deleted file mode 100644 index bc80ac941f..0000000000 --- a/extras/CoffeeScript.tmbundle/Preferences/CoffeeScript.tmPreferences +++ /dev/null @@ -1,24 +0,0 @@ - - - - - name - comments - scope - source.coffee - settings - - shellVariables - - - name - TM_COMMENT_START - value - # - - - - uuid - 0A92C6F6-4D73-4859-B38C-4CC19CBC191F - - diff --git "a/extras/CoffeeScript.tmbundle/Snippets/Embedded Code \342\200\224 ${\342\200\246}.tmSnippet" "b/extras/CoffeeScript.tmbundle/Snippets/Embedded Code \342\200\224 ${\342\200\246}.tmSnippet" deleted file mode 100644 index 93cd226c64..0000000000 --- "a/extras/CoffeeScript.tmbundle/Snippets/Embedded Code \342\200\224 ${\342\200\246}.tmSnippet" +++ /dev/null @@ -1,16 +0,0 @@ - - - - - content - \${${1:$TM_SELECTED_TEXT}} - keyEquivalent - $ - name - Embedded Code — ${…} - scope - string.quoted.double.coffee - string source - uuid - 17C8BFF6-25F2-4F00-8E7E-768D3D186A23 - - diff --git a/extras/CoffeeScript.tmbundle/Symbol List: Method.tmPreferences b/extras/CoffeeScript.tmbundle/Symbol List: Method.tmPreferences deleted file mode 100644 index d83aebd2c7..0000000000 --- a/extras/CoffeeScript.tmbundle/Symbol List: Method.tmPreferences +++ /dev/null @@ -1,17 +0,0 @@ - - - - - name - Symbol List: Method - scope - source.coffee entity.name.type.instance - settings - - showInSymbolList - 0 - - uuid - B087AF2F-8946-4EA9-8409-49E7C4A2EEF0 - - diff --git a/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage b/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage deleted file mode 100644 index d14239d2e7..0000000000 --- a/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage +++ /dev/null @@ -1,576 +0,0 @@ - - - - - comment - CoffeeScript Syntax: version 1 - fileTypes - - coffee - Cakefile - - foldingStartMarker - ^.*[:=] \{[^\}]*$ - foldingStopMarker - \s*\} - name - CoffeeScript - patterns - - - captures - - 1 - - name - variable.parameter.function.coffee - - 2 - - name - variable.parameter.function.coffee - - 4 - - name - variable.parameter.function.coffee - - 5 - - name - storage.type.function.coffee - - - comment - match stuff like: a -> … - match - (\()([a-zA-Z0-9_?.\$]*(,\s*[a-zA-Z0-9_?.\$]+)*)(\))\s*((=|-)>) - name - meta.inline.function.coffee - - - captures - - 1 - - name - keyword.operator.new.coffee - - 2 - - name - entity.name.type.instance.coffee - - - match - (new)\s+(\w+(?:\.\w*)?) - name - meta.class.instance.constructor - - - begin - ("""|''') - beginCaptures - - 0 - - name - punctuation.definition.string.begin.coffee - - - end - ("""|''') - endCaptures - - 0 - - name - punctuation.definition.string.end.coffee - - - name - string.quoted.heredoc.coffee - - - begin - ` - beginCaptures - - 0 - - name - punctuation.definition.string.begin.coffee - - - end - ` - endCaptures - - 0 - - name - punctuation.definition.string.end.coffee - - - name - string.quoted.script.coffee - patterns - - - match - \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.) - name - constant.character.escape.coffee - - - - - captures - - 1 - - name - punctuation.definition.comment.coffee - - - match - (#).*$\n? - name - comment.line.coffee - - - begin - (?<=[=(:]|^|return)\s*(/)(?![/*+{}?]) - beginCaptures - - 1 - - name - punctuation.definition.string.begin.coffee - - - end - (/)[igm]* - endCaptures - - 1 - - name - punctuation.definition.string.end.coffee - - - name - string.regexp.coffee - patterns - - - match - \\. - name - constant.character.escape.coffee - - - - - match - \b(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while)\b - name - keyword.control.coffee - - - captures - - 1 - - name - variable.assignment.coffee - - - match - (?=[a-zA-Z\$_])([a-zA-Z\$_](\w|\$|\.)*\s*(?=(?!\::)\:(?!(\s*\(.*\))?\s*((=|-)>)))) - name - variable.assignment.coffee - - - begin - (\[)(?=.*?\]\s*:) - beginCaptures - - 0 - - name - keyword.operator.coffee - - - end - (\]\s*:) - endCaptures - - 0 - - name - keyword.operator.coffee - - - name - meta.variable.assignment.destructured.coffee - patterns - - - include - #variable_name - - - include - #instance_variable - - - include - #single_quoted_string - - - include - #double_quoted_string - - - include - #numeric - - - - - captures - - 1 - - name - entity.name.function.coffee - - - match - (?=[a-zA-Z\$_])([a-zA-Z\$_](\w|\$|:|\.)*\s*(?=\:(\s*\(.*\))?\s*((=|-)>))) - name - meta.function.coffee - - - match - (=|-)> - name - storage.type.function.coffee - - - match - \b(true|on|yes)\b - name - constant.language.boolean.true.coffee - - - match - \b(false|off|no)\b - name - constant.language.boolean.false.coffee - - - match - \bnull\b - name - constant.language.null.coffee - - - match - \b(super|this|extends)\b - name - variable.language.coffee - - - captures - - 1 - - name - storage.type.class.coffee - - 2 - - name - entity.name.type.class.coffee - - 3 - - name - entity.other.inherited-class.coffee - - 4 - - name - keyword.control.inheritance.coffee - - - match - (class)\s+([a-zA-Z\$_]\w+)(\s+(extends)\s+[a-zA-Z\$_]\w*)? - name - meta.class.coffee - - - match - \b(debugger|\\)\b - name - keyword.other.coffee - - - match - !|%|&|\*|\/|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=|\b(instanceof|new|delete|typeof|and|or|is|isnt|not)\b - name - keyword.operator.coffee - - - match - \b(Infinity|NaN|undefined)\b - name - constant.language.coffee - - - match - \; - name - punctuation.terminator.statement.coffee - - - match - ,[ |\t]* - name - meta.delimiter.object.comma.coffee - - - match - \. - name - meta.delimiter.method.period.coffee - - - match - \{|\} - name - meta.brace.curly.coffee - - - match - \(|\) - name - meta.brace.round.coffee - - - match - \[|\]\s* - name - meta.brace.square.coffee - - - include - #instance_variable - - - include - #single_quoted_string - - - include - #double_quoted_string - - - include - #numeric - - - repository - - double_quoted_string - - patterns - - - begin - " - beginCaptures - - 0 - - name - punctuation.definition.string.begin.coffee - - - end - " - endCaptures - - 0 - - name - punctuation.definition.string.end.coffee - - - name - string.quoted.double.coffee - patterns - - - match - \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.) - name - constant.character.escape.coffee - - - include - #interpolated_coffee - - - - - - instance_variable - - patterns - - - match - (@)([a-zA-Z_\$]\w*)? - name - variable.other.readwrite.instance.coffee - - - - interpolated_coffee - - patterns - - - begin - \$\{ - captures - - 0 - - name - punctuation.section.embedded.coffee - - - end - \} - name - source.coffee.embedded.source - patterns - - - include - $self - - - - - captures - - 1 - - name - punctuation.definition.variable.coffee - - - match - (\$)@[a-zA-Z_]\w*(\.\w+)* - name - variable.other.readwrite.coffee - - - captures - - 1 - - name - punctuation.definition.variable.coffee - - - match - (\$)(?!@)[a-zA-Z_]\w*(\.\w+)* - name - source.coffee.embedded.source - - - - numeric - - patterns - - - match - (?<!\$)\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?))\b - name - constant.numeric.coffee - - - - single_quoted_string - - patterns - - - begin - ' - beginCaptures - - 0 - - name - punctuation.definition.string.begin.coffee - - - end - ' - endCaptures - - 0 - - name - punctuation.definition.string.end.coffee - - - name - string.quoted.single.coffee - patterns - - - match - \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.) - name - constant.character.escape.coffee - - - - - - variable_name - - patterns - - - captures - - 1 - - name - variable.assignment.coffee - - - match - ([a-zA-Z\$_]\w*(\.\w+)*) - name - variable.assignment.coffee - - - - - scopeName - source.coffee - uuid - 5B520980-A7D5-4E10-8582-1A4C889A8DE5 - - diff --git a/extras/CoffeeScript.tmbundle/info.plist b/extras/CoffeeScript.tmbundle/info.plist deleted file mode 100644 index 7a63123f07..0000000000 --- a/extras/CoffeeScript.tmbundle/info.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - name - CoffeeScript - uuid - A46E4382-F1AC-405B-8F22-65FF470F34D7 - - diff --git a/extras/EXTRAS b/extras/EXTRAS index db2cc522e7..bb3cce2ed5 100644 --- a/extras/EXTRAS +++ b/extras/EXTRAS @@ -6,13 +6,8 @@ inline script tags of type "text/coffeescript" on the page. It will compile and evaluate all of the scripts in order. -This folder also includes rough cuts of CoffeeScript syntax highlighters for -TextMate and Vim. Improvements to their lexing ability are always welcome. - -To install the TextMate bundle, drop it into: - ~/Library/Application Support/TextMate/Bundles - -To install the Vim highlighter, copy "coffee.vim" into the "syntax" directory of +This folder also includes a CoffeeScript syntax highlighter for Vim. +To install, copy "coffee.vim" into the "syntax" directory of your vim72, and enable it in either of the following two ways: * Manually, by running `:set syntax=coffee` diff --git a/extras/coffee-script.js b/extras/coffee-script.js index 91b5d9dae0..0e630f1d4f 100644 --- a/extras/coffee-script.js +++ b/extras/coffee-script.js @@ -1 +1 @@ -(function(){var BALANCED_PAIRS,EXPRESSION_CLOSE,EXPRESSION_END,EXPRESSION_START,IMPLICIT_BLOCK,IMPLICIT_CALL,IMPLICIT_END,IMPLICIT_FUNC,INVERSES,Rewriter,SINGLE_CLOSERS,SINGLE_LINERS,_a,_b,_c,_d,_e,_f,_g,_h,_i,_j,_k,include,pair;var __hasProp=Object.prototype.hasOwnProperty;if(!((typeof process!=="undefined"&&process!==null))){this.exports=this}exports.Rewriter=(function(){Rewriter=function Rewriter(){};Rewriter.prototype.rewrite=function rewrite(tokens){this.tokens=tokens;this.adjust_comments();this.remove_leading_newlines();this.remove_mid_expression_newlines();this.close_open_calls_and_indexes();this.add_implicit_indentation();this.add_implicit_parentheses();this.ensure_balance(BALANCED_PAIRS);this.rewrite_closing_parens();return this.tokens};Rewriter.prototype.scan_tokens=function scan_tokens(block){var i,move;i=0;while(true){if(!(this.tokens[i])){break}move=block(this.tokens[i-1],this.tokens[i],this.tokens[i+1],i);i+=move}return true};Rewriter.prototype.adjust_comments=function adjust_comments(){return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var after;if(!(token[0]==="COMMENT")){return 1}after=this.tokens[i+2];if(after&&after[0]==="INDENT"){this.tokens.splice(i+2,1);this.tokens.splice(i,0,after);return 1}else{if(prev&&prev[0]!=="TERMINATOR"&&prev[0]!=="INDENT"&&prev[0]!=="OUTDENT"){this.tokens.splice(i,0,["TERMINATOR","\n",prev[2]]);return 2}else{return 1}}};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.remove_leading_newlines=function remove_leading_newlines(){var _a;_a=[];while(this.tokens[0][0]==="TERMINATOR"){_a.push(this.tokens.shift())}return _a};Rewriter.prototype.remove_mid_expression_newlines=function remove_mid_expression_newlines(){return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){if(!(post&&include(EXPRESSION_CLOSE,post[0])&&token[0]==="TERMINATOR")){return 1}this.tokens.splice(i,1);return 0};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.close_open_calls_and_indexes=function close_open_calls_and_indexes(){var brackets,parens;parens=[0];brackets=[0];return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var _a;if((_a=token[0])==="CALL_START"){parens.push(0)}else{if(_a==="INDEX_START"){brackets.push(0)}else{if(_a==="("){parens[parens.length-1]+=1}else{if(_a==="["){brackets[brackets.length-1]+=1}else{if(_a===")"){if(parens[parens.length-1]===0){parens.pop();token[0]="CALL_END"}else{parens[parens.length-1]-=1}}else{if(_a==="]"){if(brackets[brackets.length-1]===0){brackets.pop();token[0]="INDEX_END"}else{brackets[brackets.length-1]-=1}}}}}}}return 1};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.add_implicit_parentheses=function add_implicit_parentheses(){var stack;stack=[0];return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var _a,_b,_c,_d,idx,last,size,stack_pointer,tag,tmp;tag=token[0];if(tag==="INDENT"){stack.push(0)}if(tag==="OUTDENT"){last=stack.pop();stack[stack.length-1]+=last}if(!(typeof post!=="undefined"&&post!==null)||include(IMPLICIT_END,tag)){if(tag==="INDENT"&&prev&&include(IMPLICIT_BLOCK,prev[0])){return 1}if(stack[stack.length-1]>0||tag==="INDENT"){idx=tag==="OUTDENT"?i+1:i;stack_pointer=tag==="INDENT"?2:1;_c=0;_d=stack[stack.length-stack_pointer];for(_b=0,tmp=_c;(_c<=_d?tmp<_d:tmp>_d);(_c<=_d?tmp+=1:tmp-=1),_b++){this.tokens.splice(idx,0,["CALL_END",")",token[2]])}size=stack[stack.length-stack_pointer]+1;stack[stack.length-stack_pointer]=0;return size}}if(!(prev&&include(IMPLICIT_FUNC,prev[0])&&include(IMPLICIT_CALL,tag))){return 1}this.tokens.splice(i,0,["CALL_START","(",token[2]]);stack[stack.length-1]+=1;return 2};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.add_implicit_indentation=function add_implicit_indentation(){return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var idx,insertion,parens,pre,starter,tok;if(!(include(SINGLE_LINERS,token[0])&&post[0]!=="INDENT"&&!(token[0]==="ELSE"&&post[0]==="IF"))){return 1}starter=token[0];this.tokens.splice(i+1,0,["INDENT",2,token[2]]);idx=i+1;parens=0;while(true){idx+=1;tok=this.tokens[idx];pre=this.tokens[idx-1];if((!tok||(include(SINGLE_CLOSERS,tok[0])&&tok[1]!==";")||(tok[0]===")"&&parens===0))&&!(starter==="ELSE"&&tok[0]==="ELSE")){insertion=pre[0]===","?idx-1:idx;this.tokens.splice(insertion,0,["OUTDENT",2,token[2]]);break}if(tok[0]==="("){parens+=1}if(tok[0]===")"){parens-=1}}if(!(token[0]==="THEN")){return 1}this.tokens.splice(i,1);return 0};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.ensure_balance=function ensure_balance(pairs){var _a,_b,key,levels,unclosed,value;levels={};this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var _a,_b,_c,_d,close,open,pair;_a=pairs;for(_b=0,_c=_a.length;_b<_c;_b++){pair=_a[_b];_d=pair;open=_d[0];close=_d[1];levels[open]=levels[open]||0;if(token[0]===open){levels[open]+=1}if(token[0]===close){levels[open]-=1}if(levels[open]<0){throw new Error("too many "+(token[1])+" on line "+(token[2]+1))}}return 1};return(function(){return __func.apply(__this,arguments)})})(this));unclosed=(function(){_a=[];_b=levels;for(key in _b){if(__hasProp.call(_b,key)){value=_b[key];if(value>0){_a.push(key)}}}return _a}).call(this);if(unclosed.length){throw new Error("unclosed "+(unclosed[0]))}};Rewriter.prototype.rewrite_closing_parens=function rewrite_closing_parens(){var _a,debt,key,stack,val;stack=[];debt={};_a=INVERSES;for(key in _a){if(__hasProp.call(_a,key)){val=_a[key];((debt[key]=0))}}return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var inv,match,mtag,tag;tag=token[0];inv=INVERSES[token[0]];if(include(EXPRESSION_START,tag)){stack.push(token);return 1}else{if(include(EXPRESSION_END,tag)){if(debt[inv]>0){debt[inv]-=1;this.tokens.splice(i,1);return 0}else{match=stack.pop();mtag=match[0];if(tag===INVERSES[mtag]){return 1}debt[mtag]+=1;val=mtag==="INDENT"?match[1]:INVERSES[mtag];this.tokens.splice(i,0,[INVERSES[mtag],val]);return 1}}else{return 1}}};return(function(){return __func.apply(__this,arguments)})})(this))};return Rewriter}).call(this);BALANCED_PAIRS=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["PARAM_START","PARAM_END"],["CALL_START","CALL_END"],["INDEX_START","INDEX_END"],["SOAKED_INDEX_START","SOAKED_INDEX_END"]];INVERSES={};_a=BALANCED_PAIRS;for(_b=0,_c=_a.length;_b<_c;_b++){pair=_a[_b];INVERSES[pair[0]]=pair[1];INVERSES[pair[1]]=pair[0]}EXPRESSION_START=(function(){_d=[];_e=BALANCED_PAIRS;for(_f=0,_g=_e.length;_f<_g;_f++){pair=_e[_f];_d.push(pair[0])}return _d}).call(this);EXPRESSION_END=(function(){_h=[];_i=BALANCED_PAIRS;for(_j=0,_k=_i.length;_j<_k;_j++){pair=_i[_j];_h.push(pair[1])}return _h}).call(this);EXPRESSION_CLOSE=["CATCH","WHEN","ELSE","FINALLY"].concat(EXPRESSION_END);IMPLICIT_FUNC=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END"];IMPLICIT_CALL=["IDENTIFIER","NUMBER","STRING","JS","REGEX","NEW","PARAM_START","TRY","DELETE","TYPEOF","SWITCH","TRUE","FALSE","YES","NO","ON","OFF","!","!!","NOT","@","->","=>","[","(","{"];IMPLICIT_BLOCK=["->","=>","{","[",","];IMPLICIT_END=["IF","UNLESS","FOR","WHILE","TERMINATOR","INDENT","OUTDENT"];SINGLE_LINERS=["ELSE","->","=>","TRY","FINALLY","THEN"];SINGLE_CLOSERS=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"];include=function include(list,value){return list.indexOf(value)>=0}})();(function(){var ACCESSORS,ASSIGNMENT,BEFORE_WHEN,CALLABLE,CODE,COFFEE_KEYWORDS,COMMENT,COMMENT_CLEANER,HEREDOC,HEREDOC_INDENT,IDENTIFIER,INTERPOLATION,JS_CLEANER,JS_FORBIDDEN,JS_KEYWORDS,KEYWORDS,LAST_DENT,LAST_DENTS,Lexer,MULTILINER,MULTI_DENT,NOT_REGEX,NO_NEWLINE,NUMBER,OPERATOR,REGEX,RESERVED,Rewriter,STRING_NEWLINES,WHITESPACE,compact,count,include,starts;if((typeof process!=="undefined"&&process!==null)){Rewriter=require("./rewriter").Rewriter}else{this.exports=this;Rewriter=this.Rewriter}exports.Lexer=(function(){Lexer=function Lexer(){};Lexer.prototype.tokenize=function tokenize(code,options){var o;o=options||{};this.code=code;this.i=0;this.line=o.line||0;this.indent=0;this.indents=[];this.tokens=[];while(this.ithis.indent){if(no_newlines){return this.suppress_newlines()}diff=size-this.indent;this.token("INDENT",diff);this.indents.push(diff)}else{this.outdent_token(this.indent-size,no_newlines)}}this.indent=size;return true};Lexer.prototype.outdent_token=function outdent_token(move_out,no_newlines){var last_indent;while(move_out>0&&this.indents.length){last_indent=this.indents.pop();this.token("OUTDENT",last_indent);move_out-=last_indent}if(!(this.tag()==="TERMINATOR"||no_newlines)){this.token("TERMINATOR","\n")}return true};Lexer.prototype.whitespace_token=function whitespace_token(){var prev,space;if(!((space=this.match(WHITESPACE,1)))){return false}prev=this.prev();if(prev){prev.spaced=true}this.i+=space.length;return true};Lexer.prototype.newline_token=function newline_token(newlines){if(!(this.tag()==="TERMINATOR")){this.token("TERMINATOR","\n")}return true};Lexer.prototype.suppress_newlines=function suppress_newlines(){if(this.value()==="\\"){this.tokens.pop()}return true};Lexer.prototype.literal_token=function literal_token(){var match,not_spaced,tag,value;match=this.chunk.match(OPERATOR);value=match&&match[1];if(value&&value.match(CODE)){this.tag_parameters()}value=value||this.chunk.substr(0,1);not_spaced=!this.prev()||!this.prev().spaced;tag=value;if(value.match(ASSIGNMENT)){tag="ASSIGN";if(include(JS_FORBIDDEN,this.value)){this.assignment_error()}}else{if(value===";"){tag="TERMINATOR"}else{if(value==="["&&this.tag()==="?"&¬_spaced){tag="SOAKED_INDEX_START";this.soaked_index=true;this.tokens.pop()}else{if(value==="]"&&this.soaked_index){tag="SOAKED_INDEX_END";this.soaked_index=false}else{if(include(CALLABLE,this.tag())&¬_spaced){if(value==="("){tag="CALL_START"}if(value==="["){tag="INDEX_START"}}}}}}this.token(tag,value);this.i+=value.length;return true};Lexer.prototype.name_access_type=function name_access_type(){if(this.value()==="::"){this.tag(1,"PROTOTYPE_ACCESS")}if(this.value()==="."&&!(this.value(2)===".")){if(this.tag(2)==="?"){this.tag(1,"SOAK_ACCESS");return this.tokens.splice(-2,1)}else{return this.tag(1,"PROPERTY_ACCESS")}}};Lexer.prototype.sanitize_heredoc=function sanitize_heredoc(doc){var indent;indent=(doc.match(HEREDOC_INDENT)||[""]).sort()[0];return doc.replace(new RegExp("^"+indent,"gm"),"").replace(MULTILINER,"\\n").replace(/"/g,'\\"')};Lexer.prototype.tag_parameters=function tag_parameters(){var _a,i,tok;if(this.tag()!==")"){return null}i=0;while(true){i+=1;tok=this.prev(i);if(!tok){return null}if((_a=tok[0])==="IDENTIFIER"){tok[0]="PARAM"}else{if(_a===")"){tok[0]="PARAM_END"}else{if(_a==="("){return(tok[0]="PARAM_START")}}}}return true};Lexer.prototype.close_indentation=function close_indentation(){return this.outdent_token(this.indent)};Lexer.prototype.identifier_error=function identifier_error(word){throw new Error('SyntaxError: Reserved word "'+word+'" on line '+(this.line+1))};Lexer.prototype.assignment_error=function assignment_error(){throw new Error('SyntaxError: Reserved word "'+(this.value())+'" on line '+(this.line+1)+" can't be assigned")};Lexer.prototype.balanced_string=function balanced_string(str){var _a,_b,_c,_d,close,delimited,i,levels,open,pair;delimited=Array.prototype.slice.call(arguments,1);levels=[];i=0;while(i:!?]+)/;WHITESPACE=/^([ \t]+)/;COMMENT=/^(((\n?[ \t]*)?#[^\n]*)+)/;CODE=/^((-|=)>)/;REGEX=/^(\/(\S.*?)?([^\\]|\\\\)\/[imgy]{0,4})/;MULTI_DENT=/^((\n([ \t]*))+)(\.)?/;LAST_DENTS=/\n([ \t]*)/g;LAST_DENT=/\n([ \t]*)/;ASSIGNMENT=/^(:|=)$/;JS_CLEANER=/(^`|`$)/g;MULTILINER=/\n/g;STRING_NEWLINES=/\n[ \t]*/g;COMMENT_CLEANER=/(^[ \t]*#|\n[ \t]*$)/mg;NO_NEWLINE=/^([+\*&|\/\-%=<>:!.\\][<>=&|]*|and|or|is|isnt|not|delete|typeof|instanceof)$/;HEREDOC_INDENT=/^[ \t]+/mg;NOT_REGEX=["NUMBER","REGEX","++","--","FALSE","NULL","TRUE"];CALLABLE=["IDENTIFIER","SUPER",")","]","}","STRING","@"];ACCESSORS=["PROPERTY_ACCESS","PROTOTYPE_ACCESS","SOAK_ACCESS","@"];BEFORE_WHEN=["INDENT","OUTDENT","TERMINATOR"];include=function include(list,value){return list.indexOf(value)>=0};starts=function starts(string,literal,start){return string.substring(start,(start||0)+literal.length)===literal};compact=function compact(array){var _a,_b,_c,_d,item;_a=[];_b=array;for(_c=0,_d=_b.length;_c<_d;_c++){item=_b[_c];if(item){_a.push(item)}}return _a};count=function count(string,letter){var num,pos;num=0;pos=string.indexOf(letter);while(pos!==-1){num+=1;pos=string.indexOf(letter,pos+1)}return num}})();var parser=(function(){var parser={trace:function trace(){},yy:{},symbols_:{Root:2,TERMINATOR:3,Expressions:4,Block:5,Expression:6,Value:7,Call:8,Code:9,Operation:10,Assign:11,If:12,Try:13,Throw:14,Return:15,While:16,For:17,Switch:18,Extends:19,Class:20,Splat:21,Existence:22,Comment:23,INDENT:24,OUTDENT:25,Identifier:26,IDENTIFIER:27,AlphaNumeric:28,NUMBER:29,STRING:30,Literal:31,JS:32,REGEX:33,BREAK:34,CONTINUE:35,TRUE:36,FALSE:37,YES:38,NO:39,ON:40,OFF:41,ASSIGN:42,AssignObj:43,RETURN:44,COMMENT:45,"?":46,PARAM_START:47,ParamList:48,PARAM_END:49,FuncGlyph:50,"->":51,"=>":52,Param:53,",":54,PARAM:55,".":56,Array:57,Object:58,Parenthetical:59,Range:60,This:61,Accessor:62,Invocation:63,PROPERTY_ACCESS:64,PROTOTYPE_ACCESS:65,SOAK_ACCESS:66,Index:67,Slice:68,INDEX_START:69,INDEX_END:70,SOAKED_INDEX_START:71,SOAKED_INDEX_END:72,"{":73,AssignList:74,"}":75,IndentedAssignList:76,CLASS:77,EXTENDS:78,NEW:79,Super:80,Arguments:81,CALL_START:82,ArgList:83,CALL_END:84,SUPER:85,"@":86,"[":87,"]":88,SimpleArgs:89,TRY:90,Catch:91,FINALLY:92,CATCH:93,THROW:94,"(":95,")":96,WhileSource:97,WHILE:98,WHEN:99,FOR:100,ForVariables:101,ForSource:102,IN:103,OF:104,BY:105,SWITCH:106,Whens:107,ELSE:108,When:109,LEADING_WHEN:110,IfStart:111,IF:112,ElsIf:113,IfBlock:114,UNLESS:115,"!":116,"!!":117,"-":118,"+":119,NOT:120,"~":121,"--":122,"++":123,DELETE:124,TYPEOF:125,"*":126,"/":127,"%":128,"<<":129,">>":130,">>>":131,"&":132,"|":133,"^":134,"<=":135,"<":136,">":137,">=":138,"==":139,"!=":140,IS:141,ISNT:142,"&&":143,"||":144,AND:145,OR:146,"-=":147,"+=":148,"/=":149,"*=":150,"%=":151,"||=":152,"&&=":153,"?=":154,INSTANCEOF:155,"$accept":0,"$end":1},terminals_:{"3":"TERMINATOR","24":"INDENT","25":"OUTDENT","27":"IDENTIFIER","29":"NUMBER","30":"STRING","32":"JS","33":"REGEX","34":"BREAK","35":"CONTINUE","36":"TRUE","37":"FALSE","38":"YES","39":"NO","40":"ON","41":"OFF","42":"ASSIGN","44":"RETURN","45":"COMMENT","46":"?","47":"PARAM_START","49":"PARAM_END","51":"->","52":"=>","54":",","55":"PARAM","56":".","64":"PROPERTY_ACCESS","65":"PROTOTYPE_ACCESS","66":"SOAK_ACCESS","69":"INDEX_START","70":"INDEX_END","71":"SOAKED_INDEX_START","72":"SOAKED_INDEX_END","73":"{","75":"}","77":"CLASS","78":"EXTENDS","79":"NEW","82":"CALL_START","84":"CALL_END","85":"SUPER","86":"@","87":"[","88":"]","90":"TRY","92":"FINALLY","93":"CATCH","94":"THROW","95":"(","96":")","98":"WHILE","99":"WHEN","100":"FOR","103":"IN","104":"OF","105":"BY","106":"SWITCH","108":"ELSE","110":"LEADING_WHEN","112":"IF","115":"UNLESS","116":"!","117":"!!","118":"-","119":"+","120":"NOT","121":"~","122":"--","123":"++","124":"DELETE","125":"TYPEOF","126":"*","127":"/","128":"%","129":"<<","130":">>","131":">>>","132":"&","133":"|","134":"^","135":"<=","136":"<","137":">","138":">=","139":"==","140":"!=","141":"IS","142":"ISNT","143":"&&","144":"||","145":"AND","146":"OR","147":"-=","148":"+=","149":"/=","150":"*=","151":"%=","152":"||=","153":"&&=","154":"?=","155":"INSTANCEOF"},productions_:[0,[2,0],[2,1],[2,1],[2,2],[4,1],[4,3],[4,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[5,3],[5,2],[26,1],[28,1],[28,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[11,3],[43,3],[43,3],[43,1],[15,2],[15,1],[23,1],[22,2],[9,5],[9,2],[50,1],[50,1],[48,0],[48,1],[48,3],[53,1],[53,4],[21,4],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,2],[7,2],[62,2],[62,2],[62,2],[62,1],[62,1],[67,3],[67,3],[58,3],[58,3],[20,2],[20,4],[20,3],[20,5],[74,0],[74,1],[74,3],[74,3],[74,4],[76,3],[8,1],[8,2],[8,1],[19,3],[63,2],[63,2],[81,3],[80,4],[61,1],[61,2],[60,6],[60,7],[68,6],[68,7],[57,3],[83,0],[83,1],[83,2],[83,3],[83,3],[83,4],[83,4],[83,2],[89,1],[89,3],[13,3],[13,4],[13,5],[91,3],[14,2],[59,3],[97,2],[97,4],[16,2],[16,2],[17,4],[17,4],[101,1],[101,3],[102,2],[102,2],[102,3],[102,3],[18,5],[18,7],[107,1],[107,2],[109,3],[109,4],[109,3],[111,3],[111,2],[114,1],[114,3],[113,4],[12,1],[12,3],[12,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3]],performAction:function anonymous(yytext,yyleng,yylineno,yy){var $$=arguments[5],$0=arguments[5].length;switch(arguments[4]){case 1:return this.$=new Expressions();break;case 2:return this.$=new Expressions();break;case 3:return this.$=$$[$0-1+1-1];break;case 4:return this.$=$$[$0-2+1-1];break;case 5:this.$=Expressions.wrap([$$[$0-1+1-1]]);break;case 6:this.$=$$[$0-3+1-1].push($$[$0-3+3-1]);break;case 7:this.$=$$[$0-2+1-1];break;case 8:this.$=$$[$0-1+1-1];break;case 9:this.$=$$[$0-1+1-1];break;case 10:this.$=$$[$0-1+1-1];break;case 11:this.$=$$[$0-1+1-1];break;case 12:this.$=$$[$0-1+1-1];break;case 13:this.$=$$[$0-1+1-1];break;case 14:this.$=$$[$0-1+1-1];break;case 15:this.$=$$[$0-1+1-1];break;case 16:this.$=$$[$0-1+1-1];break;case 17:this.$=$$[$0-1+1-1];break;case 18:this.$=$$[$0-1+1-1];break;case 19:this.$=$$[$0-1+1-1];break;case 20:this.$=$$[$0-1+1-1];break;case 21:this.$=$$[$0-1+1-1];break;case 22:this.$=$$[$0-1+1-1];break;case 23:this.$=$$[$0-1+1-1];break;case 24:this.$=$$[$0-1+1-1];break;case 25:this.$=$$[$0-3+2-1];break;case 26:this.$=new Expressions();break;case 27:this.$=new LiteralNode(yytext);break;case 28:this.$=new LiteralNode(yytext);break;case 29:this.$=new LiteralNode(yytext);break;case 30:this.$=$$[$0-1+1-1];break;case 31:this.$=new LiteralNode(yytext);break;case 32:this.$=new LiteralNode(yytext);break;case 33:this.$=new LiteralNode(yytext);break;case 34:this.$=new LiteralNode(yytext);break;case 35:this.$=new LiteralNode(true);break;case 36:this.$=new LiteralNode(false);break;case 37:this.$=new LiteralNode(true);break;case 38:this.$=new LiteralNode(false);break;case 39:this.$=new LiteralNode(true);break;case 40:this.$=new LiteralNode(false);break;case 41:this.$=new AssignNode($$[$0-3+1-1],$$[$0-3+3-1]);break;case 42:this.$=new AssignNode(new ValueNode($$[$0-3+1-1]),$$[$0-3+3-1],"object");break;case 43:this.$=new AssignNode(new ValueNode($$[$0-3+1-1]),$$[$0-3+3-1],"object");break;case 44:this.$=$$[$0-1+1-1];break;case 45:this.$=new ReturnNode($$[$0-2+2-1]);break;case 46:this.$=new ReturnNode(new ValueNode(new LiteralNode("null")));break;case 47:this.$=new CommentNode(yytext);break;case 48:this.$=new ExistenceNode($$[$0-2+1-1]);break;case 49:this.$=new CodeNode($$[$0-5+2-1],$$[$0-5+5-1],$$[$0-5+4-1]);break;case 50:this.$=new CodeNode([],$$[$0-2+2-1],$$[$0-2+1-1]);break;case 51:this.$="func";break;case 52:this.$="boundfunc";break;case 53:this.$=[];break;case 54:this.$=[$$[$0-1+1-1]];break;case 55:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 56:this.$=new LiteralNode(yytext);break;case 57:this.$=new SplatNode($$[$0-4+1-1]);break;case 58:this.$=new SplatNode($$[$0-4+1-1]);break;case 59:this.$=new ValueNode($$[$0-1+1-1]);break;case 60:this.$=new ValueNode($$[$0-1+1-1]);break;case 61:this.$=new ValueNode($$[$0-1+1-1]);break;case 62:this.$=new ValueNode($$[$0-1+1-1]);break;case 63:this.$=new ValueNode($$[$0-1+1-1]);break;case 64:this.$=new ValueNode($$[$0-1+1-1]);break;case 65:this.$=$$[$0-1+1-1];break;case 66:this.$=$$[$0-2+1-1].push($$[$0-2+2-1]);break;case 67:this.$=new ValueNode($$[$0-2+1-1],[$$[$0-2+2-1]]);break;case 68:this.$=new AccessorNode($$[$0-2+2-1]);break;case 69:this.$=new AccessorNode($$[$0-2+2-1],"prototype");break;case 70:this.$=new AccessorNode($$[$0-2+2-1],"soak");break;case 71:this.$=$$[$0-1+1-1];break;case 72:this.$=new SliceNode($$[$0-1+1-1]);break;case 73:this.$=new IndexNode($$[$0-3+2-1]);break;case 74:this.$=new IndexNode($$[$0-3+2-1],"soak");break;case 75:this.$=new ObjectNode($$[$0-3+2-1]);break;case 76:this.$=new ObjectNode($$[$0-3+2-1]);break;case 77:this.$=new ClassNode($$[$0-2+2-1]);break;case 78:this.$=new ClassNode($$[$0-4+2-1],$$[$0-4+4-1]);break;case 79:this.$=new ClassNode($$[$0-3+2-1],null,$$[$0-3+3-1]);break;case 80:this.$=new ClassNode($$[$0-5+2-1],$$[$0-5+4-1],$$[$0-5+5-1]);break;case 81:this.$=[];break;case 82:this.$=[$$[$0-1+1-1]];break;case 83:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 84:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 85:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 86:this.$=$$[$0-3+2-1];break;case 87:this.$=$$[$0-1+1-1];break;case 88:this.$=$$[$0-2+2-1].new_instance();break;case 89:this.$=$$[$0-1+1-1];break;case 90:this.$=new ExtendsNode($$[$0-3+1-1],$$[$0-3+3-1]);break;case 91:this.$=new CallNode($$[$0-2+1-1],$$[$0-2+2-1]);break;case 92:this.$=new CallNode($$[$0-2+1-1],$$[$0-2+2-1]);break;case 93:this.$=$$[$0-3+2-1];break;case 94:this.$=new CallNode("super",$$[$0-4+3-1]);break;case 95:this.$=new ValueNode(new LiteralNode("this"));break;case 96:this.$=new ValueNode(new LiteralNode("this"),[new AccessorNode($$[$0-2+2-1])]);break;case 97:this.$=new RangeNode($$[$0-6+2-1],$$[$0-6+5-1]);break;case 98:this.$=new RangeNode($$[$0-7+2-1],$$[$0-7+6-1],true);break;case 99:this.$=new RangeNode($$[$0-6+2-1],$$[$0-6+5-1]);break;case 100:this.$=new RangeNode($$[$0-7+2-1],$$[$0-7+6-1],true);break;case 101:this.$=new ArrayNode($$[$0-3+2-1]);break;case 102:this.$=[];break;case 103:this.$=[$$[$0-1+1-1]];break;case 104:this.$=[$$[$0-2+2-1]];break;case 105:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 106:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 107:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 108:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 109:this.$=$$[$0-2+1-1];break;case 110:this.$=$$[$0-1+1-1];break;case 111:this.$=$$[$0-3+1-1] instanceof Array?$$[$0-3+1-1].concat([$$[$0-3+3-1]]):[$$[$0-3+1-1]].concat([$$[$0-3+3-1]]);break;case 112:this.$=new TryNode($$[$0-3+2-1],$$[$0-3+3-1][0],$$[$0-3+3-1][1]);break;case 113:this.$=new TryNode($$[$0-4+2-1],null,null,$$[$0-4+4-1]);break;case 114:this.$=new TryNode($$[$0-5+2-1],$$[$0-5+3-1][0],$$[$0-5+3-1][1],$$[$0-5+5-1]);break;case 115:this.$=[$$[$0-3+2-1],$$[$0-3+3-1]];break;case 116:this.$=new ThrowNode($$[$0-2+2-1]);break;case 117:this.$=new ParentheticalNode($$[$0-3+2-1]);break;case 118:this.$=new WhileNode($$[$0-2+2-1]);break;case 119:this.$=new WhileNode($$[$0-4+2-1],{filter:$$[$0-4+4-1]});break;case 120:this.$=$$[$0-2+1-1].add_body($$[$0-2+2-1]);break;case 121:this.$=$$[$0-2+2-1].add_body($$[$0-2+1-1]);break;case 122:this.$=new ForNode($$[$0-4+1-1],$$[$0-4+4-1],$$[$0-4+3-1][0],$$[$0-4+3-1][1]);break;case 123:this.$=new ForNode($$[$0-4+4-1],$$[$0-4+3-1],$$[$0-4+2-1][0],$$[$0-4+2-1][1]);break;case 124:this.$=[$$[$0-1+1-1]];break;case 125:this.$=[$$[$0-3+1-1],$$[$0-3+3-1]];break;case 126:this.$={source:$$[$0-2+2-1]};break;case 127:this.$={source:$$[$0-2+2-1],object:true};break;case 128:this.$=(function(){$$[$0-3+1-1].filter=$$[$0-3+3-1];return $$[$0-3+1-1]}());break;case 129:this.$=(function(){$$[$0-3+1-1].step=$$[$0-3+3-1];return $$[$0-3+1-1]}());break;case 130:this.$=$$[$0-5+4-1].rewrite_condition($$[$0-5+2-1]);break;case 131:this.$=$$[$0-7+4-1].rewrite_condition($$[$0-7+2-1]).add_else($$[$0-7+6-1],true);break;case 132:this.$=$$[$0-1+1-1];break;case 133:this.$=$$[$0-2+1-1].push($$[$0-2+2-1]);break;case 134:this.$=new IfNode($$[$0-3+2-1],$$[$0-3+3-1],null,{statement:true});break;case 135:this.$=new IfNode($$[$0-4+2-1],$$[$0-4+3-1],null,{statement:true});break;case 136:this.$=(function(){$$[$0-3+3-1].comment=$$[$0-3+1-1];return $$[$0-3+3-1]}());break;case 137:this.$=new IfNode($$[$0-3+2-1],$$[$0-3+3-1]);break;case 138:this.$=$$[$0-2+1-1].add_else($$[$0-2+2-1]);break;case 139:this.$=$$[$0-1+1-1];break;case 140:this.$=$$[$0-3+1-1].add_else($$[$0-3+3-1]);break;case 141:this.$=(new IfNode($$[$0-4+3-1],$$[$0-4+4-1])).force_statement();break;case 142:this.$=$$[$0-1+1-1];break;case 143:this.$=new IfNode($$[$0-3+3-1],Expressions.wrap([$$[$0-3+1-1]]),null,{statement:true});break;case 144:this.$=new IfNode($$[$0-3+3-1],Expressions.wrap([$$[$0-3+1-1]]),null,{statement:true,invert:true});break;case 145:this.$=new OpNode("!",$$[$0-2+2-1]);break;case 146:this.$=new OpNode("!!",$$[$0-2+2-1]);break;case 147:this.$=new OpNode("-",$$[$0-2+2-1]);break;case 148:this.$=new OpNode("+",$$[$0-2+2-1]);break;case 149:this.$=new OpNode("not",$$[$0-2+2-1]);break;case 150:this.$=new OpNode("~",$$[$0-2+2-1]);break;case 151:this.$=new OpNode("--",$$[$0-2+2-1]);break;case 152:this.$=new OpNode("++",$$[$0-2+2-1]);break;case 153:this.$=new OpNode("delete",$$[$0-2+2-1]);break;case 154:this.$=new OpNode("typeof",$$[$0-2+2-1]);break;case 155:this.$=new OpNode("--",$$[$0-2+1-1],null,true);break;case 156:this.$=new OpNode("++",$$[$0-2+1-1],null,true);break;case 157:this.$=new OpNode("*",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 158:this.$=new OpNode("/",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 159:this.$=new OpNode("%",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 160:this.$=new OpNode("+",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 161:this.$=new OpNode("-",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 162:this.$=new OpNode("<<",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 163:this.$=new OpNode(">>",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 164:this.$=new OpNode(">>>",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 165:this.$=new OpNode("&",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 166:this.$=new OpNode("|",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 167:this.$=new OpNode("^",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 168:this.$=new OpNode("<=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 169:this.$=new OpNode("<",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 170:this.$=new OpNode(">",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 171:this.$=new OpNode(">=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 172:this.$=new OpNode("==",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 173:this.$=new OpNode("!=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 174:this.$=new OpNode("is",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 175:this.$=new OpNode("isnt",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 176:this.$=new OpNode("&&",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 177:this.$=new OpNode("||",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 178:this.$=new OpNode("and",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 179:this.$=new OpNode("or",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 180:this.$=new OpNode("?",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 181:this.$=new OpNode("-=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 182:this.$=new OpNode("+=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 183:this.$=new OpNode("/=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 184:this.$=new OpNode("*=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 185:this.$=new OpNode("%=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 186:this.$=new OpNode("||=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 187:this.$=new OpNode("&&=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 188:this.$=new OpNode("?=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 189:this.$=new OpNode("instanceof",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 190:this.$=new OpNode("in",$$[$0-3+1-1],$$[$0-3+3-1]);break}},table:[{"1":[2,1],"2":1,"3":[1,2],"4":3,"5":4,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,6],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[3]},{"1":[2,2]},{"1":[2,3],"3":[1,79]},{"3":[1,80]},{"1":[2,5],"3":[2,5],"25":[2,5],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"4":122,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[1,123],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,8],"3":[2,8],"24":[2,8],"25":[2,8],"42":[1,125],"46":[2,8],"54":[2,8],"56":[2,8],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,8],"71":[1,135],"72":[2,8],"75":[2,8],"78":[1,126],"81":127,"82":[1,133],"84":[2,8],"88":[2,8],"96":[2,8],"98":[2,8],"99":[2,8],"100":[2,8],"103":[2,8],"105":[2,8],"112":[2,8],"115":[2,8],"118":[2,8],"119":[2,8],"122":[2,8],"123":[2,8],"126":[2,8],"127":[2,8],"128":[2,8],"129":[2,8],"130":[2,8],"131":[2,8],"132":[2,8],"133":[2,8],"134":[2,8],"135":[2,8],"136":[2,8],"137":[2,8],"138":[2,8],"139":[2,8],"140":[2,8],"141":[2,8],"142":[2,8],"143":[2,8],"144":[2,8],"145":[2,8],"146":[2,8],"147":[2,8],"148":[2,8],"149":[2,8],"150":[2,8],"151":[2,8],"152":[2,8],"153":[2,8],"154":[2,8],"155":[2,8]},{"1":[2,9],"3":[2,9],"24":[2,9],"25":[2,9],"46":[2,9],"54":[2,9],"56":[2,9],"70":[2,9],"72":[2,9],"75":[2,9],"84":[2,9],"88":[2,9],"96":[2,9],"98":[2,9],"99":[2,9],"100":[2,9],"103":[2,9],"105":[2,9],"112":[2,9],"115":[2,9],"118":[2,9],"119":[2,9],"122":[2,9],"123":[2,9],"126":[2,9],"127":[2,9],"128":[2,9],"129":[2,9],"130":[2,9],"131":[2,9],"132":[2,9],"133":[2,9],"134":[2,9],"135":[2,9],"136":[2,9],"137":[2,9],"138":[2,9],"139":[2,9],"140":[2,9],"141":[2,9],"142":[2,9],"143":[2,9],"144":[2,9],"145":[2,9],"146":[2,9],"147":[2,9],"148":[2,9],"149":[2,9],"150":[2,9],"151":[2,9],"152":[2,9],"153":[2,9],"154":[2,9],"155":[2,9]},{"1":[2,10],"3":[2,10],"24":[2,10],"25":[2,10],"46":[2,10],"54":[2,10],"56":[2,10],"70":[2,10],"72":[2,10],"75":[2,10],"84":[2,10],"88":[2,10],"96":[2,10],"98":[2,10],"99":[2,10],"100":[2,10],"103":[2,10],"105":[2,10],"112":[2,10],"115":[2,10],"118":[2,10],"119":[2,10],"122":[2,10],"123":[2,10],"126":[2,10],"127":[2,10],"128":[2,10],"129":[2,10],"130":[2,10],"131":[2,10],"132":[2,10],"133":[2,10],"134":[2,10],"135":[2,10],"136":[2,10],"137":[2,10],"138":[2,10],"139":[2,10],"140":[2,10],"141":[2,10],"142":[2,10],"143":[2,10],"144":[2,10],"145":[2,10],"146":[2,10],"147":[2,10],"148":[2,10],"149":[2,10],"150":[2,10],"151":[2,10],"152":[2,10],"153":[2,10],"154":[2,10],"155":[2,10]},{"1":[2,11],"3":[2,11],"24":[2,11],"25":[2,11],"46":[2,11],"54":[2,11],"56":[2,11],"70":[2,11],"72":[2,11],"75":[2,11],"84":[2,11],"88":[2,11],"96":[2,11],"98":[2,11],"99":[2,11],"100":[2,11],"103":[2,11],"105":[2,11],"112":[2,11],"115":[2,11],"118":[2,11],"119":[2,11],"122":[2,11],"123":[2,11],"126":[2,11],"127":[2,11],"128":[2,11],"129":[2,11],"130":[2,11],"131":[2,11],"132":[2,11],"133":[2,11],"134":[2,11],"135":[2,11],"136":[2,11],"137":[2,11],"138":[2,11],"139":[2,11],"140":[2,11],"141":[2,11],"142":[2,11],"143":[2,11],"144":[2,11],"145":[2,11],"146":[2,11],"147":[2,11],"148":[2,11],"149":[2,11],"150":[2,11],"151":[2,11],"152":[2,11],"153":[2,11],"154":[2,11],"155":[2,11]},{"1":[2,12],"3":[2,12],"24":[2,12],"25":[2,12],"46":[2,12],"54":[2,12],"56":[2,12],"70":[2,12],"72":[2,12],"75":[2,12],"84":[2,12],"88":[2,12],"96":[2,12],"98":[2,12],"99":[2,12],"100":[2,12],"103":[2,12],"105":[2,12],"112":[2,12],"115":[2,12],"118":[2,12],"119":[2,12],"122":[2,12],"123":[2,12],"126":[2,12],"127":[2,12],"128":[2,12],"129":[2,12],"130":[2,12],"131":[2,12],"132":[2,12],"133":[2,12],"134":[2,12],"135":[2,12],"136":[2,12],"137":[2,12],"138":[2,12],"139":[2,12],"140":[2,12],"141":[2,12],"142":[2,12],"143":[2,12],"144":[2,12],"145":[2,12],"146":[2,12],"147":[2,12],"148":[2,12],"149":[2,12],"150":[2,12],"151":[2,12],"152":[2,12],"153":[2,12],"154":[2,12],"155":[2,12]},{"1":[2,13],"3":[2,13],"24":[2,13],"25":[2,13],"46":[2,13],"54":[2,13],"56":[2,13],"70":[2,13],"72":[2,13],"75":[2,13],"84":[2,13],"88":[2,13],"96":[2,13],"98":[2,13],"99":[2,13],"100":[2,13],"103":[2,13],"105":[2,13],"112":[2,13],"115":[2,13],"118":[2,13],"119":[2,13],"122":[2,13],"123":[2,13],"126":[2,13],"127":[2,13],"128":[2,13],"129":[2,13],"130":[2,13],"131":[2,13],"132":[2,13],"133":[2,13],"134":[2,13],"135":[2,13],"136":[2,13],"137":[2,13],"138":[2,13],"139":[2,13],"140":[2,13],"141":[2,13],"142":[2,13],"143":[2,13],"144":[2,13],"145":[2,13],"146":[2,13],"147":[2,13],"148":[2,13],"149":[2,13],"150":[2,13],"151":[2,13],"152":[2,13],"153":[2,13],"154":[2,13],"155":[2,13]},{"1":[2,14],"3":[2,14],"24":[2,14],"25":[2,14],"46":[2,14],"54":[2,14],"56":[2,14],"70":[2,14],"72":[2,14],"75":[2,14],"84":[2,14],"88":[2,14],"96":[2,14],"98":[2,14],"99":[2,14],"100":[2,14],"103":[2,14],"105":[2,14],"112":[2,14],"115":[2,14],"118":[2,14],"119":[2,14],"122":[2,14],"123":[2,14],"126":[2,14],"127":[2,14],"128":[2,14],"129":[2,14],"130":[2,14],"131":[2,14],"132":[2,14],"133":[2,14],"134":[2,14],"135":[2,14],"136":[2,14],"137":[2,14],"138":[2,14],"139":[2,14],"140":[2,14],"141":[2,14],"142":[2,14],"143":[2,14],"144":[2,14],"145":[2,14],"146":[2,14],"147":[2,14],"148":[2,14],"149":[2,14],"150":[2,14],"151":[2,14],"152":[2,14],"153":[2,14],"154":[2,14],"155":[2,14]},{"1":[2,15],"3":[2,15],"24":[2,15],"25":[2,15],"46":[2,15],"54":[2,15],"56":[2,15],"70":[2,15],"72":[2,15],"75":[2,15],"84":[2,15],"88":[2,15],"96":[2,15],"98":[2,15],"99":[2,15],"100":[2,15],"103":[2,15],"105":[2,15],"112":[2,15],"115":[2,15],"118":[2,15],"119":[2,15],"122":[2,15],"123":[2,15],"126":[2,15],"127":[2,15],"128":[2,15],"129":[2,15],"130":[2,15],"131":[2,15],"132":[2,15],"133":[2,15],"134":[2,15],"135":[2,15],"136":[2,15],"137":[2,15],"138":[2,15],"139":[2,15],"140":[2,15],"141":[2,15],"142":[2,15],"143":[2,15],"144":[2,15],"145":[2,15],"146":[2,15],"147":[2,15],"148":[2,15],"149":[2,15],"150":[2,15],"151":[2,15],"152":[2,15],"153":[2,15],"154":[2,15],"155":[2,15]},{"1":[2,16],"3":[2,16],"24":[2,16],"25":[2,16],"46":[2,16],"54":[2,16],"56":[2,16],"70":[2,16],"72":[2,16],"75":[2,16],"84":[2,16],"88":[2,16],"96":[2,16],"98":[2,16],"99":[2,16],"100":[2,16],"103":[2,16],"105":[2,16],"112":[2,16],"115":[2,16],"118":[2,16],"119":[2,16],"122":[2,16],"123":[2,16],"126":[2,16],"127":[2,16],"128":[2,16],"129":[2,16],"130":[2,16],"131":[2,16],"132":[2,16],"133":[2,16],"134":[2,16],"135":[2,16],"136":[2,16],"137":[2,16],"138":[2,16],"139":[2,16],"140":[2,16],"141":[2,16],"142":[2,16],"143":[2,16],"144":[2,16],"145":[2,16],"146":[2,16],"147":[2,16],"148":[2,16],"149":[2,16],"150":[2,16],"151":[2,16],"152":[2,16],"153":[2,16],"154":[2,16],"155":[2,16]},{"1":[2,17],"3":[2,17],"24":[2,17],"25":[2,17],"46":[2,17],"54":[2,17],"56":[2,17],"70":[2,17],"72":[2,17],"75":[2,17],"84":[2,17],"88":[2,17],"96":[2,17],"98":[2,17],"99":[2,17],"100":[2,17],"103":[2,17],"105":[2,17],"112":[2,17],"115":[2,17],"118":[2,17],"119":[2,17],"122":[2,17],"123":[2,17],"126":[2,17],"127":[2,17],"128":[2,17],"129":[2,17],"130":[2,17],"131":[2,17],"132":[2,17],"133":[2,17],"134":[2,17],"135":[2,17],"136":[2,17],"137":[2,17],"138":[2,17],"139":[2,17],"140":[2,17],"141":[2,17],"142":[2,17],"143":[2,17],"144":[2,17],"145":[2,17],"146":[2,17],"147":[2,17],"148":[2,17],"149":[2,17],"150":[2,17],"151":[2,17],"152":[2,17],"153":[2,17],"154":[2,17],"155":[2,17]},{"1":[2,18],"3":[2,18],"24":[2,18],"25":[2,18],"46":[2,18],"54":[2,18],"56":[2,18],"70":[2,18],"72":[2,18],"75":[2,18],"84":[2,18],"88":[2,18],"96":[2,18],"98":[2,18],"99":[2,18],"100":[2,18],"103":[2,18],"105":[2,18],"112":[2,18],"115":[2,18],"118":[2,18],"119":[2,18],"122":[2,18],"123":[2,18],"126":[2,18],"127":[2,18],"128":[2,18],"129":[2,18],"130":[2,18],"131":[2,18],"132":[2,18],"133":[2,18],"134":[2,18],"135":[2,18],"136":[2,18],"137":[2,18],"138":[2,18],"139":[2,18],"140":[2,18],"141":[2,18],"142":[2,18],"143":[2,18],"144":[2,18],"145":[2,18],"146":[2,18],"147":[2,18],"148":[2,18],"149":[2,18],"150":[2,18],"151":[2,18],"152":[2,18],"153":[2,18],"154":[2,18],"155":[2,18]},{"1":[2,19],"3":[2,19],"24":[2,19],"25":[2,19],"46":[2,19],"54":[2,19],"56":[2,19],"70":[2,19],"72":[2,19],"75":[2,19],"84":[2,19],"88":[2,19],"96":[2,19],"98":[2,19],"99":[2,19],"100":[2,19],"103":[2,19],"105":[2,19],"112":[2,19],"115":[2,19],"118":[2,19],"119":[2,19],"122":[2,19],"123":[2,19],"126":[2,19],"127":[2,19],"128":[2,19],"129":[2,19],"130":[2,19],"131":[2,19],"132":[2,19],"133":[2,19],"134":[2,19],"135":[2,19],"136":[2,19],"137":[2,19],"138":[2,19],"139":[2,19],"140":[2,19],"141":[2,19],"142":[2,19],"143":[2,19],"144":[2,19],"145":[2,19],"146":[2,19],"147":[2,19],"148":[2,19],"149":[2,19],"150":[2,19],"151":[2,19],"152":[2,19],"153":[2,19],"154":[2,19],"155":[2,19]},{"1":[2,20],"3":[2,20],"24":[2,20],"25":[2,20],"46":[2,20],"54":[2,20],"56":[2,20],"70":[2,20],"72":[2,20],"75":[2,20],"84":[2,20],"88":[2,20],"96":[2,20],"98":[2,20],"99":[2,20],"100":[2,20],"103":[2,20],"105":[2,20],"112":[2,20],"115":[2,20],"118":[2,20],"119":[2,20],"122":[2,20],"123":[2,20],"126":[2,20],"127":[2,20],"128":[2,20],"129":[2,20],"130":[2,20],"131":[2,20],"132":[2,20],"133":[2,20],"134":[2,20],"135":[2,20],"136":[2,20],"137":[2,20],"138":[2,20],"139":[2,20],"140":[2,20],"141":[2,20],"142":[2,20],"143":[2,20],"144":[2,20],"145":[2,20],"146":[2,20],"147":[2,20],"148":[2,20],"149":[2,20],"150":[2,20],"151":[2,20],"152":[2,20],"153":[2,20],"154":[2,20],"155":[2,20]},{"1":[2,21],"3":[2,21],"24":[2,21],"25":[2,21],"46":[2,21],"54":[2,21],"56":[2,21],"70":[2,21],"72":[2,21],"75":[2,21],"84":[2,21],"88":[2,21],"96":[2,21],"98":[2,21],"99":[2,21],"100":[2,21],"103":[2,21],"105":[2,21],"112":[2,21],"115":[2,21],"118":[2,21],"119":[2,21],"122":[2,21],"123":[2,21],"126":[2,21],"127":[2,21],"128":[2,21],"129":[2,21],"130":[2,21],"131":[2,21],"132":[2,21],"133":[2,21],"134":[2,21],"135":[2,21],"136":[2,21],"137":[2,21],"138":[2,21],"139":[2,21],"140":[2,21],"141":[2,21],"142":[2,21],"143":[2,21],"144":[2,21],"145":[2,21],"146":[2,21],"147":[2,21],"148":[2,21],"149":[2,21],"150":[2,21],"151":[2,21],"152":[2,21],"153":[2,21],"154":[2,21],"155":[2,21]},{"1":[2,22],"3":[2,22],"24":[2,22],"25":[2,22],"46":[2,22],"54":[2,22],"56":[2,22],"70":[2,22],"72":[2,22],"75":[2,22],"84":[2,22],"88":[2,22],"96":[2,22],"98":[2,22],"99":[2,22],"100":[2,22],"103":[2,22],"105":[2,22],"112":[2,22],"115":[2,22],"118":[2,22],"119":[2,22],"122":[2,22],"123":[2,22],"126":[2,22],"127":[2,22],"128":[2,22],"129":[2,22],"130":[2,22],"131":[2,22],"132":[2,22],"133":[2,22],"134":[2,22],"135":[2,22],"136":[2,22],"137":[2,22],"138":[2,22],"139":[2,22],"140":[2,22],"141":[2,22],"142":[2,22],"143":[2,22],"144":[2,22],"145":[2,22],"146":[2,22],"147":[2,22],"148":[2,22],"149":[2,22],"150":[2,22],"151":[2,22],"152":[2,22],"153":[2,22],"154":[2,22],"155":[2,22]},{"1":[2,23],"3":[2,23],"24":[2,23],"25":[2,23],"46":[2,23],"54":[2,23],"56":[2,23],"70":[2,23],"72":[2,23],"75":[2,23],"84":[2,23],"88":[2,23],"96":[2,23],"98":[2,23],"99":[2,23],"100":[2,23],"103":[2,23],"105":[2,23],"112":[2,23],"115":[2,23],"118":[2,23],"119":[2,23],"122":[2,23],"123":[2,23],"126":[2,23],"127":[2,23],"128":[2,23],"129":[2,23],"130":[2,23],"131":[2,23],"132":[2,23],"133":[2,23],"134":[2,23],"135":[2,23],"136":[2,23],"137":[2,23],"138":[2,23],"139":[2,23],"140":[2,23],"141":[2,23],"142":[2,23],"143":[2,23],"144":[2,23],"145":[2,23],"146":[2,23],"147":[2,23],"148":[2,23],"149":[2,23],"150":[2,23],"151":[2,23],"152":[2,23],"153":[2,23],"154":[2,23],"155":[2,23]},{"1":[2,24],"3":[2,24],"24":[2,24],"25":[2,24],"46":[2,24],"54":[2,24],"56":[2,24],"70":[2,24],"72":[2,24],"75":[2,24],"84":[2,24],"88":[2,24],"96":[2,24],"98":[2,24],"99":[2,24],"100":[2,24],"103":[2,24],"105":[2,24],"112":[2,24],"115":[2,24],"118":[2,24],"119":[2,24],"122":[2,24],"123":[2,24],"126":[2,24],"127":[2,24],"128":[2,24],"129":[2,24],"130":[2,24],"131":[2,24],"132":[2,24],"133":[2,24],"134":[2,24],"135":[2,24],"136":[2,24],"137":[2,24],"138":[2,24],"139":[2,24],"140":[2,24],"141":[2,24],"142":[2,24],"143":[2,24],"144":[2,24],"145":[2,24],"146":[2,24],"147":[2,24],"148":[2,24],"149":[2,24],"150":[2,24],"151":[2,24],"152":[2,24],"153":[2,24],"154":[2,24],"155":[2,24]},{"1":[2,59],"3":[2,59],"24":[2,59],"25":[2,59],"42":[2,59],"46":[2,59],"54":[2,59],"56":[2,59],"64":[2,59],"65":[2,59],"66":[2,59],"69":[2,59],"70":[2,59],"71":[2,59],"72":[2,59],"75":[2,59],"78":[2,59],"82":[2,59],"84":[2,59],"88":[2,59],"96":[2,59],"98":[2,59],"99":[2,59],"100":[2,59],"103":[2,59],"105":[2,59],"112":[2,59],"115":[2,59],"118":[2,59],"119":[2,59],"122":[2,59],"123":[2,59],"126":[2,59],"127":[2,59],"128":[2,59],"129":[2,59],"130":[2,59],"131":[2,59],"132":[2,59],"133":[2,59],"134":[2,59],"135":[2,59],"136":[2,59],"137":[2,59],"138":[2,59],"139":[2,59],"140":[2,59],"141":[2,59],"142":[2,59],"143":[2,59],"144":[2,59],"145":[2,59],"146":[2,59],"147":[2,59],"148":[2,59],"149":[2,59],"150":[2,59],"151":[2,59],"152":[2,59],"153":[2,59],"154":[2,59],"155":[2,59]},{"1":[2,60],"3":[2,60],"24":[2,60],"25":[2,60],"42":[2,60],"46":[2,60],"54":[2,60],"56":[2,60],"64":[2,60],"65":[2,60],"66":[2,60],"69":[2,60],"70":[2,60],"71":[2,60],"72":[2,60],"75":[2,60],"78":[2,60],"82":[2,60],"84":[2,60],"88":[2,60],"96":[2,60],"98":[2,60],"99":[2,60],"100":[2,60],"103":[2,60],"105":[2,60],"112":[2,60],"115":[2,60],"118":[2,60],"119":[2,60],"122":[2,60],"123":[2,60],"126":[2,60],"127":[2,60],"128":[2,60],"129":[2,60],"130":[2,60],"131":[2,60],"132":[2,60],"133":[2,60],"134":[2,60],"135":[2,60],"136":[2,60],"137":[2,60],"138":[2,60],"139":[2,60],"140":[2,60],"141":[2,60],"142":[2,60],"143":[2,60],"144":[2,60],"145":[2,60],"146":[2,60],"147":[2,60],"148":[2,60],"149":[2,60],"150":[2,60],"151":[2,60],"152":[2,60],"153":[2,60],"154":[2,60],"155":[2,60]},{"1":[2,61],"3":[2,61],"24":[2,61],"25":[2,61],"42":[2,61],"46":[2,61],"54":[2,61],"56":[2,61],"64":[2,61],"65":[2,61],"66":[2,61],"69":[2,61],"70":[2,61],"71":[2,61],"72":[2,61],"75":[2,61],"78":[2,61],"82":[2,61],"84":[2,61],"88":[2,61],"96":[2,61],"98":[2,61],"99":[2,61],"100":[2,61],"103":[2,61],"105":[2,61],"112":[2,61],"115":[2,61],"118":[2,61],"119":[2,61],"122":[2,61],"123":[2,61],"126":[2,61],"127":[2,61],"128":[2,61],"129":[2,61],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"1":[2,62],"3":[2,62],"24":[2,62],"25":[2,62],"42":[2,62],"46":[2,62],"54":[2,62],"56":[2,62],"64":[2,62],"65":[2,62],"66":[2,62],"69":[2,62],"70":[2,62],"71":[2,62],"72":[2,62],"75":[2,62],"78":[2,62],"82":[2,62],"84":[2,62],"88":[2,62],"96":[2,62],"98":[2,62],"99":[2,62],"100":[2,62],"103":[2,62],"105":[2,62],"112":[2,62],"115":[2,62],"118":[2,62],"119":[2,62],"122":[2,62],"123":[2,62],"126":[2,62],"127":[2,62],"128":[2,62],"129":[2,62],"130":[2,62],"131":[2,62],"132":[2,62],"133":[2,62],"134":[2,62],"135":[2,62],"136":[2,62],"137":[2,62],"138":[2,62],"139":[2,62],"140":[2,62],"141":[2,62],"142":[2,62],"143":[2,62],"144":[2,62],"145":[2,62],"146":[2,62],"147":[2,62],"148":[2,62],"149":[2,62],"150":[2,62],"151":[2,62],"152":[2,62],"153":[2,62],"154":[2,62],"155":[2,62]},{"1":[2,63],"3":[2,63],"24":[2,63],"25":[2,63],"42":[2,63],"46":[2,63],"54":[2,63],"56":[2,63],"64":[2,63],"65":[2,63],"66":[2,63],"69":[2,63],"70":[2,63],"71":[2,63],"72":[2,63],"75":[2,63],"78":[2,63],"82":[2,63],"84":[2,63],"88":[2,63],"96":[2,63],"98":[2,63],"99":[2,63],"100":[2,63],"103":[2,63],"105":[2,63],"112":[2,63],"115":[2,63],"118":[2,63],"119":[2,63],"122":[2,63],"123":[2,63],"126":[2,63],"127":[2,63],"128":[2,63],"129":[2,63],"130":[2,63],"131":[2,63],"132":[2,63],"133":[2,63],"134":[2,63],"135":[2,63],"136":[2,63],"137":[2,63],"138":[2,63],"139":[2,63],"140":[2,63],"141":[2,63],"142":[2,63],"143":[2,63],"144":[2,63],"145":[2,63],"146":[2,63],"147":[2,63],"148":[2,63],"149":[2,63],"150":[2,63],"151":[2,63],"152":[2,63],"153":[2,63],"154":[2,63],"155":[2,63]},{"1":[2,64],"3":[2,64],"24":[2,64],"25":[2,64],"42":[2,64],"46":[2,64],"54":[2,64],"56":[2,64],"64":[2,64],"65":[2,64],"66":[2,64],"69":[2,64],"70":[2,64],"71":[2,64],"72":[2,64],"75":[2,64],"78":[2,64],"82":[2,64],"84":[2,64],"88":[2,64],"96":[2,64],"98":[2,64],"99":[2,64],"100":[2,64],"103":[2,64],"105":[2,64],"112":[2,64],"115":[2,64],"118":[2,64],"119":[2,64],"122":[2,64],"123":[2,64],"126":[2,64],"127":[2,64],"128":[2,64],"129":[2,64],"130":[2,64],"131":[2,64],"132":[2,64],"133":[2,64],"134":[2,64],"135":[2,64],"136":[2,64],"137":[2,64],"138":[2,64],"139":[2,64],"140":[2,64],"141":[2,64],"142":[2,64],"143":[2,64],"144":[2,64],"145":[2,64],"146":[2,64],"147":[2,64],"148":[2,64],"149":[2,64],"150":[2,64],"151":[2,64],"152":[2,64],"153":[2,64],"154":[2,64],"155":[2,64]},{"1":[2,65],"3":[2,65],"24":[2,65],"25":[2,65],"42":[2,65],"46":[2,65],"54":[2,65],"56":[2,65],"64":[2,65],"65":[2,65],"66":[2,65],"69":[2,65],"70":[2,65],"71":[2,65],"72":[2,65],"75":[2,65],"78":[2,65],"82":[2,65],"84":[2,65],"88":[2,65],"96":[2,65],"98":[2,65],"99":[2,65],"100":[2,65],"103":[2,65],"105":[2,65],"112":[2,65],"115":[2,65],"118":[2,65],"119":[2,65],"122":[2,65],"123":[2,65],"126":[2,65],"127":[2,65],"128":[2,65],"129":[2,65],"130":[2,65],"131":[2,65],"132":[2,65],"133":[2,65],"134":[2,65],"135":[2,65],"136":[2,65],"137":[2,65],"138":[2,65],"139":[2,65],"140":[2,65],"141":[2,65],"142":[2,65],"143":[2,65],"144":[2,65],"145":[2,65],"146":[2,65],"147":[2,65],"148":[2,65],"149":[2,65],"150":[2,65],"151":[2,65],"152":[2,65],"153":[2,65],"154":[2,65],"155":[2,65]},{"1":[2,87],"3":[2,87],"24":[2,87],"25":[2,87],"46":[2,87],"54":[2,87],"56":[2,87],"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,87],"71":[1,135],"72":[2,87],"75":[2,87],"81":137,"82":[1,133],"84":[2,87],"88":[2,87],"96":[2,87],"98":[2,87],"99":[2,87],"100":[2,87],"103":[2,87],"105":[2,87],"112":[2,87],"115":[2,87],"118":[2,87],"119":[2,87],"122":[2,87],"123":[2,87],"126":[2,87],"127":[2,87],"128":[2,87],"129":[2,87],"130":[2,87],"131":[2,87],"132":[2,87],"133":[2,87],"134":[2,87],"135":[2,87],"136":[2,87],"137":[2,87],"138":[2,87],"139":[2,87],"140":[2,87],"141":[2,87],"142":[2,87],"143":[2,87],"144":[2,87],"145":[2,87],"146":[2,87],"147":[2,87],"148":[2,87],"149":[2,87],"150":[2,87],"151":[2,87],"152":[2,87],"153":[2,87],"154":[2,87],"155":[2,87]},{"7":139,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":138,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,89],"3":[2,89],"24":[2,89],"25":[2,89],"46":[2,89],"54":[2,89],"56":[2,89],"70":[2,89],"72":[2,89],"75":[2,89],"84":[2,89],"88":[2,89],"96":[2,89],"98":[2,89],"99":[2,89],"100":[2,89],"103":[2,89],"105":[2,89],"112":[2,89],"115":[2,89],"118":[2,89],"119":[2,89],"122":[2,89],"123":[2,89],"126":[2,89],"127":[2,89],"128":[2,89],"129":[2,89],"130":[2,89],"131":[2,89],"132":[2,89],"133":[2,89],"134":[2,89],"135":[2,89],"136":[2,89],"137":[2,89],"138":[2,89],"139":[2,89],"140":[2,89],"141":[2,89],"142":[2,89],"143":[2,89],"144":[2,89],"145":[2,89],"146":[2,89],"147":[2,89],"148":[2,89],"149":[2,89],"150":[2,89],"151":[2,89],"152":[2,89],"153":[2,89],"154":[2,89],"155":[2,89]},{"48":140,"49":[2,53],"53":141,"54":[2,53],"55":[1,142]},{"5":143,"24":[1,6]},{"6":144,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":145,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":146,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":147,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":148,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":149,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":150,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":151,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":152,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":153,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,142],"3":[2,142],"24":[2,142],"25":[2,142],"46":[2,142],"54":[2,142],"56":[2,142],"70":[2,142],"72":[2,142],"75":[2,142],"84":[2,142],"88":[2,142],"96":[2,142],"98":[2,142],"99":[2,142],"100":[2,142],"103":[2,142],"105":[2,142],"112":[2,142],"115":[2,142],"118":[2,142],"119":[2,142],"122":[2,142],"123":[2,142],"126":[2,142],"127":[2,142],"128":[2,142],"129":[2,142],"130":[2,142],"131":[2,142],"132":[2,142],"133":[2,142],"134":[2,142],"135":[2,142],"136":[2,142],"137":[2,142],"138":[2,142],"139":[2,142],"140":[2,142],"141":[2,142],"142":[2,142],"143":[2,142],"144":[2,142],"145":[2,142],"146":[2,142],"147":[2,142],"148":[2,142],"149":[2,142],"150":[2,142],"151":[2,142],"152":[2,142],"153":[2,142],"154":[2,142],"155":[2,142]},{"5":154,"24":[1,6]},{"6":155,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,46],"3":[2,46],"6":156,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[2,46],"25":[2,46],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,46],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,46],"56":[2,46],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,46],"72":[2,46],"73":[1,68],"75":[2,46],"77":[1,53],"79":[1,32],"80":33,"84":[2,46],"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,46],"90":[1,47],"94":[1,48],"95":[1,69],"96":[2,46],"97":50,"98":[2,46],"99":[2,46],"100":[1,51],"103":[2,46],"105":[2,46],"106":[1,52],"111":74,"112":[2,46],"114":46,"115":[2,46],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,46],"127":[2,46],"128":[2,46],"129":[2,46],"130":[2,46],"131":[2,46],"132":[2,46],"133":[2,46],"134":[2,46],"135":[2,46],"136":[2,46],"137":[2,46],"138":[2,46],"139":[2,46],"140":[2,46],"141":[2,46],"142":[2,46],"143":[2,46],"144":[2,46],"145":[2,46],"146":[2,46],"147":[2,46],"148":[2,46],"149":[2,46],"150":[2,46],"151":[2,46],"152":[2,46],"153":[2,46],"154":[2,46],"155":[2,46]},{"5":157,"24":[1,6]},{"26":159,"27":[1,55],"101":158},{"6":160,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"7":161,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,47],"3":[2,47],"24":[2,47],"25":[2,47],"46":[2,47],"54":[2,47],"56":[2,47],"70":[2,47],"72":[2,47],"75":[2,47],"84":[2,47],"88":[2,47],"96":[2,47],"98":[2,47],"99":[2,47],"100":[2,47],"103":[2,47],"105":[2,47],"112":[2,47],"115":[2,47],"118":[2,47],"119":[2,47],"122":[2,47],"123":[2,47],"126":[2,47],"127":[2,47],"128":[2,47],"129":[2,47],"130":[2,47],"131":[2,47],"132":[2,47],"133":[2,47],"134":[2,47],"135":[2,47],"136":[2,47],"137":[2,47],"138":[2,47],"139":[2,47],"140":[2,47],"141":[2,47],"142":[2,47],"143":[2,47],"144":[2,47],"145":[2,47],"146":[2,47],"147":[2,47],"148":[2,47],"149":[2,47],"150":[2,47],"151":[2,47],"152":[2,47],"153":[2,47],"154":[2,47],"155":[2,47]},{"1":[2,27],"3":[2,27],"24":[2,27],"25":[2,27],"42":[2,27],"46":[2,27],"54":[2,27],"56":[2,27],"64":[2,27],"65":[2,27],"66":[2,27],"69":[2,27],"70":[2,27],"71":[2,27],"72":[2,27],"75":[2,27],"78":[2,27],"82":[2,27],"84":[2,27],"88":[2,27],"96":[2,27],"98":[2,27],"99":[2,27],"100":[2,27],"103":[2,27],"104":[2,27],"105":[2,27],"112":[2,27],"115":[2,27],"118":[2,27],"119":[2,27],"122":[2,27],"123":[2,27],"126":[2,27],"127":[2,27],"128":[2,27],"129":[2,27],"130":[2,27],"131":[2,27],"132":[2,27],"133":[2,27],"134":[2,27],"135":[2,27],"136":[2,27],"137":[2,27],"138":[2,27],"139":[2,27],"140":[2,27],"141":[2,27],"142":[2,27],"143":[2,27],"144":[2,27],"145":[2,27],"146":[2,27],"147":[2,27],"148":[2,27],"149":[2,27],"150":[2,27],"151":[2,27],"152":[2,27],"153":[2,27],"154":[2,27],"155":[2,27]},{"1":[2,30],"3":[2,30],"24":[2,30],"25":[2,30],"42":[2,30],"46":[2,30],"54":[2,30],"56":[2,30],"64":[2,30],"65":[2,30],"66":[2,30],"69":[2,30],"70":[2,30],"71":[2,30],"72":[2,30],"75":[2,30],"78":[2,30],"82":[2,30],"84":[2,30],"88":[2,30],"96":[2,30],"98":[2,30],"99":[2,30],"100":[2,30],"103":[2,30],"105":[2,30],"112":[2,30],"115":[2,30],"118":[2,30],"119":[2,30],"122":[2,30],"123":[2,30],"126":[2,30],"127":[2,30],"128":[2,30],"129":[2,30],"130":[2,30],"131":[2,30],"132":[2,30],"133":[2,30],"134":[2,30],"135":[2,30],"136":[2,30],"137":[2,30],"138":[2,30],"139":[2,30],"140":[2,30],"141":[2,30],"142":[2,30],"143":[2,30],"144":[2,30],"145":[2,30],"146":[2,30],"147":[2,30],"148":[2,30],"149":[2,30],"150":[2,30],"151":[2,30],"152":[2,30],"153":[2,30],"154":[2,30],"155":[2,30]},{"1":[2,31],"3":[2,31],"24":[2,31],"25":[2,31],"42":[2,31],"46":[2,31],"54":[2,31],"56":[2,31],"64":[2,31],"65":[2,31],"66":[2,31],"69":[2,31],"70":[2,31],"71":[2,31],"72":[2,31],"75":[2,31],"78":[2,31],"82":[2,31],"84":[2,31],"88":[2,31],"96":[2,31],"98":[2,31],"99":[2,31],"100":[2,31],"103":[2,31],"105":[2,31],"112":[2,31],"115":[2,31],"118":[2,31],"119":[2,31],"122":[2,31],"123":[2,31],"126":[2,31],"127":[2,31],"128":[2,31],"129":[2,31],"130":[2,31],"131":[2,31],"132":[2,31],"133":[2,31],"134":[2,31],"135":[2,31],"136":[2,31],"137":[2,31],"138":[2,31],"139":[2,31],"140":[2,31],"141":[2,31],"142":[2,31],"143":[2,31],"144":[2,31],"145":[2,31],"146":[2,31],"147":[2,31],"148":[2,31],"149":[2,31],"150":[2,31],"151":[2,31],"152":[2,31],"153":[2,31],"154":[2,31],"155":[2,31]},{"1":[2,32],"3":[2,32],"24":[2,32],"25":[2,32],"42":[2,32],"46":[2,32],"54":[2,32],"56":[2,32],"64":[2,32],"65":[2,32],"66":[2,32],"69":[2,32],"70":[2,32],"71":[2,32],"72":[2,32],"75":[2,32],"78":[2,32],"82":[2,32],"84":[2,32],"88":[2,32],"96":[2,32],"98":[2,32],"99":[2,32],"100":[2,32],"103":[2,32],"105":[2,32],"112":[2,32],"115":[2,32],"118":[2,32],"119":[2,32],"122":[2,32],"123":[2,32],"126":[2,32],"127":[2,32],"128":[2,32],"129":[2,32],"130":[2,32],"131":[2,32],"132":[2,32],"133":[2,32],"134":[2,32],"135":[2,32],"136":[2,32],"137":[2,32],"138":[2,32],"139":[2,32],"140":[2,32],"141":[2,32],"142":[2,32],"143":[2,32],"144":[2,32],"145":[2,32],"146":[2,32],"147":[2,32],"148":[2,32],"149":[2,32],"150":[2,32],"151":[2,32],"152":[2,32],"153":[2,32],"154":[2,32],"155":[2,32]},{"1":[2,33],"3":[2,33],"24":[2,33],"25":[2,33],"42":[2,33],"46":[2,33],"54":[2,33],"56":[2,33],"64":[2,33],"65":[2,33],"66":[2,33],"69":[2,33],"70":[2,33],"71":[2,33],"72":[2,33],"75":[2,33],"78":[2,33],"82":[2,33],"84":[2,33],"88":[2,33],"96":[2,33],"98":[2,33],"99":[2,33],"100":[2,33],"103":[2,33],"105":[2,33],"112":[2,33],"115":[2,33],"118":[2,33],"119":[2,33],"122":[2,33],"123":[2,33],"126":[2,33],"127":[2,33],"128":[2,33],"129":[2,33],"130":[2,33],"131":[2,33],"132":[2,33],"133":[2,33],"134":[2,33],"135":[2,33],"136":[2,33],"137":[2,33],"138":[2,33],"139":[2,33],"140":[2,33],"141":[2,33],"142":[2,33],"143":[2,33],"144":[2,33],"145":[2,33],"146":[2,33],"147":[2,33],"148":[2,33],"149":[2,33],"150":[2,33],"151":[2,33],"152":[2,33],"153":[2,33],"154":[2,33],"155":[2,33]},{"1":[2,34],"3":[2,34],"24":[2,34],"25":[2,34],"42":[2,34],"46":[2,34],"54":[2,34],"56":[2,34],"64":[2,34],"65":[2,34],"66":[2,34],"69":[2,34],"70":[2,34],"71":[2,34],"72":[2,34],"75":[2,34],"78":[2,34],"82":[2,34],"84":[2,34],"88":[2,34],"96":[2,34],"98":[2,34],"99":[2,34],"100":[2,34],"103":[2,34],"105":[2,34],"112":[2,34],"115":[2,34],"118":[2,34],"119":[2,34],"122":[2,34],"123":[2,34],"126":[2,34],"127":[2,34],"128":[2,34],"129":[2,34],"130":[2,34],"131":[2,34],"132":[2,34],"133":[2,34],"134":[2,34],"135":[2,34],"136":[2,34],"137":[2,34],"138":[2,34],"139":[2,34],"140":[2,34],"141":[2,34],"142":[2,34],"143":[2,34],"144":[2,34],"145":[2,34],"146":[2,34],"147":[2,34],"148":[2,34],"149":[2,34],"150":[2,34],"151":[2,34],"152":[2,34],"153":[2,34],"154":[2,34],"155":[2,34]},{"1":[2,35],"3":[2,35],"24":[2,35],"25":[2,35],"42":[2,35],"46":[2,35],"54":[2,35],"56":[2,35],"64":[2,35],"65":[2,35],"66":[2,35],"69":[2,35],"70":[2,35],"71":[2,35],"72":[2,35],"75":[2,35],"78":[2,35],"82":[2,35],"84":[2,35],"88":[2,35],"96":[2,35],"98":[2,35],"99":[2,35],"100":[2,35],"103":[2,35],"105":[2,35],"112":[2,35],"115":[2,35],"118":[2,35],"119":[2,35],"122":[2,35],"123":[2,35],"126":[2,35],"127":[2,35],"128":[2,35],"129":[2,35],"130":[2,35],"131":[2,35],"132":[2,35],"133":[2,35],"134":[2,35],"135":[2,35],"136":[2,35],"137":[2,35],"138":[2,35],"139":[2,35],"140":[2,35],"141":[2,35],"142":[2,35],"143":[2,35],"144":[2,35],"145":[2,35],"146":[2,35],"147":[2,35],"148":[2,35],"149":[2,35],"150":[2,35],"151":[2,35],"152":[2,35],"153":[2,35],"154":[2,35],"155":[2,35]},{"1":[2,36],"3":[2,36],"24":[2,36],"25":[2,36],"42":[2,36],"46":[2,36],"54":[2,36],"56":[2,36],"64":[2,36],"65":[2,36],"66":[2,36],"69":[2,36],"70":[2,36],"71":[2,36],"72":[2,36],"75":[2,36],"78":[2,36],"82":[2,36],"84":[2,36],"88":[2,36],"96":[2,36],"98":[2,36],"99":[2,36],"100":[2,36],"103":[2,36],"105":[2,36],"112":[2,36],"115":[2,36],"118":[2,36],"119":[2,36],"122":[2,36],"123":[2,36],"126":[2,36],"127":[2,36],"128":[2,36],"129":[2,36],"130":[2,36],"131":[2,36],"132":[2,36],"133":[2,36],"134":[2,36],"135":[2,36],"136":[2,36],"137":[2,36],"138":[2,36],"139":[2,36],"140":[2,36],"141":[2,36],"142":[2,36],"143":[2,36],"144":[2,36],"145":[2,36],"146":[2,36],"147":[2,36],"148":[2,36],"149":[2,36],"150":[2,36],"151":[2,36],"152":[2,36],"153":[2,36],"154":[2,36],"155":[2,36]},{"1":[2,37],"3":[2,37],"24":[2,37],"25":[2,37],"42":[2,37],"46":[2,37],"54":[2,37],"56":[2,37],"64":[2,37],"65":[2,37],"66":[2,37],"69":[2,37],"70":[2,37],"71":[2,37],"72":[2,37],"75":[2,37],"78":[2,37],"82":[2,37],"84":[2,37],"88":[2,37],"96":[2,37],"98":[2,37],"99":[2,37],"100":[2,37],"103":[2,37],"105":[2,37],"112":[2,37],"115":[2,37],"118":[2,37],"119":[2,37],"122":[2,37],"123":[2,37],"126":[2,37],"127":[2,37],"128":[2,37],"129":[2,37],"130":[2,37],"131":[2,37],"132":[2,37],"133":[2,37],"134":[2,37],"135":[2,37],"136":[2,37],"137":[2,37],"138":[2,37],"139":[2,37],"140":[2,37],"141":[2,37],"142":[2,37],"143":[2,37],"144":[2,37],"145":[2,37],"146":[2,37],"147":[2,37],"148":[2,37],"149":[2,37],"150":[2,37],"151":[2,37],"152":[2,37],"153":[2,37],"154":[2,37],"155":[2,37]},{"1":[2,38],"3":[2,38],"24":[2,38],"25":[2,38],"42":[2,38],"46":[2,38],"54":[2,38],"56":[2,38],"64":[2,38],"65":[2,38],"66":[2,38],"69":[2,38],"70":[2,38],"71":[2,38],"72":[2,38],"75":[2,38],"78":[2,38],"82":[2,38],"84":[2,38],"88":[2,38],"96":[2,38],"98":[2,38],"99":[2,38],"100":[2,38],"103":[2,38],"105":[2,38],"112":[2,38],"115":[2,38],"118":[2,38],"119":[2,38],"122":[2,38],"123":[2,38],"126":[2,38],"127":[2,38],"128":[2,38],"129":[2,38],"130":[2,38],"131":[2,38],"132":[2,38],"133":[2,38],"134":[2,38],"135":[2,38],"136":[2,38],"137":[2,38],"138":[2,38],"139":[2,38],"140":[2,38],"141":[2,38],"142":[2,38],"143":[2,38],"144":[2,38],"145":[2,38],"146":[2,38],"147":[2,38],"148":[2,38],"149":[2,38],"150":[2,38],"151":[2,38],"152":[2,38],"153":[2,38],"154":[2,38],"155":[2,38]},{"1":[2,39],"3":[2,39],"24":[2,39],"25":[2,39],"42":[2,39],"46":[2,39],"54":[2,39],"56":[2,39],"64":[2,39],"65":[2,39],"66":[2,39],"69":[2,39],"70":[2,39],"71":[2,39],"72":[2,39],"75":[2,39],"78":[2,39],"82":[2,39],"84":[2,39],"88":[2,39],"96":[2,39],"98":[2,39],"99":[2,39],"100":[2,39],"103":[2,39],"105":[2,39],"112":[2,39],"115":[2,39],"118":[2,39],"119":[2,39],"122":[2,39],"123":[2,39],"126":[2,39],"127":[2,39],"128":[2,39],"129":[2,39],"130":[2,39],"131":[2,39],"132":[2,39],"133":[2,39],"134":[2,39],"135":[2,39],"136":[2,39],"137":[2,39],"138":[2,39],"139":[2,39],"140":[2,39],"141":[2,39],"142":[2,39],"143":[2,39],"144":[2,39],"145":[2,39],"146":[2,39],"147":[2,39],"148":[2,39],"149":[2,39],"150":[2,39],"151":[2,39],"152":[2,39],"153":[2,39],"154":[2,39],"155":[2,39]},{"1":[2,40],"3":[2,40],"24":[2,40],"25":[2,40],"42":[2,40],"46":[2,40],"54":[2,40],"56":[2,40],"64":[2,40],"65":[2,40],"66":[2,40],"69":[2,40],"70":[2,40],"71":[2,40],"72":[2,40],"75":[2,40],"78":[2,40],"82":[2,40],"84":[2,40],"88":[2,40],"96":[2,40],"98":[2,40],"99":[2,40],"100":[2,40],"103":[2,40],"105":[2,40],"112":[2,40],"115":[2,40],"118":[2,40],"119":[2,40],"122":[2,40],"123":[2,40],"126":[2,40],"127":[2,40],"128":[2,40],"129":[2,40],"130":[2,40],"131":[2,40],"132":[2,40],"133":[2,40],"134":[2,40],"135":[2,40],"136":[2,40],"137":[2,40],"138":[2,40],"139":[2,40],"140":[2,40],"141":[2,40],"142":[2,40],"143":[2,40],"144":[2,40],"145":[2,40],"146":[2,40],"147":[2,40],"148":[2,40],"149":[2,40],"150":[2,40],"151":[2,40],"152":[2,40],"153":[2,40],"154":[2,40],"155":[2,40]},{"3":[2,102],"6":164,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":163,"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,102],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,81],"23":172,"24":[1,169],"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":168,"45":[1,54],"54":[2,81],"74":166,"75":[2,81],"76":167},{"6":173,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,95],"3":[2,95],"24":[2,95],"25":[2,95],"26":174,"27":[1,55],"42":[2,95],"46":[2,95],"54":[2,95],"56":[2,95],"64":[2,95],"65":[2,95],"66":[2,95],"69":[2,95],"70":[2,95],"71":[2,95],"72":[2,95],"75":[2,95],"78":[2,95],"82":[2,95],"84":[2,95],"88":[2,95],"96":[2,95],"98":[2,95],"99":[2,95],"100":[2,95],"103":[2,95],"105":[2,95],"112":[2,95],"115":[2,95],"118":[2,95],"119":[2,95],"122":[2,95],"123":[2,95],"126":[2,95],"127":[2,95],"128":[2,95],"129":[2,95],"130":[2,95],"131":[2,95],"132":[2,95],"133":[2,95],"134":[2,95],"135":[2,95],"136":[2,95],"137":[2,95],"138":[2,95],"139":[2,95],"140":[2,95],"141":[2,95],"142":[2,95],"143":[2,95],"144":[2,95],"145":[2,95],"146":[2,95],"147":[2,95],"148":[2,95],"149":[2,95],"150":[2,95],"151":[2,95],"152":[2,95],"153":[2,95],"154":[2,95],"155":[2,95]},{"82":[1,175]},{"24":[2,51]},{"24":[2,52]},{"1":[2,139],"3":[2,139],"24":[2,139],"25":[2,139],"46":[2,139],"54":[2,139],"56":[2,139],"70":[2,139],"72":[2,139],"75":[2,139],"84":[2,139],"88":[2,139],"96":[2,139],"98":[2,139],"99":[2,139],"100":[2,139],"103":[2,139],"105":[2,139],"108":[1,176],"112":[2,139],"113":177,"115":[2,139],"118":[2,139],"119":[2,139],"122":[2,139],"123":[2,139],"126":[2,139],"127":[2,139],"128":[2,139],"129":[2,139],"130":[2,139],"131":[2,139],"132":[2,139],"133":[2,139],"134":[2,139],"135":[2,139],"136":[2,139],"137":[2,139],"138":[2,139],"139":[2,139],"140":[2,139],"141":[2,139],"142":[2,139],"143":[2,139],"144":[2,139],"145":[2,139],"146":[2,139],"147":[2,139],"148":[2,139],"149":[2,139],"150":[2,139],"151":[2,139],"152":[2,139],"153":[2,139],"154":[2,139],"155":[2,139]},{"6":178,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,28],"3":[2,28],"24":[2,28],"25":[2,28],"42":[2,28],"46":[2,28],"54":[2,28],"56":[2,28],"64":[2,28],"65":[2,28],"66":[2,28],"69":[2,28],"70":[2,28],"71":[2,28],"72":[2,28],"75":[2,28],"78":[2,28],"82":[2,28],"84":[2,28],"88":[2,28],"96":[2,28],"98":[2,28],"99":[2,28],"100":[2,28],"103":[2,28],"105":[2,28],"112":[2,28],"115":[2,28],"118":[2,28],"119":[2,28],"122":[2,28],"123":[2,28],"126":[2,28],"127":[2,28],"128":[2,28],"129":[2,28],"130":[2,28],"131":[2,28],"132":[2,28],"133":[2,28],"134":[2,28],"135":[2,28],"136":[2,28],"137":[2,28],"138":[2,28],"139":[2,28],"140":[2,28],"141":[2,28],"142":[2,28],"143":[2,28],"144":[2,28],"145":[2,28],"146":[2,28],"147":[2,28],"148":[2,28],"149":[2,28],"150":[2,28],"151":[2,28],"152":[2,28],"153":[2,28],"154":[2,28],"155":[2,28]},{"1":[2,29],"3":[2,29],"24":[2,29],"25":[2,29],"42":[2,29],"46":[2,29],"54":[2,29],"56":[2,29],"64":[2,29],"65":[2,29],"66":[2,29],"69":[2,29],"70":[2,29],"71":[2,29],"72":[2,29],"75":[2,29],"78":[2,29],"82":[2,29],"84":[2,29],"88":[2,29],"96":[2,29],"98":[2,29],"99":[2,29],"100":[2,29],"103":[2,29],"105":[2,29],"112":[2,29],"115":[2,29],"118":[2,29],"119":[2,29],"122":[2,29],"123":[2,29],"126":[2,29],"127":[2,29],"128":[2,29],"129":[2,29],"130":[2,29],"131":[2,29],"132":[2,29],"133":[2,29],"134":[2,29],"135":[2,29],"136":[2,29],"137":[2,29],"138":[2,29],"139":[2,29],"140":[2,29],"141":[2,29],"142":[2,29],"143":[2,29],"144":[2,29],"145":[2,29],"146":[2,29],"147":[2,29],"148":[2,29],"149":[2,29],"150":[2,29],"151":[2,29],"152":[2,29],"153":[2,29],"154":[2,29],"155":[2,29]},{"6":179,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,7],"3":[2,7],"6":180,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[2,7],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,4]},{"1":[2,155],"3":[2,155],"24":[2,155],"25":[2,155],"46":[2,155],"54":[2,155],"56":[2,155],"70":[2,155],"72":[2,155],"75":[2,155],"84":[2,155],"88":[2,155],"96":[2,155],"98":[2,155],"99":[2,155],"100":[2,155],"103":[2,155],"105":[2,155],"112":[2,155],"115":[2,155],"118":[2,155],"119":[2,155],"122":[2,155],"123":[2,155],"126":[2,155],"127":[2,155],"128":[2,155],"129":[2,155],"130":[2,155],"131":[2,155],"132":[2,155],"133":[2,155],"134":[2,155],"135":[2,155],"136":[2,155],"137":[2,155],"138":[2,155],"139":[2,155],"140":[2,155],"141":[2,155],"142":[2,155],"143":[2,155],"144":[2,155],"145":[2,155],"146":[2,155],"147":[2,155],"148":[2,155],"149":[2,155],"150":[2,155],"151":[2,155],"152":[2,155],"153":[2,155],"154":[2,155],"155":[2,155]},{"1":[2,156],"3":[2,156],"24":[2,156],"25":[2,156],"46":[2,156],"54":[2,156],"56":[2,156],"70":[2,156],"72":[2,156],"75":[2,156],"84":[2,156],"88":[2,156],"96":[2,156],"98":[2,156],"99":[2,156],"100":[2,156],"103":[2,156],"105":[2,156],"112":[2,156],"115":[2,156],"118":[2,156],"119":[2,156],"122":[2,156],"123":[2,156],"126":[2,156],"127":[2,156],"128":[2,156],"129":[2,156],"130":[2,156],"131":[2,156],"132":[2,156],"133":[2,156],"134":[2,156],"135":[2,156],"136":[2,156],"137":[2,156],"138":[2,156],"139":[2,156],"140":[2,156],"141":[2,156],"142":[2,156],"143":[2,156],"144":[2,156],"145":[2,156],"146":[2,156],"147":[2,156],"148":[2,156],"149":[2,156],"150":[2,156],"151":[2,156],"152":[2,156],"153":[2,156],"154":[2,156],"155":[2,156]},{"6":181,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":182,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":183,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":184,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":185,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":186,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":187,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":188,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":189,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":190,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":191,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":192,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":193,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":194,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":195,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":196,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":197,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":198,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":199,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":200,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":201,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":202,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":203,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,48],"3":[2,48],"6":204,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[2,48],"25":[2,48],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,48],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,48],"56":[2,48],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,48],"72":[2,48],"73":[1,68],"75":[2,48],"77":[1,53],"79":[1,32],"80":33,"84":[2,48],"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,48],"90":[1,47],"94":[1,48],"95":[1,69],"96":[2,48],"97":50,"98":[2,48],"99":[2,48],"100":[2,48],"103":[2,48],"105":[2,48],"106":[1,52],"111":74,"112":[2,48],"114":46,"115":[2,48],"116":[1,36],"117":[1,37],"118":[2,48],"119":[2,48],"120":[1,40],"121":[1,41],"122":[2,48],"123":[2,48],"124":[1,44],"125":[1,45],"126":[2,48],"127":[2,48],"128":[2,48],"129":[2,48],"130":[2,48],"131":[2,48],"132":[2,48],"133":[2,48],"134":[2,48],"135":[2,48],"136":[2,48],"137":[2,48],"138":[2,48],"139":[2,48],"140":[2,48],"141":[2,48],"142":[2,48],"143":[2,48],"144":[2,48],"145":[2,48],"146":[2,48],"147":[2,48],"148":[2,48],"149":[2,48],"150":[2,48],"151":[2,48],"152":[2,48],"153":[2,48],"154":[2,48],"155":[2,48]},{"6":205,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":206,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":207,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":208,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":209,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":210,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":211,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":212,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":213,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":214,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":215,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":216,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,121],"3":[2,121],"24":[2,121],"25":[2,121],"46":[2,121],"54":[2,121],"56":[2,121],"70":[2,121],"72":[2,121],"75":[2,121],"84":[2,121],"88":[2,121],"96":[2,121],"98":[2,121],"99":[2,121],"100":[2,121],"103":[2,121],"105":[2,121],"112":[2,121],"115":[2,121],"118":[2,121],"119":[2,121],"122":[2,121],"123":[2,121],"126":[2,121],"127":[2,121],"128":[2,121],"129":[2,121],"130":[2,121],"131":[2,121],"132":[2,121],"133":[2,121],"134":[2,121],"135":[2,121],"136":[2,121],"137":[2,121],"138":[2,121],"139":[2,121],"140":[2,121],"141":[2,121],"142":[2,121],"143":[2,121],"144":[2,121],"145":[2,121],"146":[2,121],"147":[2,121],"148":[2,121],"149":[2,121],"150":[2,121],"151":[2,121],"152":[2,121],"153":[2,121],"154":[2,121],"155":[2,121]},{"26":159,"27":[1,55],"101":217},{"56":[1,218]},{"3":[1,79],"25":[1,219]},{"1":[2,26],"3":[2,26],"24":[2,26],"25":[2,26],"45":[2,26],"46":[2,26],"54":[2,26],"56":[2,26],"70":[2,26],"72":[2,26],"75":[2,26],"84":[2,26],"88":[2,26],"92":[2,26],"93":[2,26],"96":[2,26],"98":[2,26],"99":[2,26],"100":[2,26],"103":[2,26],"105":[2,26],"108":[2,26],"110":[2,26],"112":[2,26],"115":[2,26],"118":[2,26],"119":[2,26],"122":[2,26],"123":[2,26],"126":[2,26],"127":[2,26],"128":[2,26],"129":[2,26],"130":[2,26],"131":[2,26],"132":[2,26],"133":[2,26],"134":[2,26],"135":[2,26],"136":[2,26],"137":[2,26],"138":[2,26],"139":[2,26],"140":[2,26],"141":[2,26],"142":[2,26],"143":[2,26],"144":[2,26],"145":[2,26],"146":[2,26],"147":[2,26],"148":[2,26],"149":[2,26],"150":[2,26],"151":[2,26],"152":[2,26],"153":[2,26],"154":[2,26],"155":[2,26]},{"1":[2,66],"3":[2,66],"24":[2,66],"25":[2,66],"42":[2,66],"46":[2,66],"54":[2,66],"56":[2,66],"64":[2,66],"65":[2,66],"66":[2,66],"69":[2,66],"70":[2,66],"71":[2,66],"72":[2,66],"75":[2,66],"78":[2,66],"82":[2,66],"84":[2,66],"88":[2,66],"96":[2,66],"98":[2,66],"99":[2,66],"100":[2,66],"103":[2,66],"105":[2,66],"112":[2,66],"115":[2,66],"118":[2,66],"119":[2,66],"122":[2,66],"123":[2,66],"126":[2,66],"127":[2,66],"128":[2,66],"129":[2,66],"130":[2,66],"131":[2,66],"132":[2,66],"133":[2,66],"134":[2,66],"135":[2,66],"136":[2,66],"137":[2,66],"138":[2,66],"139":[2,66],"140":[2,66],"141":[2,66],"142":[2,66],"143":[2,66],"144":[2,66],"145":[2,66],"146":[2,66],"147":[2,66],"148":[2,66],"149":[2,66],"150":[2,66],"151":[2,66],"152":[2,66],"153":[2,66],"154":[2,66],"155":[2,66]},{"6":220,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"7":221,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,91],"3":[2,91],"24":[2,91],"25":[2,91],"46":[2,91],"54":[2,91],"56":[2,91],"64":[2,91],"65":[2,91],"66":[2,91],"69":[2,91],"70":[2,91],"71":[2,91],"72":[2,91],"75":[2,91],"82":[2,91],"84":[2,91],"88":[2,91],"96":[2,91],"98":[2,91],"99":[2,91],"100":[2,91],"103":[2,91],"105":[2,91],"112":[2,91],"115":[2,91],"118":[2,91],"119":[2,91],"122":[2,91],"123":[2,91],"126":[2,91],"127":[2,91],"128":[2,91],"129":[2,91],"130":[2,91],"131":[2,91],"132":[2,91],"133":[2,91],"134":[2,91],"135":[2,91],"136":[2,91],"137":[2,91],"138":[2,91],"139":[2,91],"140":[2,91],"141":[2,91],"142":[2,91],"143":[2,91],"144":[2,91],"145":[2,91],"146":[2,91],"147":[2,91],"148":[2,91],"149":[2,91],"150":[2,91],"151":[2,91],"152":[2,91],"153":[2,91],"154":[2,91],"155":[2,91]},{"26":222,"27":[1,55]},{"26":223,"27":[1,55]},{"26":224,"27":[1,55]},{"1":[2,71],"3":[2,71],"24":[2,71],"25":[2,71],"42":[2,71],"46":[2,71],"54":[2,71],"56":[2,71],"64":[2,71],"65":[2,71],"66":[2,71],"69":[2,71],"70":[2,71],"71":[2,71],"72":[2,71],"75":[2,71],"78":[2,71],"82":[2,71],"84":[2,71],"88":[2,71],"96":[2,71],"98":[2,71],"99":[2,71],"100":[2,71],"103":[2,71],"105":[2,71],"112":[2,71],"115":[2,71],"118":[2,71],"119":[2,71],"122":[2,71],"123":[2,71],"126":[2,71],"127":[2,71],"128":[2,71],"129":[2,71],"130":[2,71],"131":[2,71],"132":[2,71],"133":[2,71],"134":[2,71],"135":[2,71],"136":[2,71],"137":[2,71],"138":[2,71],"139":[2,71],"140":[2,71],"141":[2,71],"142":[2,71],"143":[2,71],"144":[2,71],"145":[2,71],"146":[2,71],"147":[2,71],"148":[2,71],"149":[2,71],"150":[2,71],"151":[2,71],"152":[2,71],"153":[2,71],"154":[2,71],"155":[2,71]},{"1":[2,72],"3":[2,72],"24":[2,72],"25":[2,72],"42":[2,72],"46":[2,72],"54":[2,72],"56":[2,72],"64":[2,72],"65":[2,72],"66":[2,72],"69":[2,72],"70":[2,72],"71":[2,72],"72":[2,72],"75":[2,72],"78":[2,72],"82":[2,72],"84":[2,72],"88":[2,72],"96":[2,72],"98":[2,72],"99":[2,72],"100":[2,72],"103":[2,72],"105":[2,72],"112":[2,72],"115":[2,72],"118":[2,72],"119":[2,72],"122":[2,72],"123":[2,72],"126":[2,72],"127":[2,72],"128":[2,72],"129":[2,72],"130":[2,72],"131":[2,72],"132":[2,72],"133":[2,72],"134":[2,72],"135":[2,72],"136":[2,72],"137":[2,72],"138":[2,72],"139":[2,72],"140":[2,72],"141":[2,72],"142":[2,72],"143":[2,72],"144":[2,72],"145":[2,72],"146":[2,72],"147":[2,72],"148":[2,72],"149":[2,72],"150":[2,72],"151":[2,72],"152":[2,72],"153":[2,72],"154":[2,72],"155":[2,72]},{"3":[2,102],"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":225,"84":[2,102],"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":227,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":228,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,67],"3":[2,67],"24":[2,67],"25":[2,67],"42":[2,67],"46":[2,67],"54":[2,67],"56":[2,67],"64":[2,67],"65":[2,67],"66":[2,67],"69":[2,67],"70":[2,67],"71":[2,67],"72":[2,67],"75":[2,67],"78":[2,67],"82":[2,67],"84":[2,67],"88":[2,67],"96":[2,67],"98":[2,67],"99":[2,67],"100":[2,67],"103":[2,67],"105":[2,67],"112":[2,67],"115":[2,67],"118":[2,67],"119":[2,67],"122":[2,67],"123":[2,67],"126":[2,67],"127":[2,67],"128":[2,67],"129":[2,67],"130":[2,67],"131":[2,67],"132":[2,67],"133":[2,67],"134":[2,67],"135":[2,67],"136":[2,67],"137":[2,67],"138":[2,67],"139":[2,67],"140":[2,67],"141":[2,67],"142":[2,67],"143":[2,67],"144":[2,67],"145":[2,67],"146":[2,67],"147":[2,67],"148":[2,67],"149":[2,67],"150":[2,67],"151":[2,67],"152":[2,67],"153":[2,67],"154":[2,67],"155":[2,67]},{"1":[2,92],"3":[2,92],"24":[2,92],"25":[2,92],"46":[2,92],"54":[2,92],"56":[2,92],"64":[2,92],"65":[2,92],"66":[2,92],"69":[2,92],"70":[2,92],"71":[2,92],"72":[2,92],"75":[2,92],"82":[2,92],"84":[2,92],"88":[2,92],"96":[2,92],"98":[2,92],"99":[2,92],"100":[2,92],"103":[2,92],"105":[2,92],"112":[2,92],"115":[2,92],"118":[2,92],"119":[2,92],"122":[2,92],"123":[2,92],"126":[2,92],"127":[2,92],"128":[2,92],"129":[2,92],"130":[2,92],"131":[2,92],"132":[2,92],"133":[2,92],"134":[2,92],"135":[2,92],"136":[2,92],"137":[2,92],"138":[2,92],"139":[2,92],"140":[2,92],"141":[2,92],"142":[2,92],"143":[2,92],"144":[2,92],"145":[2,92],"146":[2,92],"147":[2,92],"148":[2,92],"149":[2,92],"150":[2,92],"151":[2,92],"152":[2,92],"153":[2,92],"154":[2,92],"155":[2,92]},{"1":[2,88],"3":[2,88],"24":[2,88],"25":[2,88],"46":[2,88],"54":[2,88],"56":[2,88],"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,88],"71":[1,135],"72":[2,88],"75":[2,88],"81":137,"82":[1,133],"84":[2,88],"88":[2,88],"96":[2,88],"98":[2,88],"99":[2,88],"100":[2,88],"103":[2,88],"105":[2,88],"112":[2,88],"115":[2,88],"118":[2,88],"119":[2,88],"122":[2,88],"123":[2,88],"126":[2,88],"127":[2,88],"128":[2,88],"129":[2,88],"130":[2,88],"131":[2,88],"132":[2,88],"133":[2,88],"134":[2,88],"135":[2,88],"136":[2,88],"137":[2,88],"138":[2,88],"139":[2,88],"140":[2,88],"141":[2,88],"142":[2,88],"143":[2,88],"144":[2,88],"145":[2,88],"146":[2,88],"147":[2,88],"148":[2,88],"149":[2,88],"150":[2,88],"151":[2,88],"152":[2,88],"153":[2,88],"154":[2,88],"155":[2,88]},{"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"71":[1,135],"81":127,"82":[1,133]},{"49":[1,229],"54":[1,230]},{"49":[2,54],"54":[2,54],"56":[1,231]},{"49":[2,56],"54":[2,56],"56":[2,56]},{"1":[2,50],"3":[2,50],"24":[2,50],"25":[2,50],"46":[2,50],"54":[2,50],"56":[2,50],"70":[2,50],"72":[2,50],"75":[2,50],"84":[2,50],"88":[2,50],"96":[2,50],"98":[2,50],"99":[2,50],"100":[2,50],"103":[2,50],"105":[2,50],"112":[2,50],"115":[2,50],"118":[2,50],"119":[2,50],"122":[2,50],"123":[2,50],"126":[2,50],"127":[2,50],"128":[2,50],"129":[2,50],"130":[2,50],"131":[2,50],"132":[2,50],"133":[2,50],"134":[2,50],"135":[2,50],"136":[2,50],"137":[2,50],"138":[2,50],"139":[2,50],"140":[2,50],"141":[2,50],"142":[2,50],"143":[2,50],"144":[2,50],"145":[2,50],"146":[2,50],"147":[2,50],"148":[2,50],"149":[2,50],"150":[2,50],"151":[2,50],"152":[2,50],"153":[2,50],"154":[2,50],"155":[2,50]},{"1":[2,145],"3":[2,145],"24":[2,145],"25":[2,145],"46":[1,106],"54":[2,145],"56":[2,145],"70":[2,145],"72":[2,145],"75":[2,145],"84":[2,145],"88":[2,145],"96":[2,145],"97":119,"98":[2,145],"99":[2,145],"100":[2,145],"103":[2,145],"105":[2,145],"112":[2,145],"115":[2,145],"118":[2,145],"119":[2,145],"126":[2,145],"127":[2,145],"128":[2,145],"129":[2,145],"130":[2,145],"131":[2,145],"132":[2,145],"133":[2,145],"134":[2,145],"135":[2,145],"136":[2,145],"137":[2,145],"138":[2,145],"139":[2,145],"140":[2,145],"141":[2,145],"142":[2,145],"143":[2,145],"144":[2,145],"145":[2,145],"146":[2,145],"147":[2,145],"148":[2,145],"149":[2,145],"150":[2,145],"151":[2,145],"152":[2,145],"153":[2,145],"154":[2,145],"155":[2,145]},{"1":[2,146],"3":[2,146],"24":[2,146],"25":[2,146],"46":[1,106],"54":[2,146],"56":[2,146],"70":[2,146],"72":[2,146],"75":[2,146],"84":[2,146],"88":[2,146],"96":[2,146],"97":119,"98":[2,146],"99":[2,146],"100":[2,146],"103":[2,146],"105":[2,146],"112":[2,146],"115":[2,146],"118":[2,146],"119":[2,146],"126":[2,146],"127":[2,146],"128":[2,146],"129":[2,146],"130":[2,146],"131":[2,146],"132":[2,146],"133":[2,146],"134":[2,146],"135":[2,146],"136":[2,146],"137":[2,146],"138":[2,146],"139":[2,146],"140":[2,146],"141":[2,146],"142":[2,146],"143":[2,146],"144":[2,146],"145":[2,146],"146":[2,146],"147":[2,146],"148":[2,146],"149":[2,146],"150":[2,146],"151":[2,146],"152":[2,146],"153":[2,146],"154":[2,146],"155":[2,146]},{"1":[2,147],"3":[2,147],"24":[2,147],"25":[2,147],"46":[1,106],"54":[2,147],"56":[2,147],"70":[2,147],"72":[2,147],"75":[2,147],"84":[2,147],"88":[2,147],"96":[2,147],"97":119,"98":[2,147],"99":[2,147],"100":[2,147],"103":[2,147],"105":[2,147],"112":[2,147],"115":[2,147],"118":[2,147],"119":[2,147],"126":[2,147],"127":[2,147],"128":[2,147],"129":[2,147],"130":[2,147],"131":[2,147],"132":[2,147],"133":[2,147],"134":[2,147],"135":[2,147],"136":[2,147],"137":[2,147],"138":[2,147],"139":[2,147],"140":[2,147],"141":[2,147],"142":[2,147],"143":[2,147],"144":[2,147],"145":[2,147],"146":[2,147],"147":[2,147],"148":[2,147],"149":[2,147],"150":[2,147],"151":[2,147],"152":[2,147],"153":[2,147],"154":[2,147],"155":[2,147]},{"1":[2,148],"3":[2,148],"24":[2,148],"25":[2,148],"46":[1,106],"54":[2,148],"56":[2,148],"70":[2,148],"72":[2,148],"75":[2,148],"84":[2,148],"88":[2,148],"96":[2,148],"97":119,"98":[2,148],"99":[2,148],"100":[2,148],"103":[2,148],"105":[2,148],"112":[2,148],"115":[2,148],"118":[2,148],"119":[2,148],"126":[2,148],"127":[2,148],"128":[2,148],"129":[2,148],"130":[2,148],"131":[2,148],"132":[2,148],"133":[2,148],"134":[2,148],"135":[2,148],"136":[2,148],"137":[2,148],"138":[2,148],"139":[2,148],"140":[2,148],"141":[2,148],"142":[2,148],"143":[2,148],"144":[2,148],"145":[2,148],"146":[2,148],"147":[2,148],"148":[2,148],"149":[2,148],"150":[2,148],"151":[2,148],"152":[2,148],"153":[2,148],"154":[2,148],"155":[2,148]},{"1":[2,149],"3":[2,149],"24":[2,149],"25":[2,149],"46":[1,106],"54":[2,149],"56":[2,149],"70":[2,149],"72":[2,149],"75":[2,149],"84":[2,149],"88":[2,149],"96":[2,149],"97":119,"98":[2,149],"99":[2,149],"100":[2,149],"103":[2,149],"105":[2,149],"112":[2,149],"115":[2,149],"118":[2,149],"119":[2,149],"126":[2,149],"127":[2,149],"128":[2,149],"129":[2,149],"130":[2,149],"131":[2,149],"132":[2,149],"133":[2,149],"134":[2,149],"135":[2,149],"136":[2,149],"137":[2,149],"138":[2,149],"139":[2,149],"140":[2,149],"141":[2,149],"142":[2,149],"143":[2,149],"144":[2,149],"145":[2,149],"146":[2,149],"147":[2,149],"148":[2,149],"149":[2,149],"150":[2,149],"151":[2,149],"152":[2,149],"153":[2,149],"154":[2,149],"155":[2,149]},{"1":[2,150],"3":[2,150],"24":[2,150],"25":[2,150],"46":[1,106],"54":[2,150],"56":[2,150],"70":[2,150],"72":[2,150],"75":[2,150],"84":[2,150],"88":[2,150],"96":[2,150],"97":119,"98":[2,150],"99":[2,150],"100":[2,150],"103":[2,150],"105":[2,150],"112":[2,150],"115":[2,150],"118":[2,150],"119":[2,150],"126":[2,150],"127":[2,150],"128":[2,150],"129":[2,150],"130":[2,150],"131":[2,150],"132":[2,150],"133":[2,150],"134":[2,150],"135":[2,150],"136":[2,150],"137":[2,150],"138":[2,150],"139":[2,150],"140":[2,150],"141":[2,150],"142":[2,150],"143":[2,150],"144":[2,150],"145":[2,150],"146":[2,150],"147":[2,150],"148":[2,150],"149":[2,150],"150":[2,150],"151":[2,150],"152":[2,150],"153":[2,150],"154":[2,150],"155":[2,150]},{"1":[2,151],"3":[2,151],"24":[2,151],"25":[2,151],"46":[1,106],"54":[2,151],"56":[2,151],"70":[2,151],"72":[2,151],"75":[2,151],"84":[2,151],"88":[2,151],"96":[2,151],"97":119,"98":[2,151],"99":[2,151],"100":[2,151],"103":[2,151],"105":[2,151],"112":[2,151],"115":[2,151],"118":[2,151],"119":[2,151],"126":[2,151],"127":[2,151],"128":[2,151],"129":[2,151],"130":[2,151],"131":[2,151],"132":[2,151],"133":[2,151],"134":[2,151],"135":[2,151],"136":[2,151],"137":[2,151],"138":[2,151],"139":[2,151],"140":[2,151],"141":[2,151],"142":[2,151],"143":[2,151],"144":[2,151],"145":[2,151],"146":[2,151],"147":[2,151],"148":[2,151],"149":[2,151],"150":[2,151],"151":[2,151],"152":[2,151],"153":[2,151],"154":[2,151],"155":[2,151]},{"1":[2,152],"3":[2,152],"24":[2,152],"25":[2,152],"46":[1,106],"54":[2,152],"56":[2,152],"70":[2,152],"72":[2,152],"75":[2,152],"84":[2,152],"88":[2,152],"96":[2,152],"97":119,"98":[2,152],"99":[2,152],"100":[2,152],"103":[2,152],"105":[2,152],"112":[2,152],"115":[2,152],"118":[2,152],"119":[2,152],"126":[2,152],"127":[2,152],"128":[2,152],"129":[2,152],"130":[2,152],"131":[2,152],"132":[2,152],"133":[2,152],"134":[2,152],"135":[2,152],"136":[2,152],"137":[2,152],"138":[2,152],"139":[2,152],"140":[2,152],"141":[2,152],"142":[2,152],"143":[2,152],"144":[2,152],"145":[2,152],"146":[2,152],"147":[2,152],"148":[2,152],"149":[2,152],"150":[2,152],"151":[2,152],"152":[2,152],"153":[2,152],"154":[2,152],"155":[2,152]},{"1":[2,153],"3":[2,153],"24":[2,153],"25":[2,153],"46":[1,106],"54":[2,153],"56":[2,153],"70":[2,153],"72":[2,153],"75":[2,153],"84":[2,153],"88":[2,153],"96":[2,153],"97":119,"98":[2,153],"99":[2,153],"100":[2,153],"103":[2,153],"105":[2,153],"112":[2,153],"115":[2,153],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,153],"140":[2,153],"141":[2,153],"142":[2,153],"143":[2,153],"144":[2,153],"145":[2,153],"146":[2,153],"147":[2,153],"148":[2,153],"149":[2,153],"150":[2,153],"151":[2,153],"152":[2,153],"153":[2,153],"154":[2,153],"155":[1,115]},{"1":[2,154],"3":[2,154],"24":[2,154],"25":[2,154],"46":[1,106],"54":[2,154],"56":[2,154],"70":[2,154],"72":[2,154],"75":[2,154],"84":[2,154],"88":[2,154],"96":[2,154],"97":119,"98":[2,154],"99":[2,154],"100":[2,154],"103":[2,154],"105":[2,154],"112":[2,154],"115":[2,154],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,154],"140":[2,154],"141":[2,154],"142":[2,154],"143":[2,154],"144":[2,154],"145":[2,154],"146":[2,154],"147":[2,154],"148":[2,154],"149":[2,154],"150":[2,154],"151":[2,154],"152":[2,154],"153":[2,154],"154":[2,154],"155":[1,115]},{"91":232,"92":[1,233],"93":[1,234]},{"1":[2,116],"3":[2,116],"24":[2,116],"25":[2,116],"46":[1,106],"54":[2,116],"56":[1,121],"70":[2,116],"72":[2,116],"75":[2,116],"84":[2,116],"88":[2,116],"96":[2,116],"97":119,"98":[2,116],"99":[2,116],"100":[2,116],"103":[1,116],"105":[2,116],"112":[2,116],"115":[2,116],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,45],"3":[2,45],"24":[2,45],"25":[2,45],"46":[1,106],"54":[2,45],"56":[1,121],"70":[2,45],"72":[2,45],"75":[2,45],"84":[2,45],"88":[2,45],"96":[2,45],"97":119,"98":[2,45],"99":[2,45],"100":[1,120],"103":[1,116],"105":[2,45],"112":[2,45],"115":[2,45],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,120],"3":[2,120],"24":[2,120],"25":[2,120],"46":[2,120],"54":[2,120],"56":[2,120],"70":[2,120],"72":[2,120],"75":[2,120],"84":[2,120],"88":[2,120],"96":[2,120],"98":[2,120],"99":[2,120],"100":[2,120],"103":[2,120],"105":[2,120],"112":[2,120],"115":[2,120],"118":[2,120],"119":[2,120],"122":[2,120],"123":[2,120],"126":[2,120],"127":[2,120],"128":[2,120],"129":[2,120],"130":[2,120],"131":[2,120],"132":[2,120],"133":[2,120],"134":[2,120],"135":[2,120],"136":[2,120],"137":[2,120],"138":[2,120],"139":[2,120],"140":[2,120],"141":[2,120],"142":[2,120],"143":[2,120],"144":[2,120],"145":[2,120],"146":[2,120],"147":[2,120],"148":[2,120],"149":[2,120],"150":[2,120],"151":[2,120],"152":[2,120],"153":[2,120],"154":[2,120],"155":[2,120]},{"102":235,"103":[1,236],"104":[1,237]},{"54":[1,238],"103":[2,124],"104":[2,124]},{"24":[1,239],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,77],"3":[2,77],"24":[1,169],"25":[2,77],"46":[2,77],"54":[2,77],"56":[2,77],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,77],"71":[1,135],"72":[2,77],"75":[2,77],"76":241,"78":[1,240],"81":127,"82":[1,133],"84":[2,77],"88":[2,77],"96":[2,77],"98":[2,77],"99":[2,77],"100":[2,77],"103":[2,77],"105":[2,77],"112":[2,77],"115":[2,77],"118":[2,77],"119":[2,77],"122":[2,77],"123":[2,77],"126":[2,77],"127":[2,77],"128":[2,77],"129":[2,77],"130":[2,77],"131":[2,77],"132":[2,77],"133":[2,77],"134":[2,77],"135":[2,77],"136":[2,77],"137":[2,77],"138":[2,77],"139":[2,77],"140":[2,77],"141":[2,77],"142":[2,77],"143":[2,77],"144":[2,77],"145":[2,77],"146":[2,77],"147":[2,77],"148":[2,77],"149":[2,77],"150":[2,77],"151":[2,77],"152":[2,77],"153":[2,77],"154":[2,77],"155":[2,77]},{"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"71":[1,135],"81":137,"82":[1,133]},{"3":[1,244],"25":[1,245],"54":[1,243],"88":[1,242]},{"3":[2,103],"25":[2,103],"46":[1,106],"54":[2,103],"56":[1,246],"88":[2,103],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":247,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[1,250],"54":[1,249],"75":[1,248]},{"75":[1,251]},{"3":[2,82],"25":[2,82],"54":[2,82],"75":[2,82]},{"3":[2,81],"23":172,"25":[2,81],"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":168,"45":[1,54],"54":[2,81],"74":252},{"42":[1,253]},{"42":[1,254]},{"3":[2,44],"25":[2,44],"54":[2,44],"75":[2,44]},{"46":[1,106],"56":[1,121],"96":[1,255],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,96],"3":[2,96],"24":[2,96],"25":[2,96],"42":[2,96],"46":[2,96],"54":[2,96],"56":[2,96],"64":[2,96],"65":[2,96],"66":[2,96],"69":[2,96],"70":[2,96],"71":[2,96],"72":[2,96],"75":[2,96],"78":[2,96],"82":[2,96],"84":[2,96],"88":[2,96],"96":[2,96],"98":[2,96],"99":[2,96],"100":[2,96],"103":[2,96],"105":[2,96],"112":[2,96],"115":[2,96],"118":[2,96],"119":[2,96],"122":[2,96],"123":[2,96],"126":[2,96],"127":[2,96],"128":[2,96],"129":[2,96],"130":[2,96],"131":[2,96],"132":[2,96],"133":[2,96],"134":[2,96],"135":[2,96],"136":[2,96],"137":[2,96],"138":[2,96],"139":[2,96],"140":[2,96],"141":[2,96],"142":[2,96],"143":[2,96],"144":[2,96],"145":[2,96],"146":[2,96],"147":[2,96],"148":[2,96],"149":[2,96],"150":[2,96],"151":[2,96],"152":[2,96],"153":[2,96],"154":[2,96],"155":[2,96]},{"3":[2,102],"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":256,"84":[2,102],"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"5":257,"24":[1,6],"112":[1,258]},{"1":[2,138],"3":[2,138],"24":[2,138],"25":[2,138],"46":[2,138],"54":[2,138],"56":[2,138],"70":[2,138],"72":[2,138],"75":[2,138],"84":[2,138],"88":[2,138],"96":[2,138],"98":[2,138],"99":[2,138],"100":[2,138],"103":[2,138],"105":[2,138],"108":[2,138],"112":[2,138],"115":[2,138],"118":[2,138],"119":[2,138],"122":[2,138],"123":[2,138],"126":[2,138],"127":[2,138],"128":[2,138],"129":[2,138],"130":[2,138],"131":[2,138],"132":[2,138],"133":[2,138],"134":[2,138],"135":[2,138],"136":[2,138],"137":[2,138],"138":[2,138],"139":[2,138],"140":[2,138],"141":[2,138],"142":[2,138],"143":[2,138],"144":[2,138],"145":[2,138],"146":[2,138],"147":[2,138],"148":[2,138],"149":[2,138],"150":[2,138],"151":[2,138],"152":[2,138],"153":[2,138],"154":[2,138],"155":[2,138]},{"1":[2,118],"3":[2,118],"24":[2,118],"25":[2,118],"46":[1,106],"54":[2,118],"56":[1,121],"70":[2,118],"72":[2,118],"75":[2,118],"84":[2,118],"88":[2,118],"96":[2,118],"97":119,"98":[1,75],"99":[1,259],"100":[1,120],"103":[1,116],"105":[2,118],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"5":260,"24":[1,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,6],"3":[2,6],"25":[2,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,157],"3":[2,157],"24":[2,157],"25":[2,157],"46":[1,106],"54":[2,157],"56":[2,157],"70":[2,157],"72":[2,157],"75":[2,157],"84":[2,157],"88":[2,157],"96":[2,157],"97":119,"98":[2,157],"99":[2,157],"100":[2,157],"103":[2,157],"105":[2,157],"112":[2,157],"115":[2,157],"118":[2,157],"119":[2,157],"122":[1,81],"123":[1,82],"126":[2,157],"127":[2,157],"128":[2,157],"129":[2,157],"130":[2,157],"131":[2,157],"132":[2,157],"133":[2,157],"134":[2,157],"135":[2,157],"136":[2,157],"137":[2,157],"138":[2,157],"139":[2,157],"140":[2,157],"141":[2,157],"142":[2,157],"143":[2,157],"144":[2,157],"145":[2,157],"146":[2,157],"147":[2,157],"148":[2,157],"149":[2,157],"150":[2,157],"151":[2,157],"152":[2,157],"153":[2,157],"154":[2,157],"155":[2,157]},{"1":[2,158],"3":[2,158],"24":[2,158],"25":[2,158],"46":[1,106],"54":[2,158],"56":[2,158],"70":[2,158],"72":[2,158],"75":[2,158],"84":[2,158],"88":[2,158],"96":[2,158],"97":119,"98":[2,158],"99":[2,158],"100":[2,158],"103":[2,158],"105":[2,158],"112":[2,158],"115":[2,158],"118":[2,158],"119":[2,158],"122":[1,81],"123":[1,82],"126":[2,158],"127":[2,158],"128":[2,158],"129":[2,158],"130":[2,158],"131":[2,158],"132":[2,158],"133":[2,158],"134":[2,158],"135":[2,158],"136":[2,158],"137":[2,158],"138":[2,158],"139":[2,158],"140":[2,158],"141":[2,158],"142":[2,158],"143":[2,158],"144":[2,158],"145":[2,158],"146":[2,158],"147":[2,158],"148":[2,158],"149":[2,158],"150":[2,158],"151":[2,158],"152":[2,158],"153":[2,158],"154":[2,158],"155":[2,158]},{"1":[2,159],"3":[2,159],"24":[2,159],"25":[2,159],"46":[1,106],"54":[2,159],"56":[2,159],"70":[2,159],"72":[2,159],"75":[2,159],"84":[2,159],"88":[2,159],"96":[2,159],"97":119,"98":[2,159],"99":[2,159],"100":[2,159],"103":[2,159],"105":[2,159],"112":[2,159],"115":[2,159],"118":[2,159],"119":[2,159],"122":[1,81],"123":[1,82],"126":[2,159],"127":[2,159],"128":[2,159],"129":[2,159],"130":[2,159],"131":[2,159],"132":[2,159],"133":[2,159],"134":[2,159],"135":[2,159],"136":[2,159],"137":[2,159],"138":[2,159],"139":[2,159],"140":[2,159],"141":[2,159],"142":[2,159],"143":[2,159],"144":[2,159],"145":[2,159],"146":[2,159],"147":[2,159],"148":[2,159],"149":[2,159],"150":[2,159],"151":[2,159],"152":[2,159],"153":[2,159],"154":[2,159],"155":[2,159]},{"1":[2,160],"3":[2,160],"24":[2,160],"25":[2,160],"46":[1,106],"54":[2,160],"56":[2,160],"70":[2,160],"72":[2,160],"75":[2,160],"84":[2,160],"88":[2,160],"96":[2,160],"97":119,"98":[2,160],"99":[2,160],"100":[2,160],"103":[2,160],"105":[2,160],"112":[2,160],"115":[2,160],"118":[2,160],"119":[2,160],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,160],"130":[2,160],"131":[2,160],"132":[2,160],"133":[2,160],"134":[2,160],"135":[2,160],"136":[2,160],"137":[2,160],"138":[2,160],"139":[2,160],"140":[2,160],"141":[2,160],"142":[2,160],"143":[2,160],"144":[2,160],"145":[2,160],"146":[2,160],"147":[2,160],"148":[2,160],"149":[2,160],"150":[2,160],"151":[2,160],"152":[2,160],"153":[2,160],"154":[2,160],"155":[2,160]},{"1":[2,161],"3":[2,161],"24":[2,161],"25":[2,161],"46":[1,106],"54":[2,161],"56":[2,161],"70":[2,161],"72":[2,161],"75":[2,161],"84":[2,161],"88":[2,161],"96":[2,161],"97":119,"98":[2,161],"99":[2,161],"100":[2,161],"103":[2,161],"105":[2,161],"112":[2,161],"115":[2,161],"118":[2,161],"119":[2,161],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,161],"130":[2,161],"131":[2,161],"132":[2,161],"133":[2,161],"134":[2,161],"135":[2,161],"136":[2,161],"137":[2,161],"138":[2,161],"139":[2,161],"140":[2,161],"141":[2,161],"142":[2,161],"143":[2,161],"144":[2,161],"145":[2,161],"146":[2,161],"147":[2,161],"148":[2,161],"149":[2,161],"150":[2,161],"151":[2,161],"152":[2,161],"153":[2,161],"154":[2,161],"155":[2,161]},{"1":[2,162],"3":[2,162],"24":[2,162],"25":[2,162],"46":[1,106],"54":[2,162],"56":[2,162],"70":[2,162],"72":[2,162],"75":[2,162],"84":[2,162],"88":[2,162],"96":[2,162],"97":119,"98":[2,162],"99":[2,162],"100":[2,162],"103":[2,162],"105":[2,162],"112":[2,162],"115":[2,162],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,162],"130":[2,162],"131":[2,162],"132":[2,162],"133":[2,162],"134":[2,162],"135":[2,162],"136":[2,162],"137":[2,162],"138":[2,162],"139":[2,162],"140":[2,162],"141":[2,162],"142":[2,162],"143":[2,162],"144":[2,162],"145":[2,162],"146":[2,162],"147":[2,162],"148":[2,162],"149":[2,162],"150":[2,162],"151":[2,162],"152":[2,162],"153":[2,162],"154":[2,162],"155":[2,162]},{"1":[2,163],"3":[2,163],"24":[2,163],"25":[2,163],"46":[1,106],"54":[2,163],"56":[2,163],"70":[2,163],"72":[2,163],"75":[2,163],"84":[2,163],"88":[2,163],"96":[2,163],"97":119,"98":[2,163],"99":[2,163],"100":[2,163],"103":[2,163],"105":[2,163],"112":[2,163],"115":[2,163],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,163],"130":[2,163],"131":[2,163],"132":[2,163],"133":[2,163],"134":[2,163],"135":[2,163],"136":[2,163],"137":[2,163],"138":[2,163],"139":[2,163],"140":[2,163],"141":[2,163],"142":[2,163],"143":[2,163],"144":[2,163],"145":[2,163],"146":[2,163],"147":[2,163],"148":[2,163],"149":[2,163],"150":[2,163],"151":[2,163],"152":[2,163],"153":[2,163],"154":[2,163],"155":[2,163]},{"1":[2,164],"3":[2,164],"24":[2,164],"25":[2,164],"46":[1,106],"54":[2,164],"56":[2,164],"70":[2,164],"72":[2,164],"75":[2,164],"84":[2,164],"88":[2,164],"96":[2,164],"97":119,"98":[2,164],"99":[2,164],"100":[2,164],"103":[2,164],"105":[2,164],"112":[2,164],"115":[2,164],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,164],"130":[2,164],"131":[2,164],"132":[2,164],"133":[2,164],"134":[2,164],"135":[2,164],"136":[2,164],"137":[2,164],"138":[2,164],"139":[2,164],"140":[2,164],"141":[2,164],"142":[2,164],"143":[2,164],"144":[2,164],"145":[2,164],"146":[2,164],"147":[2,164],"148":[2,164],"149":[2,164],"150":[2,164],"151":[2,164],"152":[2,164],"153":[2,164],"154":[2,164],"155":[2,164]},{"1":[2,165],"3":[2,165],"24":[2,165],"25":[2,165],"46":[1,106],"54":[2,165],"56":[2,165],"70":[2,165],"72":[2,165],"75":[2,165],"84":[2,165],"88":[2,165],"96":[2,165],"97":119,"98":[2,165],"99":[2,165],"100":[2,165],"103":[2,165],"105":[2,165],"112":[2,165],"115":[2,165],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,165],"133":[2,165],"134":[2,165],"135":[2,165],"136":[2,165],"137":[2,165],"138":[2,165],"139":[2,165],"140":[2,165],"141":[2,165],"142":[2,165],"143":[2,165],"144":[2,165],"145":[2,165],"146":[2,165],"147":[2,165],"148":[2,165],"149":[2,165],"150":[2,165],"151":[2,165],"152":[2,165],"153":[2,165],"154":[2,165],"155":[2,165]},{"1":[2,166],"3":[2,166],"24":[2,166],"25":[2,166],"46":[1,106],"54":[2,166],"56":[2,166],"70":[2,166],"72":[2,166],"75":[2,166],"84":[2,166],"88":[2,166],"96":[2,166],"97":119,"98":[2,166],"99":[2,166],"100":[2,166],"103":[2,166],"105":[2,166],"112":[2,166],"115":[2,166],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,166],"133":[2,166],"134":[2,166],"135":[2,166],"136":[2,166],"137":[2,166],"138":[2,166],"139":[2,166],"140":[2,166],"141":[2,166],"142":[2,166],"143":[2,166],"144":[2,166],"145":[2,166],"146":[2,166],"147":[2,166],"148":[2,166],"149":[2,166],"150":[2,166],"151":[2,166],"152":[2,166],"153":[2,166],"154":[2,166],"155":[2,166]},{"1":[2,167],"3":[2,167],"24":[2,167],"25":[2,167],"46":[1,106],"54":[2,167],"56":[2,167],"70":[2,167],"72":[2,167],"75":[2,167],"84":[2,167],"88":[2,167],"96":[2,167],"97":119,"98":[2,167],"99":[2,167],"100":[2,167],"103":[2,167],"105":[2,167],"112":[2,167],"115":[2,167],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,167],"133":[2,167],"134":[2,167],"135":[2,167],"136":[2,167],"137":[2,167],"138":[2,167],"139":[2,167],"140":[2,167],"141":[2,167],"142":[2,167],"143":[2,167],"144":[2,167],"145":[2,167],"146":[2,167],"147":[2,167],"148":[2,167],"149":[2,167],"150":[2,167],"151":[2,167],"152":[2,167],"153":[2,167],"154":[2,167],"155":[2,167]},{"1":[2,168],"3":[2,168],"24":[2,168],"25":[2,168],"46":[1,106],"54":[2,168],"56":[2,168],"70":[2,168],"72":[2,168],"75":[2,168],"84":[2,168],"88":[2,168],"96":[2,168],"97":119,"98":[2,168],"99":[2,168],"100":[2,168],"103":[2,168],"105":[2,168],"112":[2,168],"115":[2,168],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,168],"136":[2,168],"137":[2,168],"138":[2,168],"139":[2,168],"140":[2,168],"141":[2,168],"142":[2,168],"143":[2,168],"144":[2,168],"145":[2,168],"146":[2,168],"147":[2,168],"148":[2,168],"149":[2,168],"150":[2,168],"151":[2,168],"152":[2,168],"153":[2,168],"154":[2,168],"155":[2,168]},{"1":[2,169],"3":[2,169],"24":[2,169],"25":[2,169],"46":[1,106],"54":[2,169],"56":[2,169],"70":[2,169],"72":[2,169],"75":[2,169],"84":[2,169],"88":[2,169],"96":[2,169],"97":119,"98":[2,169],"99":[2,169],"100":[2,169],"103":[2,169],"105":[2,169],"112":[2,169],"115":[2,169],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,169],"136":[2,169],"137":[2,169],"138":[2,169],"139":[2,169],"140":[2,169],"141":[2,169],"142":[2,169],"143":[2,169],"144":[2,169],"145":[2,169],"146":[2,169],"147":[2,169],"148":[2,169],"149":[2,169],"150":[2,169],"151":[2,169],"152":[2,169],"153":[2,169],"154":[2,169],"155":[2,169]},{"1":[2,170],"3":[2,170],"24":[2,170],"25":[2,170],"46":[1,106],"54":[2,170],"56":[2,170],"70":[2,170],"72":[2,170],"75":[2,170],"84":[2,170],"88":[2,170],"96":[2,170],"97":119,"98":[2,170],"99":[2,170],"100":[2,170],"103":[2,170],"105":[2,170],"112":[2,170],"115":[2,170],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,170],"136":[2,170],"137":[2,170],"138":[2,170],"139":[2,170],"140":[2,170],"141":[2,170],"142":[2,170],"143":[2,170],"144":[2,170],"145":[2,170],"146":[2,170],"147":[2,170],"148":[2,170],"149":[2,170],"150":[2,170],"151":[2,170],"152":[2,170],"153":[2,170],"154":[2,170],"155":[2,170]},{"1":[2,171],"3":[2,171],"24":[2,171],"25":[2,171],"46":[1,106],"54":[2,171],"56":[2,171],"70":[2,171],"72":[2,171],"75":[2,171],"84":[2,171],"88":[2,171],"96":[2,171],"97":119,"98":[2,171],"99":[2,171],"100":[2,171],"103":[2,171],"105":[2,171],"112":[2,171],"115":[2,171],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,171],"136":[2,171],"137":[2,171],"138":[2,171],"139":[2,171],"140":[2,171],"141":[2,171],"142":[2,171],"143":[2,171],"144":[2,171],"145":[2,171],"146":[2,171],"147":[2,171],"148":[2,171],"149":[2,171],"150":[2,171],"151":[2,171],"152":[2,171],"153":[2,171],"154":[2,171],"155":[2,171]},{"1":[2,172],"3":[2,172],"24":[2,172],"25":[2,172],"46":[1,106],"54":[2,172],"56":[2,172],"70":[2,172],"72":[2,172],"75":[2,172],"84":[2,172],"88":[2,172],"96":[2,172],"97":119,"98":[2,172],"99":[2,172],"100":[2,172],"103":[2,172],"105":[2,172],"112":[2,172],"115":[2,172],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,172],"140":[2,172],"141":[2,172],"142":[2,172],"143":[2,172],"144":[2,172],"145":[2,172],"146":[2,172],"147":[2,172],"148":[2,172],"149":[2,172],"150":[2,172],"151":[2,172],"152":[2,172],"153":[2,172],"154":[2,172],"155":[1,115]},{"1":[2,173],"3":[2,173],"24":[2,173],"25":[2,173],"46":[1,106],"54":[2,173],"56":[2,173],"70":[2,173],"72":[2,173],"75":[2,173],"84":[2,173],"88":[2,173],"96":[2,173],"97":119,"98":[2,173],"99":[2,173],"100":[2,173],"103":[2,173],"105":[2,173],"112":[2,173],"115":[2,173],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,173],"140":[2,173],"141":[2,173],"142":[2,173],"143":[2,173],"144":[2,173],"145":[2,173],"146":[2,173],"147":[2,173],"148":[2,173],"149":[2,173],"150":[2,173],"151":[2,173],"152":[2,173],"153":[2,173],"154":[2,173],"155":[1,115]},{"1":[2,174],"3":[2,174],"24":[2,174],"25":[2,174],"46":[1,106],"54":[2,174],"56":[2,174],"70":[2,174],"72":[2,174],"75":[2,174],"84":[2,174],"88":[2,174],"96":[2,174],"97":119,"98":[2,174],"99":[2,174],"100":[2,174],"103":[2,174],"105":[2,174],"112":[2,174],"115":[2,174],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,174],"140":[2,174],"141":[2,174],"142":[2,174],"143":[2,174],"144":[2,174],"145":[2,174],"146":[2,174],"147":[2,174],"148":[2,174],"149":[2,174],"150":[2,174],"151":[2,174],"152":[2,174],"153":[2,174],"154":[2,174],"155":[1,115]},{"1":[2,175],"3":[2,175],"24":[2,175],"25":[2,175],"46":[1,106],"54":[2,175],"56":[2,175],"70":[2,175],"72":[2,175],"75":[2,175],"84":[2,175],"88":[2,175],"96":[2,175],"97":119,"98":[2,175],"99":[2,175],"100":[2,175],"103":[2,175],"105":[2,175],"112":[2,175],"115":[2,175],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,175],"140":[2,175],"141":[2,175],"142":[2,175],"143":[2,175],"144":[2,175],"145":[2,175],"146":[2,175],"147":[2,175],"148":[2,175],"149":[2,175],"150":[2,175],"151":[2,175],"152":[2,175],"153":[2,175],"154":[2,175],"155":[1,115]},{"1":[2,176],"3":[2,176],"24":[2,176],"25":[2,176],"46":[1,106],"54":[2,176],"56":[2,176],"70":[2,176],"72":[2,176],"75":[2,176],"84":[2,176],"88":[2,176],"96":[2,176],"97":119,"98":[2,176],"99":[2,176],"100":[2,176],"103":[2,176],"105":[2,176],"112":[2,176],"115":[2,176],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,176],"144":[2,176],"145":[2,176],"146":[2,176],"147":[2,176],"148":[2,176],"149":[2,176],"150":[2,176],"151":[2,176],"152":[2,176],"153":[2,176],"154":[2,176],"155":[1,115]},{"1":[2,177],"3":[2,177],"24":[2,177],"25":[2,177],"46":[1,106],"54":[2,177],"56":[2,177],"70":[2,177],"72":[2,177],"75":[2,177],"84":[2,177],"88":[2,177],"96":[2,177],"97":119,"98":[2,177],"99":[2,177],"100":[2,177],"103":[2,177],"105":[2,177],"112":[2,177],"115":[2,177],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,177],"144":[2,177],"145":[2,177],"146":[2,177],"147":[2,177],"148":[2,177],"149":[2,177],"150":[2,177],"151":[2,177],"152":[2,177],"153":[2,177],"154":[2,177],"155":[1,115]},{"1":[2,178],"3":[2,178],"24":[2,178],"25":[2,178],"46":[1,106],"54":[2,178],"56":[2,178],"70":[2,178],"72":[2,178],"75":[2,178],"84":[2,178],"88":[2,178],"96":[2,178],"97":119,"98":[2,178],"99":[2,178],"100":[2,178],"103":[2,178],"105":[2,178],"112":[2,178],"115":[2,178],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,178],"144":[2,178],"145":[2,178],"146":[2,178],"147":[2,178],"148":[2,178],"149":[2,178],"150":[2,178],"151":[2,178],"152":[2,178],"153":[2,178],"154":[2,178],"155":[1,115]},{"1":[2,179],"3":[2,179],"24":[2,179],"25":[2,179],"46":[1,106],"54":[2,179],"56":[2,179],"70":[2,179],"72":[2,179],"75":[2,179],"84":[2,179],"88":[2,179],"96":[2,179],"97":119,"98":[2,179],"99":[2,179],"100":[2,179],"103":[2,179],"105":[2,179],"112":[2,179],"115":[2,179],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,179],"144":[2,179],"145":[2,179],"146":[2,179],"147":[2,179],"148":[2,179],"149":[2,179],"150":[2,179],"151":[2,179],"152":[2,179],"153":[2,179],"154":[2,179],"155":[1,115]},{"1":[2,180],"3":[2,180],"24":[2,180],"25":[2,180],"46":[2,180],"54":[2,180],"56":[2,180],"70":[2,180],"72":[2,180],"75":[2,180],"84":[2,180],"88":[2,180],"96":[2,180],"97":119,"98":[2,180],"99":[2,180],"100":[2,180],"103":[2,180],"105":[2,180],"112":[2,180],"115":[2,180],"118":[2,180],"119":[2,180],"122":[2,180],"123":[2,180],"126":[2,180],"127":[2,180],"128":[2,180],"129":[2,180],"130":[2,180],"131":[2,180],"132":[2,180],"133":[2,180],"134":[2,180],"135":[2,180],"136":[2,180],"137":[2,180],"138":[2,180],"139":[2,180],"140":[2,180],"141":[2,180],"142":[2,180],"143":[2,180],"144":[2,180],"145":[2,180],"146":[2,180],"147":[2,180],"148":[2,180],"149":[2,180],"150":[2,180],"151":[2,180],"152":[2,180],"153":[2,180],"154":[2,180],"155":[2,180]},{"1":[2,181],"3":[2,181],"24":[2,181],"25":[2,181],"46":[1,106],"54":[2,181],"56":[2,181],"70":[2,181],"72":[2,181],"75":[2,181],"84":[2,181],"88":[2,181],"96":[2,181],"97":119,"98":[2,181],"99":[2,181],"100":[2,181],"103":[2,181],"105":[2,181],"112":[2,181],"115":[2,181],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,182],"3":[2,182],"24":[2,182],"25":[2,182],"46":[1,106],"54":[2,182],"56":[2,182],"70":[2,182],"72":[2,182],"75":[2,182],"84":[2,182],"88":[2,182],"96":[2,182],"97":119,"98":[2,182],"99":[2,182],"100":[2,182],"103":[2,182],"105":[2,182],"112":[2,182],"115":[2,182],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,183],"3":[2,183],"24":[2,183],"25":[2,183],"46":[1,106],"54":[2,183],"56":[2,183],"70":[2,183],"72":[2,183],"75":[2,183],"84":[2,183],"88":[2,183],"96":[2,183],"97":119,"98":[2,183],"99":[2,183],"100":[2,183],"103":[2,183],"105":[2,183],"112":[2,183],"115":[2,183],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,184],"3":[2,184],"24":[2,184],"25":[2,184],"46":[1,106],"54":[2,184],"56":[2,184],"70":[2,184],"72":[2,184],"75":[2,184],"84":[2,184],"88":[2,184],"96":[2,184],"97":119,"98":[2,184],"99":[2,184],"100":[2,184],"103":[2,184],"105":[2,184],"112":[2,184],"115":[2,184],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,185],"3":[2,185],"24":[2,185],"25":[2,185],"46":[1,106],"54":[2,185],"56":[2,185],"70":[2,185],"72":[2,185],"75":[2,185],"84":[2,185],"88":[2,185],"96":[2,185],"97":119,"98":[2,185],"99":[2,185],"100":[2,185],"103":[2,185],"105":[2,185],"112":[2,185],"115":[2,185],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,186],"3":[2,186],"24":[2,186],"25":[2,186],"46":[1,106],"54":[2,186],"56":[2,186],"70":[2,186],"72":[2,186],"75":[2,186],"84":[2,186],"88":[2,186],"96":[2,186],"97":119,"98":[2,186],"99":[2,186],"100":[2,186],"103":[2,186],"105":[2,186],"112":[2,186],"115":[2,186],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,187],"3":[2,187],"24":[2,187],"25":[2,187],"46":[1,106],"54":[2,187],"56":[2,187],"70":[2,187],"72":[2,187],"75":[2,187],"84":[2,187],"88":[2,187],"96":[2,187],"97":119,"98":[2,187],"99":[2,187],"100":[2,187],"103":[2,187],"105":[2,187],"112":[2,187],"115":[2,187],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,188],"3":[2,188],"24":[2,188],"25":[2,188],"46":[1,106],"54":[2,188],"56":[2,188],"70":[2,188],"72":[2,188],"75":[2,188],"84":[2,188],"88":[2,188],"96":[2,188],"97":119,"98":[2,188],"99":[2,188],"100":[2,188],"103":[2,188],"105":[2,188],"112":[2,188],"115":[2,188],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,189],"3":[2,189],"24":[2,189],"25":[2,189],"46":[1,106],"54":[2,189],"56":[2,189],"70":[2,189],"72":[2,189],"75":[2,189],"84":[2,189],"88":[2,189],"96":[2,189],"97":119,"98":[2,189],"99":[2,189],"100":[2,189],"103":[2,189],"105":[2,189],"112":[2,189],"115":[2,189],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,189],"140":[2,189],"141":[2,189],"142":[2,189],"143":[2,189],"144":[2,189],"145":[2,189],"146":[2,189],"147":[2,189],"148":[2,189],"149":[2,189],"150":[2,189],"151":[2,189],"152":[2,189],"153":[2,189],"154":[2,189],"155":[1,115]},{"1":[2,190],"3":[2,190],"24":[2,190],"25":[2,190],"46":[1,106],"54":[2,190],"56":[1,121],"70":[2,190],"72":[2,190],"75":[2,190],"84":[2,190],"88":[2,190],"96":[2,190],"97":119,"98":[2,190],"99":[2,190],"100":[2,190],"103":[1,116],"105":[2,190],"112":[2,190],"115":[2,190],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,143],"3":[2,143],"24":[2,143],"25":[2,143],"46":[1,106],"54":[2,143],"56":[1,121],"70":[2,143],"72":[2,143],"75":[2,143],"84":[2,143],"88":[2,143],"96":[2,143],"97":119,"98":[1,75],"99":[2,143],"100":[1,120],"103":[1,116],"105":[2,143],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,144],"3":[2,144],"24":[2,144],"25":[2,144],"46":[1,106],"54":[2,144],"56":[1,121],"70":[2,144],"72":[2,144],"75":[2,144],"84":[2,144],"88":[2,144],"96":[2,144],"97":119,"98":[1,75],"99":[2,144],"100":[1,120],"103":[1,116],"105":[2,144],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"102":261,"103":[1,236],"104":[1,237]},{"56":[1,262]},{"1":[2,25],"3":[2,25],"24":[2,25],"25":[2,25],"45":[2,25],"46":[2,25],"54":[2,25],"56":[2,25],"70":[2,25],"72":[2,25],"75":[2,25],"84":[2,25],"88":[2,25],"92":[2,25],"93":[2,25],"96":[2,25],"98":[2,25],"99":[2,25],"100":[2,25],"103":[2,25],"105":[2,25],"108":[2,25],"110":[2,25],"112":[2,25],"115":[2,25],"118":[2,25],"119":[2,25],"122":[2,25],"123":[2,25],"126":[2,25],"127":[2,25],"128":[2,25],"129":[2,25],"130":[2,25],"131":[2,25],"132":[2,25],"133":[2,25],"134":[2,25],"135":[2,25],"136":[2,25],"137":[2,25],"138":[2,25],"139":[2,25],"140":[2,25],"141":[2,25],"142":[2,25],"143":[2,25],"144":[2,25],"145":[2,25],"146":[2,25],"147":[2,25],"148":[2,25],"149":[2,25],"150":[2,25],"151":[2,25],"152":[2,25],"153":[2,25],"154":[2,25],"155":[2,25]},{"1":[2,41],"3":[2,41],"24":[2,41],"25":[2,41],"46":[1,106],"54":[2,41],"56":[1,121],"70":[2,41],"72":[2,41],"75":[2,41],"84":[2,41],"88":[2,41],"96":[2,41],"97":119,"98":[2,41],"99":[2,41],"100":[1,120],"103":[1,116],"105":[2,41],"112":[2,41],"115":[2,41],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,90],"3":[2,90],"24":[2,90],"25":[2,90],"46":[2,90],"54":[2,90],"56":[2,90],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,90],"71":[1,135],"72":[2,90],"75":[2,90],"81":127,"82":[1,133],"84":[2,90],"88":[2,90],"96":[2,90],"98":[2,90],"99":[2,90],"100":[2,90],"103":[2,90],"105":[2,90],"112":[2,90],"115":[2,90],"118":[2,90],"119":[2,90],"122":[2,90],"123":[2,90],"126":[2,90],"127":[2,90],"128":[2,90],"129":[2,90],"130":[2,90],"131":[2,90],"132":[2,90],"133":[2,90],"134":[2,90],"135":[2,90],"136":[2,90],"137":[2,90],"138":[2,90],"139":[2,90],"140":[2,90],"141":[2,90],"142":[2,90],"143":[2,90],"144":[2,90],"145":[2,90],"146":[2,90],"147":[2,90],"148":[2,90],"149":[2,90],"150":[2,90],"151":[2,90],"152":[2,90],"153":[2,90],"154":[2,90],"155":[2,90]},{"1":[2,68],"3":[2,68],"24":[2,68],"25":[2,68],"42":[2,68],"46":[2,68],"54":[2,68],"56":[2,68],"64":[2,68],"65":[2,68],"66":[2,68],"69":[2,68],"70":[2,68],"71":[2,68],"72":[2,68],"75":[2,68],"78":[2,68],"82":[2,68],"84":[2,68],"88":[2,68],"96":[2,68],"98":[2,68],"99":[2,68],"100":[2,68],"103":[2,68],"105":[2,68],"112":[2,68],"115":[2,68],"118":[2,68],"119":[2,68],"122":[2,68],"123":[2,68],"126":[2,68],"127":[2,68],"128":[2,68],"129":[2,68],"130":[2,68],"131":[2,68],"132":[2,68],"133":[2,68],"134":[2,68],"135":[2,68],"136":[2,68],"137":[2,68],"138":[2,68],"139":[2,68],"140":[2,68],"141":[2,68],"142":[2,68],"143":[2,68],"144":[2,68],"145":[2,68],"146":[2,68],"147":[2,68],"148":[2,68],"149":[2,68],"150":[2,68],"151":[2,68],"152":[2,68],"153":[2,68],"154":[2,68],"155":[2,68]},{"1":[2,69],"3":[2,69],"24":[2,69],"25":[2,69],"42":[2,69],"46":[2,69],"54":[2,69],"56":[2,69],"64":[2,69],"65":[2,69],"66":[2,69],"69":[2,69],"70":[2,69],"71":[2,69],"72":[2,69],"75":[2,69],"78":[2,69],"82":[2,69],"84":[2,69],"88":[2,69],"96":[2,69],"98":[2,69],"99":[2,69],"100":[2,69],"103":[2,69],"105":[2,69],"112":[2,69],"115":[2,69],"118":[2,69],"119":[2,69],"122":[2,69],"123":[2,69],"126":[2,69],"127":[2,69],"128":[2,69],"129":[2,69],"130":[2,69],"131":[2,69],"132":[2,69],"133":[2,69],"134":[2,69],"135":[2,69],"136":[2,69],"137":[2,69],"138":[2,69],"139":[2,69],"140":[2,69],"141":[2,69],"142":[2,69],"143":[2,69],"144":[2,69],"145":[2,69],"146":[2,69],"147":[2,69],"148":[2,69],"149":[2,69],"150":[2,69],"151":[2,69],"152":[2,69],"153":[2,69],"154":[2,69],"155":[2,69]},{"1":[2,70],"3":[2,70],"24":[2,70],"25":[2,70],"42":[2,70],"46":[2,70],"54":[2,70],"56":[2,70],"64":[2,70],"65":[2,70],"66":[2,70],"69":[2,70],"70":[2,70],"71":[2,70],"72":[2,70],"75":[2,70],"78":[2,70],"82":[2,70],"84":[2,70],"88":[2,70],"96":[2,70],"98":[2,70],"99":[2,70],"100":[2,70],"103":[2,70],"105":[2,70],"112":[2,70],"115":[2,70],"118":[2,70],"119":[2,70],"122":[2,70],"123":[2,70],"126":[2,70],"127":[2,70],"128":[2,70],"129":[2,70],"130":[2,70],"131":[2,70],"132":[2,70],"133":[2,70],"134":[2,70],"135":[2,70],"136":[2,70],"137":[2,70],"138":[2,70],"139":[2,70],"140":[2,70],"141":[2,70],"142":[2,70],"143":[2,70],"144":[2,70],"145":[2,70],"146":[2,70],"147":[2,70],"148":[2,70],"149":[2,70],"150":[2,70],"151":[2,70],"152":[2,70],"153":[2,70],"154":[2,70],"155":[2,70]},{"3":[1,244],"25":[1,245],"54":[1,243],"84":[1,263]},{"3":[2,103],"25":[2,103],"46":[1,106],"54":[2,103],"56":[1,121],"84":[2,103],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,265],"70":[1,264],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,121],"72":[1,266],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"50":267,"51":[1,72],"52":[1,73]},{"53":268,"55":[1,142]},{"56":[1,269]},{"1":[2,112],"3":[2,112],"24":[2,112],"25":[2,112],"46":[2,112],"54":[2,112],"56":[2,112],"70":[2,112],"72":[2,112],"75":[2,112],"84":[2,112],"88":[2,112],"92":[1,270],"96":[2,112],"98":[2,112],"99":[2,112],"100":[2,112],"103":[2,112],"105":[2,112],"112":[2,112],"115":[2,112],"118":[2,112],"119":[2,112],"122":[2,112],"123":[2,112],"126":[2,112],"127":[2,112],"128":[2,112],"129":[2,112],"130":[2,112],"131":[2,112],"132":[2,112],"133":[2,112],"134":[2,112],"135":[2,112],"136":[2,112],"137":[2,112],"138":[2,112],"139":[2,112],"140":[2,112],"141":[2,112],"142":[2,112],"143":[2,112],"144":[2,112],"145":[2,112],"146":[2,112],"147":[2,112],"148":[2,112],"149":[2,112],"150":[2,112],"151":[2,112],"152":[2,112],"153":[2,112],"154":[2,112],"155":[2,112]},{"5":271,"24":[1,6]},{"26":272,"27":[1,55]},{"5":273,"24":[1,6],"99":[1,274],"105":[1,275]},{"6":276,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":277,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"26":278,"27":[1,55]},{"23":282,"45":[1,54],"107":279,"109":280,"110":[1,281]},{"7":283,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,79],"3":[2,79],"24":[2,79],"25":[2,79],"46":[2,79],"54":[2,79],"56":[2,79],"70":[2,79],"72":[2,79],"75":[2,79],"84":[2,79],"88":[2,79],"96":[2,79],"98":[2,79],"99":[2,79],"100":[2,79],"103":[2,79],"105":[2,79],"112":[2,79],"115":[2,79],"118":[2,79],"119":[2,79],"122":[2,79],"123":[2,79],"126":[2,79],"127":[2,79],"128":[2,79],"129":[2,79],"130":[2,79],"131":[2,79],"132":[2,79],"133":[2,79],"134":[2,79],"135":[2,79],"136":[2,79],"137":[2,79],"138":[2,79],"139":[2,79],"140":[2,79],"141":[2,79],"142":[2,79],"143":[2,79],"144":[2,79],"145":[2,79],"146":[2,79],"147":[2,79],"148":[2,79],"149":[2,79],"150":[2,79],"151":[2,79],"152":[2,79],"153":[2,79],"154":[2,79],"155":[2,79]},{"1":[2,101],"3":[2,101],"24":[2,101],"25":[2,101],"42":[2,101],"46":[2,101],"54":[2,101],"56":[2,101],"64":[2,101],"65":[2,101],"66":[2,101],"69":[2,101],"70":[2,101],"71":[2,101],"72":[2,101],"75":[2,101],"78":[2,101],"82":[2,101],"84":[2,101],"88":[2,101],"96":[2,101],"98":[2,101],"99":[2,101],"100":[2,101],"103":[2,101],"105":[2,101],"112":[2,101],"115":[2,101],"118":[2,101],"119":[2,101],"122":[2,101],"123":[2,101],"126":[2,101],"127":[2,101],"128":[2,101],"129":[2,101],"130":[2,101],"131":[2,101],"132":[2,101],"133":[2,101],"134":[2,101],"135":[2,101],"136":[2,101],"137":[2,101],"138":[2,101],"139":[2,101],"140":[2,101],"141":[2,101],"142":[2,101],"143":[2,101],"144":[2,101],"145":[2,101],"146":[2,101],"147":[2,101],"148":[2,101],"149":[2,101],"150":[2,101],"151":[2,101],"152":[2,101],"153":[2,101],"154":[2,101],"155":[2,101]},{"3":[1,285],"6":284,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,286],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":287,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,109],"25":[2,109],"54":[2,109],"84":[2,109],"88":[2,109]},{"56":[1,288]},{"3":[2,104],"25":[2,104],"46":[1,106],"54":[2,104],"56":[1,121],"84":[2,104],"88":[2,104],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,75],"3":[2,75],"24":[2,75],"25":[2,75],"42":[2,75],"46":[2,75],"54":[2,75],"56":[2,75],"64":[2,75],"65":[2,75],"66":[2,75],"69":[2,75],"70":[2,75],"71":[2,75],"72":[2,75],"75":[2,75],"78":[2,75],"82":[2,75],"84":[2,75],"88":[2,75],"96":[2,75],"98":[2,75],"99":[2,75],"100":[2,75],"103":[2,75],"105":[2,75],"112":[2,75],"115":[2,75],"118":[2,75],"119":[2,75],"122":[2,75],"123":[2,75],"126":[2,75],"127":[2,75],"128":[2,75],"129":[2,75],"130":[2,75],"131":[2,75],"132":[2,75],"133":[2,75],"134":[2,75],"135":[2,75],"136":[2,75],"137":[2,75],"138":[2,75],"139":[2,75],"140":[2,75],"141":[2,75],"142":[2,75],"143":[2,75],"144":[2,75],"145":[2,75],"146":[2,75],"147":[2,75],"148":[2,75],"149":[2,75],"150":[2,75],"151":[2,75],"152":[2,75],"153":[2,75],"154":[2,75],"155":[2,75]},{"3":[1,290],"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":289,"45":[1,54]},{"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":291,"45":[1,54]},{"1":[2,76],"3":[2,76],"24":[2,76],"25":[2,76],"42":[2,76],"46":[2,76],"54":[2,76],"56":[2,76],"64":[2,76],"65":[2,76],"66":[2,76],"69":[2,76],"70":[2,76],"71":[2,76],"72":[2,76],"75":[2,76],"78":[2,76],"82":[2,76],"84":[2,76],"88":[2,76],"96":[2,76],"98":[2,76],"99":[2,76],"100":[2,76],"103":[2,76],"105":[2,76],"112":[2,76],"115":[2,76],"118":[2,76],"119":[2,76],"122":[2,76],"123":[2,76],"126":[2,76],"127":[2,76],"128":[2,76],"129":[2,76],"130":[2,76],"131":[2,76],"132":[2,76],"133":[2,76],"134":[2,76],"135":[2,76],"136":[2,76],"137":[2,76],"138":[2,76],"139":[2,76],"140":[2,76],"141":[2,76],"142":[2,76],"143":[2,76],"144":[2,76],"145":[2,76],"146":[2,76],"147":[2,76],"148":[2,76],"149":[2,76],"150":[2,76],"151":[2,76],"152":[2,76],"153":[2,76],"154":[2,76],"155":[2,76]},{"3":[1,250],"25":[1,292],"54":[1,249]},{"6":293,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":294,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,117],"3":[2,117],"24":[2,117],"25":[2,117],"42":[2,117],"46":[2,117],"54":[2,117],"56":[2,117],"64":[2,117],"65":[2,117],"66":[2,117],"69":[2,117],"70":[2,117],"71":[2,117],"72":[2,117],"75":[2,117],"78":[2,117],"82":[2,117],"84":[2,117],"88":[2,117],"96":[2,117],"98":[2,117],"99":[2,117],"100":[2,117],"103":[2,117],"105":[2,117],"112":[2,117],"115":[2,117],"118":[2,117],"119":[2,117],"122":[2,117],"123":[2,117],"126":[2,117],"127":[2,117],"128":[2,117],"129":[2,117],"130":[2,117],"131":[2,117],"132":[2,117],"133":[2,117],"134":[2,117],"135":[2,117],"136":[2,117],"137":[2,117],"138":[2,117],"139":[2,117],"140":[2,117],"141":[2,117],"142":[2,117],"143":[2,117],"144":[2,117],"145":[2,117],"146":[2,117],"147":[2,117],"148":[2,117],"149":[2,117],"150":[2,117],"151":[2,117],"152":[2,117],"153":[2,117],"154":[2,117],"155":[2,117]},{"3":[1,244],"25":[1,245],"54":[1,243],"84":[1,295]},{"1":[2,140],"3":[2,140],"24":[2,140],"25":[2,140],"46":[2,140],"54":[2,140],"56":[2,140],"70":[2,140],"72":[2,140],"75":[2,140],"84":[2,140],"88":[2,140],"96":[2,140],"98":[2,140],"99":[2,140],"100":[2,140],"103":[2,140],"105":[2,140],"112":[2,140],"115":[2,140],"118":[2,140],"119":[2,140],"122":[2,140],"123":[2,140],"126":[2,140],"127":[2,140],"128":[2,140],"129":[2,140],"130":[2,140],"131":[2,140],"132":[2,140],"133":[2,140],"134":[2,140],"135":[2,140],"136":[2,140],"137":[2,140],"138":[2,140],"139":[2,140],"140":[2,140],"141":[2,140],"142":[2,140],"143":[2,140],"144":[2,140],"145":[2,140],"146":[2,140],"147":[2,140],"148":[2,140],"149":[2,140],"150":[2,140],"151":[2,140],"152":[2,140],"153":[2,140],"154":[2,140],"155":[2,140]},{"6":296,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":297,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,137],"3":[2,137],"24":[2,137],"25":[2,137],"46":[2,137],"54":[2,137],"56":[2,137],"70":[2,137],"72":[2,137],"75":[2,137],"84":[2,137],"88":[2,137],"96":[2,137],"98":[2,137],"99":[2,137],"100":[2,137],"103":[2,137],"105":[2,137],"108":[2,137],"112":[2,137],"115":[2,137],"118":[2,137],"119":[2,137],"122":[2,137],"123":[2,137],"126":[2,137],"127":[2,137],"128":[2,137],"129":[2,137],"130":[2,137],"131":[2,137],"132":[2,137],"133":[2,137],"134":[2,137],"135":[2,137],"136":[2,137],"137":[2,137],"138":[2,137],"139":[2,137],"140":[2,137],"141":[2,137],"142":[2,137],"143":[2,137],"144":[2,137],"145":[2,137],"146":[2,137],"147":[2,137],"148":[2,137],"149":[2,137],"150":[2,137],"151":[2,137],"152":[2,137],"153":[2,137],"154":[2,137],"155":[2,137]},{"1":[2,122],"3":[2,122],"24":[2,122],"25":[2,122],"46":[2,122],"54":[2,122],"56":[2,122],"70":[2,122],"72":[2,122],"75":[2,122],"84":[2,122],"88":[2,122],"96":[2,122],"98":[2,122],"99":[1,274],"100":[2,122],"103":[2,122],"105":[1,275],"112":[2,122],"115":[2,122],"118":[2,122],"119":[2,122],"122":[2,122],"123":[2,122],"126":[2,122],"127":[2,122],"128":[2,122],"129":[2,122],"130":[2,122],"131":[2,122],"132":[2,122],"133":[2,122],"134":[2,122],"135":[2,122],"136":[2,122],"137":[2,122],"138":[2,122],"139":[2,122],"140":[2,122],"141":[2,122],"142":[2,122],"143":[2,122],"144":[2,122],"145":[2,122],"146":[2,122],"147":[2,122],"148":[2,122],"149":[2,122],"150":[2,122],"151":[2,122],"152":[2,122],"153":[2,122],"154":[2,122],"155":[2,122]},{"1":[2,58],"3":[2,58],"24":[2,58],"25":[2,58],"46":[2,58],"54":[2,58],"56":[2,58],"70":[2,58],"72":[2,58],"75":[2,58],"84":[2,58],"88":[2,58],"96":[2,58],"98":[2,58],"99":[2,58],"100":[2,58],"103":[2,58],"105":[2,58],"112":[2,58],"115":[2,58],"118":[2,58],"119":[2,58],"122":[2,58],"123":[2,58],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"1":[2,93],"3":[2,93],"24":[2,93],"25":[2,93],"46":[2,93],"54":[2,93],"56":[2,93],"64":[2,93],"65":[2,93],"66":[2,93],"69":[2,93],"70":[2,93],"71":[2,93],"72":[2,93],"75":[2,93],"82":[2,93],"84":[2,93],"88":[2,93],"96":[2,93],"98":[2,93],"99":[2,93],"100":[2,93],"103":[2,93],"105":[2,93],"112":[2,93],"115":[2,93],"118":[2,93],"119":[2,93],"122":[2,93],"123":[2,93],"126":[2,93],"127":[2,93],"128":[2,93],"129":[2,93],"130":[2,93],"131":[2,93],"132":[2,93],"133":[2,93],"134":[2,93],"135":[2,93],"136":[2,93],"137":[2,93],"138":[2,93],"139":[2,93],"140":[2,93],"141":[2,93],"142":[2,93],"143":[2,93],"144":[2,93],"145":[2,93],"146":[2,93],"147":[2,93],"148":[2,93],"149":[2,93],"150":[2,93],"151":[2,93],"152":[2,93],"153":[2,93],"154":[2,93],"155":[2,93]},{"1":[2,73],"3":[2,73],"24":[2,73],"25":[2,73],"42":[2,73],"46":[2,73],"54":[2,73],"56":[2,73],"64":[2,73],"65":[2,73],"66":[2,73],"69":[2,73],"70":[2,73],"71":[2,73],"72":[2,73],"75":[2,73],"78":[2,73],"82":[2,73],"84":[2,73],"88":[2,73],"96":[2,73],"98":[2,73],"99":[2,73],"100":[2,73],"103":[2,73],"105":[2,73],"112":[2,73],"115":[2,73],"118":[2,73],"119":[2,73],"122":[2,73],"123":[2,73],"126":[2,73],"127":[2,73],"128":[2,73],"129":[2,73],"130":[2,73],"131":[2,73],"132":[2,73],"133":[2,73],"134":[2,73],"135":[2,73],"136":[2,73],"137":[2,73],"138":[2,73],"139":[2,73],"140":[2,73],"141":[2,73],"142":[2,73],"143":[2,73],"144":[2,73],"145":[2,73],"146":[2,73],"147":[2,73],"148":[2,73],"149":[2,73],"150":[2,73],"151":[2,73],"152":[2,73],"153":[2,73],"154":[2,73],"155":[2,73]},{"56":[1,298]},{"1":[2,74],"3":[2,74],"24":[2,74],"25":[2,74],"42":[2,74],"46":[2,74],"54":[2,74],"56":[2,74],"64":[2,74],"65":[2,74],"66":[2,74],"69":[2,74],"70":[2,74],"71":[2,74],"72":[2,74],"75":[2,74],"78":[2,74],"82":[2,74],"84":[2,74],"88":[2,74],"96":[2,74],"98":[2,74],"99":[2,74],"100":[2,74],"103":[2,74],"105":[2,74],"112":[2,74],"115":[2,74],"118":[2,74],"119":[2,74],"122":[2,74],"123":[2,74],"126":[2,74],"127":[2,74],"128":[2,74],"129":[2,74],"130":[2,74],"131":[2,74],"132":[2,74],"133":[2,74],"134":[2,74],"135":[2,74],"136":[2,74],"137":[2,74],"138":[2,74],"139":[2,74],"140":[2,74],"141":[2,74],"142":[2,74],"143":[2,74],"144":[2,74],"145":[2,74],"146":[2,74],"147":[2,74],"148":[2,74],"149":[2,74],"150":[2,74],"151":[2,74],"152":[2,74],"153":[2,74],"154":[2,74],"155":[2,74]},{"5":299,"24":[1,6]},{"49":[2,55],"54":[2,55],"56":[1,231]},{"56":[1,300]},{"5":301,"24":[1,6]},{"1":[2,113],"3":[2,113],"24":[2,113],"25":[2,113],"46":[2,113],"54":[2,113],"56":[2,113],"70":[2,113],"72":[2,113],"75":[2,113],"84":[2,113],"88":[2,113],"96":[2,113],"98":[2,113],"99":[2,113],"100":[2,113],"103":[2,113],"105":[2,113],"112":[2,113],"115":[2,113],"118":[2,113],"119":[2,113],"122":[2,113],"123":[2,113],"126":[2,113],"127":[2,113],"128":[2,113],"129":[2,113],"130":[2,113],"131":[2,113],"132":[2,113],"133":[2,113],"134":[2,113],"135":[2,113],"136":[2,113],"137":[2,113],"138":[2,113],"139":[2,113],"140":[2,113],"141":[2,113],"142":[2,113],"143":[2,113],"144":[2,113],"145":[2,113],"146":[2,113],"147":[2,113],"148":[2,113],"149":[2,113],"150":[2,113],"151":[2,113],"152":[2,113],"153":[2,113],"154":[2,113],"155":[2,113]},{"5":302,"24":[1,6]},{"1":[2,123],"3":[2,123],"24":[2,123],"25":[2,123],"46":[2,123],"54":[2,123],"56":[2,123],"70":[2,123],"72":[2,123],"75":[2,123],"84":[2,123],"88":[2,123],"96":[2,123],"98":[2,123],"99":[2,123],"100":[2,123],"103":[2,123],"105":[2,123],"112":[2,123],"115":[2,123],"118":[2,123],"119":[2,123],"122":[2,123],"123":[2,123],"126":[2,123],"127":[2,123],"128":[2,123],"129":[2,123],"130":[2,123],"131":[2,123],"132":[2,123],"133":[2,123],"134":[2,123],"135":[2,123],"136":[2,123],"137":[2,123],"138":[2,123],"139":[2,123],"140":[2,123],"141":[2,123],"142":[2,123],"143":[2,123],"144":[2,123],"145":[2,123],"146":[2,123],"147":[2,123],"148":[2,123],"149":[2,123],"150":[2,123],"151":[2,123],"152":[2,123],"153":[2,123],"154":[2,123],"155":[2,123]},{"6":303,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":304,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,126],"3":[2,126],"24":[2,126],"25":[2,126],"46":[1,106],"54":[2,126],"56":[1,121],"70":[2,126],"72":[2,126],"75":[2,126],"84":[2,126],"88":[2,126],"96":[2,126],"97":119,"98":[2,126],"99":[2,126],"100":[2,126],"103":[1,116],"105":[2,126],"112":[2,126],"115":[2,126],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,127],"3":[2,127],"24":[2,127],"25":[2,127],"46":[1,106],"54":[2,127],"56":[1,121],"70":[2,127],"72":[2,127],"75":[2,127],"84":[2,127],"88":[2,127],"96":[2,127],"97":119,"98":[2,127],"99":[2,127],"100":[2,127],"103":[1,116],"105":[2,127],"112":[2,127],"115":[2,127],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"103":[2,125],"104":[2,125]},{"23":282,"25":[1,305],"45":[1,54],"108":[1,306],"109":307,"110":[1,281]},{"25":[2,132],"45":[2,132],"108":[2,132],"110":[2,132]},{"6":309,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"89":308,"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[1,310]},{"1":[2,78],"3":[2,78],"24":[1,169],"25":[2,78],"46":[2,78],"54":[2,78],"56":[2,78],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,78],"71":[1,135],"72":[2,78],"75":[2,78],"76":311,"81":127,"82":[1,133],"84":[2,78],"88":[2,78],"96":[2,78],"98":[2,78],"99":[2,78],"100":[2,78],"103":[2,78],"105":[2,78],"112":[2,78],"115":[2,78],"118":[2,78],"119":[2,78],"122":[2,78],"123":[2,78],"126":[2,78],"127":[2,78],"128":[2,78],"129":[2,78],"130":[2,78],"131":[2,78],"132":[2,78],"133":[2,78],"134":[2,78],"135":[2,78],"136":[2,78],"137":[2,78],"138":[2,78],"139":[2,78],"140":[2,78],"141":[2,78],"142":[2,78],"143":[2,78],"144":[2,78],"145":[2,78],"146":[2,78],"147":[2,78],"148":[2,78],"149":[2,78],"150":[2,78],"151":[2,78],"152":[2,78],"153":[2,78],"154":[2,78],"155":[2,78]},{"3":[2,105],"25":[2,105],"46":[1,106],"54":[2,105],"56":[1,121],"84":[2,105],"88":[2,105],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":312,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":313,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,106],"25":[2,106],"46":[1,106],"54":[2,106],"56":[1,121],"84":[2,106],"88":[2,106],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":314,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[1,315],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,83],"25":[2,83],"54":[2,83],"75":[2,83]},{"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":316,"45":[1,54]},{"3":[2,84],"25":[2,84],"54":[2,84],"75":[2,84]},{"1":[2,86],"3":[2,86],"24":[2,86],"25":[2,86],"46":[2,86],"54":[2,86],"56":[2,86],"70":[2,86],"72":[2,86],"75":[2,86],"84":[2,86],"88":[2,86],"96":[2,86],"98":[2,86],"99":[2,86],"100":[2,86],"103":[2,86],"105":[2,86],"112":[2,86],"115":[2,86],"118":[2,86],"119":[2,86],"122":[2,86],"123":[2,86],"126":[2,86],"127":[2,86],"128":[2,86],"129":[2,86],"130":[2,86],"131":[2,86],"132":[2,86],"133":[2,86],"134":[2,86],"135":[2,86],"136":[2,86],"137":[2,86],"138":[2,86],"139":[2,86],"140":[2,86],"141":[2,86],"142":[2,86],"143":[2,86],"144":[2,86],"145":[2,86],"146":[2,86],"147":[2,86],"148":[2,86],"149":[2,86],"150":[2,86],"151":[2,86],"152":[2,86],"153":[2,86],"154":[2,86],"155":[2,86]},{"3":[2,42],"25":[2,42],"46":[1,106],"54":[2,42],"56":[1,121],"75":[2,42],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,43],"25":[2,43],"46":[1,106],"54":[2,43],"56":[1,121],"75":[2,43],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,94],"3":[2,94],"24":[2,94],"25":[2,94],"46":[2,94],"54":[2,94],"56":[2,94],"70":[2,94],"72":[2,94],"75":[2,94],"84":[2,94],"88":[2,94],"96":[2,94],"98":[2,94],"99":[2,94],"100":[2,94],"103":[2,94],"105":[2,94],"112":[2,94],"115":[2,94],"118":[2,94],"119":[2,94],"122":[2,94],"123":[2,94],"126":[2,94],"127":[2,94],"128":[2,94],"129":[2,94],"130":[2,94],"131":[2,94],"132":[2,94],"133":[2,94],"134":[2,94],"135":[2,94],"136":[2,94],"137":[2,94],"138":[2,94],"139":[2,94],"140":[2,94],"141":[2,94],"142":[2,94],"143":[2,94],"144":[2,94],"145":[2,94],"146":[2,94],"147":[2,94],"148":[2,94],"149":[2,94],"150":[2,94],"151":[2,94],"152":[2,94],"153":[2,94],"154":[2,94],"155":[2,94]},{"5":317,"24":[1,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,119],"3":[2,119],"24":[2,119],"25":[2,119],"46":[1,106],"54":[2,119],"56":[1,121],"70":[2,119],"72":[2,119],"75":[2,119],"84":[2,119],"88":[2,119],"96":[2,119],"97":119,"98":[1,75],"99":[2,119],"100":[1,120],"103":[1,116],"105":[2,119],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":318,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[1,319],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,49],"3":[2,49],"24":[2,49],"25":[2,49],"46":[2,49],"54":[2,49],"56":[2,49],"70":[2,49],"72":[2,49],"75":[2,49],"84":[2,49],"88":[2,49],"96":[2,49],"98":[2,49],"99":[2,49],"100":[2,49],"103":[2,49],"105":[2,49],"112":[2,49],"115":[2,49],"118":[2,49],"119":[2,49],"122":[2,49],"123":[2,49],"126":[2,49],"127":[2,49],"128":[2,49],"129":[2,49],"130":[2,49],"131":[2,49],"132":[2,49],"133":[2,49],"134":[2,49],"135":[2,49],"136":[2,49],"137":[2,49],"138":[2,49],"139":[2,49],"140":[2,49],"141":[2,49],"142":[2,49],"143":[2,49],"144":[2,49],"145":[2,49],"146":[2,49],"147":[2,49],"148":[2,49],"149":[2,49],"150":[2,49],"151":[2,49],"152":[2,49],"153":[2,49],"154":[2,49],"155":[2,49]},{"49":[2,57],"54":[2,57],"56":[2,57]},{"1":[2,114],"3":[2,114],"24":[2,114],"25":[2,114],"46":[2,114],"54":[2,114],"56":[2,114],"70":[2,114],"72":[2,114],"75":[2,114],"84":[2,114],"88":[2,114],"96":[2,114],"98":[2,114],"99":[2,114],"100":[2,114],"103":[2,114],"105":[2,114],"112":[2,114],"115":[2,114],"118":[2,114],"119":[2,114],"122":[2,114],"123":[2,114],"126":[2,114],"127":[2,114],"128":[2,114],"129":[2,114],"130":[2,114],"131":[2,114],"132":[2,114],"133":[2,114],"134":[2,114],"135":[2,114],"136":[2,114],"137":[2,114],"138":[2,114],"139":[2,114],"140":[2,114],"141":[2,114],"142":[2,114],"143":[2,114],"144":[2,114],"145":[2,114],"146":[2,114],"147":[2,114],"148":[2,114],"149":[2,114],"150":[2,114],"151":[2,114],"152":[2,114],"153":[2,114],"154":[2,114],"155":[2,114]},{"1":[2,115],"3":[2,115],"24":[2,115],"25":[2,115],"46":[2,115],"54":[2,115],"56":[2,115],"70":[2,115],"72":[2,115],"75":[2,115],"84":[2,115],"88":[2,115],"92":[2,115],"96":[2,115],"98":[2,115],"99":[2,115],"100":[2,115],"103":[2,115],"105":[2,115],"112":[2,115],"115":[2,115],"118":[2,115],"119":[2,115],"122":[2,115],"123":[2,115],"126":[2,115],"127":[2,115],"128":[2,115],"129":[2,115],"130":[2,115],"131":[2,115],"132":[2,115],"133":[2,115],"134":[2,115],"135":[2,115],"136":[2,115],"137":[2,115],"138":[2,115],"139":[2,115],"140":[2,115],"141":[2,115],"142":[2,115],"143":[2,115],"144":[2,115],"145":[2,115],"146":[2,115],"147":[2,115],"148":[2,115],"149":[2,115],"150":[2,115],"151":[2,115],"152":[2,115],"153":[2,115],"154":[2,115],"155":[2,115]},{"1":[2,128],"3":[2,128],"24":[2,128],"25":[2,128],"46":[1,106],"54":[2,128],"56":[1,121],"70":[2,128],"72":[2,128],"75":[2,128],"84":[2,128],"88":[2,128],"96":[2,128],"97":119,"98":[2,128],"99":[2,128],"100":[2,128],"103":[1,116],"105":[2,128],"112":[2,128],"115":[2,128],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,129],"3":[2,129],"24":[2,129],"25":[2,129],"46":[1,106],"54":[2,129],"56":[1,121],"70":[2,129],"72":[2,129],"75":[2,129],"84":[2,129],"88":[2,129],"96":[2,129],"97":119,"98":[2,129],"99":[2,129],"100":[2,129],"103":[1,116],"105":[2,129],"112":[2,129],"115":[2,129],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,130],"3":[2,130],"24":[2,130],"25":[2,130],"46":[2,130],"54":[2,130],"56":[2,130],"70":[2,130],"72":[2,130],"75":[2,130],"84":[2,130],"88":[2,130],"96":[2,130],"98":[2,130],"99":[2,130],"100":[2,130],"103":[2,130],"105":[2,130],"112":[2,130],"115":[2,130],"118":[2,130],"119":[2,130],"122":[2,130],"123":[2,130],"126":[2,130],"127":[2,130],"128":[2,130],"129":[2,130],"130":[2,130],"131":[2,130],"132":[2,130],"133":[2,130],"134":[2,130],"135":[2,130],"136":[2,130],"137":[2,130],"138":[2,130],"139":[2,130],"140":[2,130],"141":[2,130],"142":[2,130],"143":[2,130],"144":[2,130],"145":[2,130],"146":[2,130],"147":[2,130],"148":[2,130],"149":[2,130],"150":[2,130],"151":[2,130],"152":[2,130],"153":[2,130],"154":[2,130],"155":[2,130]},{"5":320,"24":[1,6]},{"25":[2,133],"45":[2,133],"108":[2,133],"110":[2,133]},{"5":321,"24":[1,6],"54":[1,322]},{"24":[2,110],"46":[1,106],"54":[2,110],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"23":282,"45":[1,54],"109":323,"110":[1,281]},{"1":[2,80],"3":[2,80],"24":[2,80],"25":[2,80],"46":[2,80],"54":[2,80],"56":[2,80],"70":[2,80],"72":[2,80],"75":[2,80],"84":[2,80],"88":[2,80],"96":[2,80],"98":[2,80],"99":[2,80],"100":[2,80],"103":[2,80],"105":[2,80],"112":[2,80],"115":[2,80],"118":[2,80],"119":[2,80],"122":[2,80],"123":[2,80],"126":[2,80],"127":[2,80],"128":[2,80],"129":[2,80],"130":[2,80],"131":[2,80],"132":[2,80],"133":[2,80],"134":[2,80],"135":[2,80],"136":[2,80],"137":[2,80],"138":[2,80],"139":[2,80],"140":[2,80],"141":[2,80],"142":[2,80],"143":[2,80],"144":[2,80],"145":[2,80],"146":[2,80],"147":[2,80],"148":[2,80],"149":[2,80],"150":[2,80],"151":[2,80],"152":[2,80],"153":[2,80],"154":[2,80],"155":[2,80]},{"3":[2,107],"25":[2,107],"46":[1,106],"54":[2,107],"56":[1,121],"84":[2,107],"88":[2,107],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,108],"25":[2,108],"46":[1,106],"54":[2,108],"56":[1,121],"84":[2,108],"88":[2,108],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,121],"88":[1,324],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,58],"6":325,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[2,58],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,58],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,58],"56":[2,58],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,58],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[2,58],"100":[2,58],"103":[2,58],"106":[1,52],"111":74,"112":[2,58],"114":46,"115":[2,58],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"3":[2,85],"25":[2,85],"54":[2,85],"75":[2,85]},{"1":[2,141],"3":[2,141],"24":[2,141],"25":[2,141],"46":[2,141],"54":[2,141],"56":[2,141],"70":[2,141],"72":[2,141],"75":[2,141],"84":[2,141],"88":[2,141],"96":[2,141],"98":[2,141],"99":[2,141],"100":[2,141],"103":[2,141],"105":[2,141],"108":[2,141],"112":[2,141],"115":[2,141],"118":[2,141],"119":[2,141],"122":[2,141],"123":[2,141],"126":[2,141],"127":[2,141],"128":[2,141],"129":[2,141],"130":[2,141],"131":[2,141],"132":[2,141],"133":[2,141],"134":[2,141],"135":[2,141],"136":[2,141],"137":[2,141],"138":[2,141],"139":[2,141],"140":[2,141],"141":[2,141],"142":[2,141],"143":[2,141],"144":[2,141],"145":[2,141],"146":[2,141],"147":[2,141],"148":[2,141],"149":[2,141],"150":[2,141],"151":[2,141],"152":[2,141],"153":[2,141],"154":[2,141],"155":[2,141]},{"46":[1,106],"56":[1,121],"70":[1,326],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":327,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,58],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[2,58],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,58],"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[2,58],"100":[2,58],"103":[2,58],"106":[1,52],"111":74,"112":[2,58],"114":46,"115":[2,58],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"25":[1,328]},{"3":[1,329],"25":[2,134],"45":[2,134],"108":[2,134],"110":[2,134]},{"6":330,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"25":[2,136],"45":[2,136],"108":[2,136],"110":[2,136]},{"1":[2,97],"3":[2,97],"24":[2,97],"25":[2,97],"42":[2,97],"46":[2,97],"54":[2,97],"56":[2,97],"64":[2,97],"65":[2,97],"66":[2,97],"69":[2,97],"70":[2,97],"71":[2,97],"72":[2,97],"75":[2,97],"78":[2,97],"82":[2,97],"84":[2,97],"88":[2,97],"96":[2,97],"98":[2,97],"99":[2,97],"100":[2,97],"103":[2,97],"105":[2,97],"112":[2,97],"115":[2,97],"118":[2,97],"119":[2,97],"122":[2,97],"123":[2,97],"126":[2,97],"127":[2,97],"128":[2,97],"129":[2,97],"130":[2,97],"131":[2,97],"132":[2,97],"133":[2,97],"134":[2,97],"135":[2,97],"136":[2,97],"137":[2,97],"138":[2,97],"139":[2,97],"140":[2,97],"141":[2,97],"142":[2,97],"143":[2,97],"144":[2,97],"145":[2,97],"146":[2,97],"147":[2,97],"148":[2,97],"149":[2,97],"150":[2,97],"151":[2,97],"152":[2,97],"153":[2,97],"154":[2,97],"155":[2,97]},{"46":[1,106],"56":[1,121],"88":[1,331],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,99],"3":[2,99],"24":[2,99],"25":[2,99],"42":[2,99],"46":[2,99],"54":[2,99],"56":[2,99],"64":[2,99],"65":[2,99],"66":[2,99],"69":[2,99],"70":[2,99],"71":[2,99],"72":[2,99],"75":[2,99],"78":[2,99],"82":[2,99],"84":[2,99],"88":[2,99],"96":[2,99],"98":[2,99],"99":[2,99],"100":[2,99],"103":[2,99],"105":[2,99],"112":[2,99],"115":[2,99],"118":[2,99],"119":[2,99],"122":[2,99],"123":[2,99],"126":[2,99],"127":[2,99],"128":[2,99],"129":[2,99],"130":[2,99],"131":[2,99],"132":[2,99],"133":[2,99],"134":[2,99],"135":[2,99],"136":[2,99],"137":[2,99],"138":[2,99],"139":[2,99],"140":[2,99],"141":[2,99],"142":[2,99],"143":[2,99],"144":[2,99],"145":[2,99],"146":[2,99],"147":[2,99],"148":[2,99],"149":[2,99],"150":[2,99],"151":[2,99],"152":[2,99],"153":[2,99],"154":[2,99],"155":[2,99]},{"46":[1,106],"56":[1,121],"70":[1,332],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,131],"3":[2,131],"24":[2,131],"25":[2,131],"46":[2,131],"54":[2,131],"56":[2,131],"70":[2,131],"72":[2,131],"75":[2,131],"84":[2,131],"88":[2,131],"96":[2,131],"98":[2,131],"99":[2,131],"100":[2,131],"103":[2,131],"105":[2,131],"112":[2,131],"115":[2,131],"118":[2,131],"119":[2,131],"122":[2,131],"123":[2,131],"126":[2,131],"127":[2,131],"128":[2,131],"129":[2,131],"130":[2,131],"131":[2,131],"132":[2,131],"133":[2,131],"134":[2,131],"135":[2,131],"136":[2,131],"137":[2,131],"138":[2,131],"139":[2,131],"140":[2,131],"141":[2,131],"142":[2,131],"143":[2,131],"144":[2,131],"145":[2,131],"146":[2,131],"147":[2,131],"148":[2,131],"149":[2,131],"150":[2,131],"151":[2,131],"152":[2,131],"153":[2,131],"154":[2,131],"155":[2,131]},{"25":[2,135],"45":[2,135],"108":[2,135],"110":[2,135]},{"24":[2,111],"46":[1,106],"54":[2,111],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,98],"3":[2,98],"24":[2,98],"25":[2,98],"42":[2,98],"46":[2,98],"54":[2,98],"56":[2,98],"64":[2,98],"65":[2,98],"66":[2,98],"69":[2,98],"70":[2,98],"71":[2,98],"72":[2,98],"75":[2,98],"78":[2,98],"82":[2,98],"84":[2,98],"88":[2,98],"96":[2,98],"98":[2,98],"99":[2,98],"100":[2,98],"103":[2,98],"105":[2,98],"112":[2,98],"115":[2,98],"118":[2,98],"119":[2,98],"122":[2,98],"123":[2,98],"126":[2,98],"127":[2,98],"128":[2,98],"129":[2,98],"130":[2,98],"131":[2,98],"132":[2,98],"133":[2,98],"134":[2,98],"135":[2,98],"136":[2,98],"137":[2,98],"138":[2,98],"139":[2,98],"140":[2,98],"141":[2,98],"142":[2,98],"143":[2,98],"144":[2,98],"145":[2,98],"146":[2,98],"147":[2,98],"148":[2,98],"149":[2,98],"150":[2,98],"151":[2,98],"152":[2,98],"153":[2,98],"154":[2,98],"155":[2,98]},{"1":[2,100],"3":[2,100],"24":[2,100],"25":[2,100],"42":[2,100],"46":[2,100],"54":[2,100],"56":[2,100],"64":[2,100],"65":[2,100],"66":[2,100],"69":[2,100],"70":[2,100],"71":[2,100],"72":[2,100],"75":[2,100],"78":[2,100],"82":[2,100],"84":[2,100],"88":[2,100],"96":[2,100],"98":[2,100],"99":[2,100],"100":[2,100],"103":[2,100],"105":[2,100],"112":[2,100],"115":[2,100],"118":[2,100],"119":[2,100],"122":[2,100],"123":[2,100],"126":[2,100],"127":[2,100],"128":[2,100],"129":[2,100],"130":[2,100],"131":[2,100],"132":[2,100],"133":[2,100],"134":[2,100],"135":[2,100],"136":[2,100],"137":[2,100],"138":[2,100],"139":[2,100],"140":[2,100],"141":[2,100],"142":[2,100],"143":[2,100],"144":[2,100],"145":[2,100],"146":[2,100],"147":[2,100],"148":[2,100],"149":[2,100],"150":[2,100],"151":[2,100],"152":[2,100],"153":[2,100],"154":[2,100],"155":[2,100]}],parseError:function parseError(str,hash){throw new Error(str)},parse:function parse(input){var self=this,stack=[0],vstack=[null],table=this.table,yytext="",yylineno=0,yyleng=0,shifts=0,reductions=0;this.lexer.setInput(input);this.lexer.yy=this.yy;var parseError=this.yy.parseError=this.yy.parseError||this.parseError;function lex(){var token;token=self.lexer.lex()||1;if(typeof token!=="number"){token=self.symbols_[token]}return token}var symbol,state,action,a,r,yyval={},p,len,ip=0,newState,expected;symbol=lex();while(true){state=stack[stack.length-1];action=table[state]&&table[state][symbol];if(typeof action==="undefined"||!action.length||!action[0]){expected=[];for(p in table[state]){if(this.terminals_[p]&&p!=1){expected.push("'"+this.terminals_[p]+"'")}}if(this.lexer.showPosition){parseError("Parse error on line "+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(", "),{text:this.lexer.match,token:this.terminals_[symbol],line:this.lexer.yylineno,expected:expected})}else{parseError("Parse error on line "+(yylineno+1)+": Unexpected '"+this.terminals_[symbol]+"'",{text:this.lexer.match,token:this.terminals_[symbol],line:this.lexer.yylineno,expected:expected})}}if(action[0] instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}a=action;switch(a[0]){case 1:shifts++;stack.push(symbol);++ip;yyleng=this.lexer.yyleng;yytext=this.lexer.yytext;yylineno=this.lexer.yylineno;symbol=lex();vstack.push(null);stack.push(a[1]);break;case 2:reductions++;len=this.productions_[a[1]][1];yyval.$=vstack[vstack.length-len];r=this.performAction.call(yyval,yytext,yyleng,yylineno,this.yy,a[1],vstack);if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len)}stack.push(this.productions_[a[1]][0]);vstack.push(yyval.$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:this.reductionCount=reductions;this.shiftCount=shifts;return true}}return true}};return parser})();if(typeof require!=="undefined"){exports.parser=parser;exports.parse=function(){return parser.parse.apply(parser,arguments)};exports.main=function commonjsMain(args){var cwd=require("file").path(require("file").cwd());if(!args[1]){throw new Error("Usage: "+args[0]+" FILE")}var source=cwd.join(args[1]).read({charset:"utf-8"});this.parse(source)};if(require.main===module){exports.main(require("system").args)}}(function(){var Scope;var __hasProp=Object.prototype.hasOwnProperty;if(!((typeof process!=="undefined"&&process!==null))){this.exports=this}exports.Scope=(function(){Scope=function Scope(parent,expressions,method){var _a;_a=[parent,expressions,method];this.parent=_a[0];this.expressions=_a[1];this.method=_a[2];this.variables={};this.temp_var=this.parent?this.parent.temp_var:"_a";return this};Scope.prototype.find=function find(name){if(this.check(name)){return true}this.variables[name]="var";return false};Scope.prototype.parameter=function parameter(name){return this.variables[name]="param"};Scope.prototype.check=function check(name){if(this.variables[name]){return true}return !!(this.parent&&this.parent.check(name))};Scope.prototype.free_variable=function free_variable(){var ordinal;while(this.check(this.temp_var)){ordinal=1+parseInt(this.temp_var.substr(1),36);this.temp_var="_"+ordinal.toString(36).replace(/\d/g,"a")}this.variables[this.temp_var]="var";return this.temp_var};Scope.prototype.assign=function assign(name,value,top_level){if(top_level&&this.parent){return this.parent.assign(name,value,top_level)}return this.variables[name]={value:value,assigned:true}};Scope.prototype.has_declarations=function has_declarations(body){return body===this.expressions&&this.declared_variables().length};Scope.prototype.has_assignments=function has_assignments(body){return body===this.expressions&&this.assigned_variables().length};Scope.prototype.declared_variables=function declared_variables(){var _a,_b,key,val;return(function(){_a=[];_b=this.variables;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];if(val==="var"){_a.push(key)}}}return _a}).call(this).sort()};Scope.prototype.assigned_variables=function assigned_variables(){var _a,_b,key,val;_a=[];_b=this.variables;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];if(val.assigned){_a.push(key+" = "+(val.value))}}}return _a};Scope.prototype.compiled_declarations=function compiled_declarations(){return this.declared_variables().join(", ")};Scope.prototype.compiled_assignments=function compiled_assignments(){return this.assigned_variables().join(", ")};return Scope}).call(this)})();(function(){var AccessorNode,ArrayNode,AssignNode,BaseNode,CallNode,ClassNode,ClosureNode,CodeNode,CommentNode,ExistenceNode,Expressions,ExtendsNode,ForNode,IDENTIFIER,IfNode,IndexNode,LiteralNode,ObjectNode,OpNode,ParentheticalNode,PushNode,RangeNode,ReturnNode,SliceNode,SplatNode,TAB,TRAILING_WHITESPACE,ThrowNode,TryNode,ValueNode,WhileNode,compact,del,flatten,literal,merge,statement;var __extends=function(child,parent){var ctor=function(){};ctor.prototype=parent.prototype;child.__superClass__=parent.prototype;child.prototype=new ctor();child.prototype.constructor=child},__hasProp=Object.prototype.hasOwnProperty;(typeof process!=="undefined"&&process!==null)?process.mixin(require("scope")):(this.exports=this);statement=function statement(klass,only){klass.prototype.is_statement=function is_statement(){return true};if(only){return((klass.prototype.is_pure_statement=function is_pure_statement(){return true}))}};exports.BaseNode=(function(){BaseNode=function BaseNode(){};BaseNode.prototype.compile=function compile(o){var closure,top;this.options=merge(o||{});this.tab=o.indent;if(!(this.operation_sensitive())){del(this.options,"operation")}top=this.top_sensitive()?this.options.top:del(this.options,"top");closure=this.is_statement()&&!this.is_pure_statement()&&!top&&!this.options.returns&&!(this instanceof CommentNode)&&!this.contains(function(node){return node.is_pure_statement()});return closure?this.compile_closure(this.options):this.compile_node(this.options)};BaseNode.prototype.compile_closure=function compile_closure(o){this.tab=o.indent;o.shared_scope=o.scope;return ClosureNode.wrap(this).compile(o)};BaseNode.prototype.compile_reference=function compile_reference(o){var compiled,reference;reference=literal(o.scope.free_variable());compiled=new AssignNode(reference,this);return[compiled,reference]};BaseNode.prototype.idt=function idt(tabs){var idt,num;idt=this.tab||"";num=(tabs||0)+1;while(num-=1){idt+=TAB}return idt};BaseNode.prototype.contains=function contains(block){var _a,_b,_c,node;_a=this.children;for(_b=0,_c=_a.length;_b<_c;_b++){node=_a[_b];if(block(node)){return true}if(node.contains&&node.contains(block)){return true}}return false};BaseNode.prototype.traverse=function traverse(block){var _a,_b,_c,_d,node;_a=[];_b=this.children;for(_c=0,_d=_b.length;_c<_d;_c++){node=_b[_c];_a.push((function(){block(node);if(node.traverse){return node.traverse(block)}}).call(this))}return _a};BaseNode.prototype.toString=function toString(idt){var _a,_b,_c,_d,child;idt=idt||"";return"\n"+idt+this.type+(function(){_a=[];_b=this.children;for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(child.toString(idt+TAB))}return _a}).call(this).join("")};BaseNode.prototype.unwrap=function unwrap(){return this};BaseNode.prototype.children=[];BaseNode.prototype.is_statement=function is_statement(){return false};BaseNode.prototype.is_pure_statement=function is_pure_statement(){return false};BaseNode.prototype.top_sensitive=function top_sensitive(){return false};BaseNode.prototype.operation_sensitive=function operation_sensitive(){return false};return BaseNode}).call(this);exports.Expressions=(function(){Expressions=function Expressions(nodes){this.children=(this.expressions=compact(flatten(nodes||[])));return this};__extends(Expressions,BaseNode);Expressions.prototype.type="Expressions";Expressions.prototype.push=function push(node){this.expressions.push(node);return this};Expressions.prototype.unshift=function unshift(node){this.expressions.unshift(node);return this};Expressions.prototype.unwrap=function unwrap(){return this.expressions.length===1?this.expressions[0]:this};Expressions.prototype.empty=function empty(){return this.expressions.length===0};Expressions.prototype.is_last=function is_last(node){var l,last_index;l=this.expressions.length;last_index=this.expressions[l-1] instanceof CommentNode?2:1;return node===this.expressions[l-last_index]};Expressions.prototype.compile=function compile(o){o=o||{};return o.scope?Expressions.__superClass__.compile.call(this,o):this.compile_root(o)};Expressions.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,node;return(function(){_a=[];_b=this.expressions;for(_c=0,_d=_b.length;_c<_d;_c++){node=_b[_c];_a.push(this.compile_expression(node,merge(o)))}return _a}).call(this).join("\n")};Expressions.prototype.compile_root=function compile_root(o){var code;o.indent=(this.tab=o.no_wrap?"":TAB);o.scope=new Scope(null,this,null);code=o.globals?this.compile_node(o):this.compile_with_declarations(o);code=code.replace(TRAILING_WHITESPACE,"");return o.no_wrap?code:"(function(){\n"+code+"\n})();\n"};Expressions.prototype.compile_with_declarations=function compile_with_declarations(o){var args,code;code=this.compile_node(o);args=this.contains(function(node){return node instanceof ValueNode&&node.is_arguments()});if(args){code=(this.tab)+"arguments = Array.prototype.slice.call(arguments, 0);\n"+code}if(o.scope.has_assignments(this)){code=(this.tab)+"var "+(o.scope.compiled_assignments())+";\n"+code}if(o.scope.has_declarations(this)){code=(this.tab)+"var "+(o.scope.compiled_declarations())+";\n"+code}return code};Expressions.prototype.compile_expression=function compile_expression(node,o){var returns,stmt;this.tab=o.indent;stmt=node.is_statement();returns=del(o,"returns")&&this.is_last(node)&&!node.is_pure_statement();if(!(returns)){return(stmt?"":this.idt())+node.compile(merge(o,{top:true}))+(stmt?"":";")}if(node.is_statement()){return node.compile(merge(o,{returns:true}))}return(this.tab)+"return "+(node.compile(o))+";"};return Expressions}).call(this);Expressions.wrap=function wrap(nodes){if(nodes.length===1&&nodes[0] instanceof Expressions){return nodes[0]}return new Expressions(nodes)};statement(Expressions);exports.LiteralNode=(function(){LiteralNode=function LiteralNode(value){this.value=value;return this};__extends(LiteralNode,BaseNode);LiteralNode.prototype.type="Literal";LiteralNode.prototype.is_statement=function is_statement(){return this.value==="break"||this.value==="continue"};LiteralNode.prototype.is_pure_statement=LiteralNode.prototype.is_statement;LiteralNode.prototype.compile_node=function compile_node(o){var end,idt;idt=this.is_statement()?this.idt():"";end=this.is_statement()?";":"";return idt+this.value+end};LiteralNode.prototype.toString=function toString(idt){return' "'+this.value+'"'};return LiteralNode}).call(this);exports.ReturnNode=(function(){ReturnNode=function ReturnNode(expression){this.children=[(this.expression=expression)];return this};__extends(ReturnNode,BaseNode);ReturnNode.prototype.type="Return";ReturnNode.prototype.compile_node=function compile_node(o){if(this.expression.is_statement()){return this.expression.compile(merge(o,{returns:true}))}return(this.tab)+"return "+(this.expression.compile(o))+";"};return ReturnNode}).call(this);statement(ReturnNode,true);exports.ValueNode=(function(){ValueNode=function ValueNode(base,properties){this.children=flatten([(this.base=base),(this.properties=(properties||[]))]);return this};__extends(ValueNode,BaseNode);ValueNode.prototype.type="Value";ValueNode.prototype.SOAK=" == undefined ? undefined : ";ValueNode.prototype.push=function push(prop){this.properties.push(prop);this.children.push(prop);return this};ValueNode.prototype.operation_sensitive=function operation_sensitive(){return true};ValueNode.prototype.has_properties=function has_properties(){return !!this.properties.length};ValueNode.prototype.is_array=function is_array(){return this.base instanceof ArrayNode&&!this.has_properties()};ValueNode.prototype.is_object=function is_object(){return this.base instanceof ObjectNode&&!this.has_properties()};ValueNode.prototype.is_splice=function is_splice(){return this.has_properties()&&this.properties[this.properties.length-1] instanceof SliceNode};ValueNode.prototype.is_arguments=function is_arguments(){return this.base.value==="arguments"};ValueNode.prototype.unwrap=function unwrap(){return this.properties.length?this:this.base};ValueNode.prototype.is_statement=function is_statement(){return this.base.is_statement&&this.base.is_statement()&&!this.has_properties()};ValueNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,baseline,complete,only,op,part,prop,props,soaked,temp;soaked=false;only=del(o,"only_first");op=del(o,"operation");props=only?this.properties.slice(0,this.properties.length-1):this.properties;baseline=this.base.compile(o);if(this.base instanceof ObjectNode&&this.has_properties()){baseline="("+baseline+")"}complete=(this.last=baseline);_a=props;for(_b=0,_c=_a.length;_b<_c;_b++){prop=_a[_b];this.source=baseline;if(prop.soak_node){soaked=true;if(this.base instanceof CallNode&&prop===props[0]){temp=o.scope.free_variable();complete="("+temp+" = "+complete+")"+this.SOAK+((baseline=temp+prop.compile(o)))}else{complete=complete+this.SOAK+(baseline+=prop.compile(o))}}else{part=prop.compile(o);baseline+=part;complete+=part;this.last=part}}return op&&soaked?"("+complete+")":complete};return ValueNode}).call(this);exports.CommentNode=(function(){CommentNode=function CommentNode(lines){this.lines=lines;this;return this};__extends(CommentNode,BaseNode);CommentNode.prototype.type="Comment";CommentNode.prototype.compile_node=function compile_node(o){return this.tab+"//"+this.lines.join("\n"+this.tab+"//")};return CommentNode}).call(this);statement(CommentNode);exports.CallNode=(function(){CallNode=function CallNode(variable,args){this.children=flatten([(this.variable=variable),(this.args=(args||[]))]);this.prefix="";return this};__extends(CallNode,BaseNode);CallNode.prototype.type="Call";CallNode.prototype.new_instance=function new_instance(){this.prefix="new ";return this};CallNode.prototype.push=function push(arg){this.args.push(arg);this.children.push(arg);return this};CallNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,arg,args;if(this.args[this.args.length-1] instanceof SplatNode){return this.compile_splat(o)}args=(function(){_a=[];_b=this.args;for(_c=0,_d=_b.length;_c<_d;_c++){arg=_b[_c];_a.push(arg.compile(o))}return _a}).call(this).join(", ");if(this.variable==="super"){return this.compile_super(args,o)}return this.prefix+(this.variable.compile(o))+"("+args+")"};CallNode.prototype.compile_super=function compile_super(args,o){var meth,methname;methname=o.scope.method.name;meth=o.scope.method.proto?(o.scope.method.proto)+".__superClass__."+methname:(methname)+".__superClass__.constructor";return(meth)+".call(this"+(args.length?", ":"")+args+")"};CallNode.prototype.compile_splat=function compile_splat(o){var _a,_b,_c,arg,args,code,i,meth,obj,temp;meth=this.variable.compile(o);obj=this.variable.source||"this";if(obj.match(/\(/)){temp=o.scope.free_variable();obj=temp;meth="("+temp+" = "+(this.variable.source)+")"+(this.variable.last)}args=(function(){_a=[];_b=this.args;for(i=0,_c=_b.length;i<_c;i++){arg=_b[i];_a.push((function(){code=arg.compile(o);code=arg instanceof SplatNode?code:"["+code+"]";return i===0?code:".concat("+code+")"}).call(this))}return _a}).call(this);return this.prefix+(meth)+".apply("+obj+", "+(args.join(""))+")"};return CallNode}).call(this);exports.ExtendsNode=(function(){ExtendsNode=function ExtendsNode(child,parent){this.children=[(this.child=child),(this.parent=parent)];return this};__extends(ExtendsNode,BaseNode);ExtendsNode.prototype.type="Extends";ExtendsNode.prototype.code="function(child, parent) {\n var ctor = function(){ };\n ctor.prototype = parent.prototype;\n child.__superClass__ = parent.prototype;\n child.prototype = new ctor();\n child.prototype.constructor = child;\n }";ExtendsNode.prototype.compile_node=function compile_node(o){var call,ref;o.scope.assign("__extends",this.code,true);ref=new ValueNode(literal("__extends"));call=new CallNode(ref,[this.child,this.parent]);return call.compile(o)};return ExtendsNode}).call(this);exports.AccessorNode=(function(){AccessorNode=function AccessorNode(name,tag){this.children=[(this.name=name)];this.prototype=tag==="prototype";this.soak_node=tag==="soak";this;return this};__extends(AccessorNode,BaseNode);AccessorNode.prototype.type="Accessor";AccessorNode.prototype.compile_node=function compile_node(o){return"."+(this.prototype?"prototype.":"")+this.name.compile(o)};return AccessorNode}).call(this);exports.IndexNode=(function(){IndexNode=function IndexNode(index,tag){this.children=[(this.index=index)];this.soak_node=tag==="soak";return this};__extends(IndexNode,BaseNode);IndexNode.prototype.type="Index";IndexNode.prototype.compile_node=function compile_node(o){var idx;idx=this.index.compile(o);return"["+idx+"]"};return IndexNode}).call(this);exports.RangeNode=(function(){RangeNode=function RangeNode(from,to,exclusive){this.children=[(this.from=from),(this.to=to)];this.exclusive=!!exclusive;return this};__extends(RangeNode,BaseNode);RangeNode.prototype.type="Range";RangeNode.prototype.compile_variables=function compile_variables(o){var _a,_b,from,to;this.tab=o.indent;_a=[o.scope.free_variable(),o.scope.free_variable()];this.from_var=_a[0];this.to_var=_a[1];_b=[this.from.compile(o),this.to.compile(o)];from=_b[0];to=_b[1];return this.from_var+" = "+from+"; "+this.to_var+" = "+to+";\n"+this.tab};RangeNode.prototype.compile_node=function compile_node(o){var compare,equals,idx,incr,intro,step,vars;if(!(o.index)){return this.compile_array(o)}idx=del(o,"index");step=del(o,"step");vars=idx+" = "+this.from_var;step=step?step.compile(o):"1";equals=this.exclusive?"":"=";intro="("+this.from_var+" <= "+this.to_var+" ? "+idx;compare=intro+" <"+equals+" "+this.to_var+" : "+idx+" >"+equals+" "+this.to_var+")";incr=intro+" += "+step+" : "+idx+" -= "+step+")";return vars+"; "+compare+"; "+incr};RangeNode.prototype.compile_array=function compile_array(o){var arr,body,name;name=o.scope.free_variable();body=Expressions.wrap([literal(name)]);arr=Expressions.wrap([new ForNode(body,{source:(new ValueNode(this))},literal(name))]);return(new ParentheticalNode(new CallNode(new CodeNode([],arr)))).compile(o)};return RangeNode}).call(this);exports.SliceNode=(function(){SliceNode=function SliceNode(range){this.children=[(this.range=range)];this;return this};__extends(SliceNode,BaseNode);SliceNode.prototype.type="Slice";SliceNode.prototype.compile_node=function compile_node(o){var from,plus_part,to;from=this.range.from.compile(o);to=this.range.to.compile(o);plus_part=this.range.exclusive?"":" + 1";return".slice("+from+", "+to+plus_part+")"};return SliceNode}).call(this);exports.ObjectNode=(function(){ObjectNode=function ObjectNode(props){this.children=(this.objects=(this.properties=props||[]));return this};__extends(ObjectNode,BaseNode);ObjectNode.prototype.type="Object";ObjectNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,_e,_f,_g,i,indent,inner,join,last_noncom,non_comments,prop,props;o.indent=this.idt(1);non_comments=(function(){_a=[];_b=this.properties;for(_c=0,_d=_b.length;_c<_d;_c++){prop=_b[_c];if(!(prop instanceof CommentNode)){_a.push(prop)}}return _a}).call(this);last_noncom=non_comments[non_comments.length-1];props=(function(){_e=[];_f=this.properties;for(i=0,_g=_f.length;i<_g;i++){prop=_f[i];_e.push((function(){join=",\n";if((prop===last_noncom)||(prop instanceof CommentNode)){join="\n"}if(i===this.properties.length-1){join=""}indent=prop instanceof CommentNode?"":this.idt(1);return indent+prop.compile(o)+join}).call(this))}return _e}).call(this);props=props.join("");inner=props?"\n"+props+"\n"+this.idt():"";return"{"+inner+"}"};return ObjectNode}).call(this);exports.ArrayNode=(function(){ArrayNode=function ArrayNode(objects){this.children=(this.objects=objects||[]);return this};__extends(ArrayNode,BaseNode);ArrayNode.prototype.type="Array";ArrayNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,code,ending,i,obj,objects;o.indent=this.idt(1);objects=(function(){_a=[];_b=this.objects;for(i=0,_c=_b.length;i<_c;i++){obj=_b[i];_a.push((function(){code=obj.compile(o);if(obj instanceof CommentNode){return"\n"+code+"\n"+o.indent}else{if(i===this.objects.length-1){return code}else{return code+", "}}}).call(this))}return _a}).call(this);objects=objects.join("");ending=objects.indexOf("\n")>=0?"\n"+this.tab+"]":"]";return"["+objects+ending};return ArrayNode}).call(this);exports.ClassNode=(function(){ClassNode=function ClassNode(variable,parent,props){this.children=compact(flatten([(this.variable=variable),(this.parent=parent),(this.properties=props||[])]));return this};__extends(ClassNode,BaseNode);ClassNode.prototype.type="Class";ClassNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,applied,construct,extension,func,prop,props,ret,returns,val;extension=this.parent&&new ExtendsNode(this.variable,this.parent);constructor=null;props=new Expressions();o.top=true;ret=del(o,"returns");_a=this.properties;for(_b=0,_c=_a.length;_b<_c;_b++){prop=_a[_b];if(prop.variable&&prop.variable.base.value==="constructor"){func=prop.value;func.body.push(new ReturnNode(literal("this")));constructor=new AssignNode(this.variable,func)}else{if(prop.variable){val=new ValueNode(this.variable,[new AccessorNode(prop.variable,"prototype")]);prop=new AssignNode(val,prop.value)}props.push(prop)}}if(!constructor){if(this.parent){applied=new ValueNode(this.parent,[new AccessorNode(literal("apply"))]);constructor=new AssignNode(this.variable,new CodeNode([],new Expressions([new CallNode(applied,[literal("this"),literal("arguments")])])))}else{constructor=new AssignNode(this.variable,new CodeNode())}}construct=this.idt()+constructor.compile(o)+";\n";props=props.empty()?"":props.compile(o)+"\n";extension=extension?this.idt()+extension.compile(o)+";\n":"";returns=ret?"\n"+this.idt()+"return "+this.variable.compile(o)+";":"";return construct+extension+props+returns};return ClassNode}).call(this);statement(ClassNode);PushNode=(exports.PushNode={wrap:function wrap(array,expressions){var expr;expr=expressions.unwrap();if(expr.is_pure_statement()||expr.contains(function(n){return n.is_pure_statement()})){return expressions}return Expressions.wrap([new CallNode(new ValueNode(literal(array),[new AccessorNode(literal("push"))]),[expr])])}});ClosureNode=(exports.ClosureNode={wrap:function wrap(expressions,statement){var call,func;func=new ParentheticalNode(new CodeNode([],Expressions.wrap([expressions])));call=new CallNode(new ValueNode(func,[new AccessorNode(literal("call"))]),[literal("this")]);return statement?Expressions.wrap([call]):call}});exports.AssignNode=(function(){AssignNode=function AssignNode(variable,value,context){this.children=[(this.variable=variable),(this.value=value)];this.context=context;return this};__extends(AssignNode,BaseNode);AssignNode.prototype.type="Assign";AssignNode.prototype.PROTO_ASSIGN=/^(\S+)\.prototype/;AssignNode.prototype.LEADING_DOT=/^\.(prototype\.)?/;AssignNode.prototype.top_sensitive=function top_sensitive(){return true};AssignNode.prototype.is_value=function is_value(){return this.variable instanceof ValueNode};AssignNode.prototype.is_statement=function is_statement(){return this.is_value()&&(this.variable.is_array()||this.variable.is_object())};AssignNode.prototype.compile_node=function compile_node(o){var last,match,name,proto,stmt,top,val;top=del(o,"top");if(this.is_statement()){return this.compile_pattern_match(o)}if(this.is_value()&&this.variable.is_splice()){return this.compile_splice(o)}stmt=del(o,"as_statement");name=this.variable.compile(o);last=this.is_value()?this.variable.last.replace(this.LEADING_DOT,""):name;match=name.match(this.PROTO_ASSIGN);proto=match&&match[1];if(this.value instanceof CodeNode){if(last.match(IDENTIFIER)){this.value.name=last}if(proto){this.value.proto=proto}}val=this.value.compile(o);if(this.context==="object"){return name+": "+val}if(!(this.is_value()&&this.variable.has_properties())){o.scope.find(name)}val=name+" = "+val;if(stmt){return this.tab+val+";"}if(!top||o.returns){val="("+val+")"}if(o.returns){val=(this.tab)+"return "+val}return val};AssignNode.prototype.compile_pattern_match=function compile_pattern_match(o){var _a,_b,_c,access_class,assigns,code,i,idx,obj,val,val_var,value;val_var=o.scope.free_variable();value=this.value.is_statement()?ClosureNode.wrap(this.value):this.value;assigns=[this.tab+val_var+" = "+(value.compile(o))+";"];o.top=true;o.as_statement=true;_a=this.variable.base.objects;for(i=0,_b=_a.length;i<_b;i++){obj=_a[i];idx=i;if(this.variable.is_object()){_c=[obj.value,obj.variable.base];obj=_c[0];idx=_c[1]}access_class=this.variable.is_array()?IndexNode:AccessorNode;if(obj instanceof SplatNode){val=literal(obj.compile_value(o,val_var,this.variable.base.objects.indexOf(obj)))}else{if(!(typeof idx==="object")){idx=literal(idx)}val=new ValueNode(literal(val_var),[new access_class(idx)])}assigns.push(new AssignNode(obj,val).compile(o))}code=assigns.join("\n");if(o.returns){code+="\n"+(this.tab)+"return "+(this.variable.compile(o))+";"}return code};AssignNode.prototype.compile_splice=function compile_splice(o){var from,l,name,plus,range,to,val;name=this.variable.compile(merge(o,{only_first:true}));l=this.variable.properties.length;range=this.variable.properties[l-1].range;plus=range.exclusive?"":" + 1";from=range.from.compile(o);to=range.to.compile(o)+" - "+from+plus;val=this.value.compile(o);return(name)+".splice.apply("+name+", ["+from+", "+to+"].concat("+val+"))"};return AssignNode}).call(this);exports.CodeNode=(function(){CodeNode=function CodeNode(params,body,tag){this.params=params||[];this.body=body||new Expressions();this.bound=tag==="boundfunc";return this};__extends(CodeNode,BaseNode);CodeNode.prototype.type="Code";CodeNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,_e,_f,_g,code,func,inner,name_part,param,params,shared_scope,splat,top;shared_scope=del(o,"shared_scope");top=del(o,"top");o.scope=shared_scope||new Scope(o.scope,this.body,this);o.returns=true;o.top=true;o.indent=this.idt(this.bound?2:1);del(o,"no_wrap");del(o,"globals");if(this.params[this.params.length-1] instanceof SplatNode){splat=this.params.pop();splat.index=this.params.length;this.body.unshift(splat)}params=(function(){_a=[];_b=this.params;for(_c=0,_d=_b.length;_c<_d;_c++){param=_b[_c];_a.push(param.compile(o))}return _a}).call(this);_e=params;for(_f=0,_g=_e.length;_f<_g;_f++){param=_e[_f];(o.scope.parameter(param))}code=this.body.expressions.length?"\n"+(this.body.compile_with_declarations(o))+"\n":"";name_part=this.name?" "+this.name:"";func="function"+(this.bound?"":name_part)+"("+(params.join(", "))+") {"+code+(this.idt(this.bound?1:0))+"}";if(top&&!this.bound){func="("+func+")"}if(!(this.bound)){return func}inner="(function"+name_part+"() {\n"+(this.idt(2))+"return __func.apply(__this, arguments);\n"+(this.idt(1))+"});";return"(function(__this) {\n"+(this.idt(1))+"var __func = "+func+";\n"+(this.idt(1))+"return "+inner+"\n"+this.tab+"})(this)"};CodeNode.prototype.top_sensitive=function top_sensitive(){return true};CodeNode.prototype.real_children=function real_children(){return flatten([this.params,this.body.expressions])};CodeNode.prototype.traverse=function traverse(block){var _a,_b,_c,_d,child;block(this);_a=[];_b=this.real_children();for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(block(child))}return _a};CodeNode.prototype.toString=function toString(idt){var _a,_b,_c,_d,child,children;idt=idt||"";children=(function(){_a=[];_b=this.real_children();for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(child.toString(idt+TAB))}return _a}).call(this).join("");return"\n"+idt+children};return CodeNode}).call(this);exports.SplatNode=(function(){SplatNode=function SplatNode(name){if(!(name.compile)){name=literal(name)}this.children=[(this.name=name)];return this};__extends(SplatNode,BaseNode);SplatNode.prototype.type="Splat";SplatNode.prototype.compile_node=function compile_node(o){var _a;return(typeof(_a=this.index)!=="undefined"&&_a!==null)?this.compile_param(o):this.name.compile(o)};SplatNode.prototype.compile_param=function compile_param(o){var name;name=this.name.compile(o);o.scope.find(name);return name+" = Array.prototype.slice.call(arguments, "+this.index+")"};SplatNode.prototype.compile_value=function compile_value(o,name,index){return"Array.prototype.slice.call("+name+", "+index+")"};return SplatNode}).call(this);exports.WhileNode=(function(){WhileNode=function WhileNode(condition,opts){this.children=[(this.condition=condition)];this.filter=opts&&opts.filter;return this};__extends(WhileNode,BaseNode);WhileNode.prototype.type="While";WhileNode.prototype.add_body=function add_body(body){this.children.push((this.body=body));return this};WhileNode.prototype.top_sensitive=function top_sensitive(){return true};WhileNode.prototype.compile_node=function compile_node(o){var cond,post,pre,returns,rvar,set,top;returns=del(o,"returns");top=del(o,"top")&&!returns;o.indent=this.idt(1);o.top=true;cond=this.condition.compile(o);set="";if(!top){rvar=o.scope.free_variable();set=this.tab+rvar+" = [];\n";if(this.body){this.body=PushNode.wrap(rvar,this.body)}}post=returns?"\n"+(this.tab)+"return "+rvar+";":"";pre=set+(this.tab)+"while ("+cond+")";if(!this.body){return pre+" null;"+post}if(this.filter){this.body=Expressions.wrap([new IfNode(this.filter,this.body)])}return pre+" {\n"+(this.body.compile(o))+"\n"+this.tab+"}"+post};return WhileNode}).call(this);statement(WhileNode);exports.OpNode=(function(){OpNode=function OpNode(operator,first,second,flip){this.type+=" "+operator;this.children=compact([(this.first=first),(this.second=second)]);this.operator=this.CONVERSIONS[operator]||operator;this.flip=!!flip;return this};__extends(OpNode,BaseNode);OpNode.prototype.type="Op";OpNode.prototype.CONVERSIONS={"==":"===","!=":"!==",and:"&&",or:"||",is:"===",isnt:"!==",not:"!"};OpNode.prototype.CHAINABLE=["<",">",">=","<=","===","!=="];OpNode.prototype.ASSIGNMENT=["||=","&&=","?="];OpNode.prototype.PREFIX_OPERATORS=["typeof","delete"];OpNode.prototype.is_unary=function is_unary(){return !this.second};OpNode.prototype.is_chainable=function is_chainable(){return this.CHAINABLE.indexOf(this.operator)>=0};OpNode.prototype.compile_node=function compile_node(o){o.operation=true;if(this.is_chainable()&&this.first.unwrap() instanceof OpNode&&this.first.unwrap().is_chainable()){return this.compile_chain(o)}if(this.ASSIGNMENT.indexOf(this.operator)>=0){return this.compile_assignment(o)}if(this.is_unary()){return this.compile_unary(o)}if(this.operator==="?"){return this.compile_existence(o)}return[this.first.compile(o),this.operator,this.second.compile(o)].join(" ")};OpNode.prototype.compile_chain=function compile_chain(o){var _a,_b,first,second,shared;shared=this.first.unwrap().second;if(shared instanceof CallNode){_a=shared.compile_reference(o);this.first.second=_a[0];shared=_a[1]}_b=[this.first.compile(o),this.second.compile(o),shared.compile(o)];first=_b[0];second=_b[1];shared=_b[2];return"("+first+") && ("+shared+" "+this.operator+" "+second+")"};OpNode.prototype.compile_assignment=function compile_assignment(o){var _a,first,second;_a=[this.first.compile(o),this.second.compile(o)];first=_a[0];second=_a[1];if(first.match(IDENTIFIER)){o.scope.find(first)}if(this.operator==="?="){return first+" = "+(ExistenceNode.compile_test(o,this.first))+" ? "+first+" : "+second}return first+" = "+first+" "+(this.operator.substr(0,2))+" "+second};OpNode.prototype.compile_existence=function compile_existence(o){var _a,first,second,test;_a=[this.first.compile(o),this.second.compile(o)];first=_a[0];second=_a[1];test=ExistenceNode.compile_test(o,this.first);return test+" ? "+first+" : "+second};OpNode.prototype.compile_unary=function compile_unary(o){var parts,space;space=this.PREFIX_OPERATORS.indexOf(this.operator)>=0?" ":"";parts=[this.operator,space,this.first.compile(o)];if(this.flip){parts=parts.reverse()}return parts.join("")};return OpNode}).call(this);exports.TryNode=(function(){TryNode=function TryNode(attempt,error,recovery,ensure){this.children=compact([(this.attempt=attempt),(this.recovery=recovery),(this.ensure=ensure)]);this.error=error;this;return this};__extends(TryNode,BaseNode);TryNode.prototype.type="Try";TryNode.prototype.compile_node=function compile_node(o){var attempt_part,catch_part,error_part,finally_part;o.indent=this.idt(1);o.top=true;attempt_part=this.attempt.compile(o);error_part=this.error?" ("+(this.error.compile(o))+") ":" ";catch_part=((this.recovery||"")&&" catch")+error_part+"{\n"+(this.recovery.compile(o))+"\n"+this.tab+"}";finally_part=(this.ensure||"")&&" finally {\n"+this.ensure.compile(merge(o,{returns:null}))+"\n"+this.tab+"}";return(this.tab)+"try {\n"+attempt_part+"\n"+this.tab+"}"+catch_part+finally_part};return TryNode}).call(this);statement(TryNode);exports.ThrowNode=(function(){ThrowNode=function ThrowNode(expression){this.children=[(this.expression=expression)];return this};__extends(ThrowNode,BaseNode);ThrowNode.prototype.type="Throw";ThrowNode.prototype.compile_node=function compile_node(o){return(this.tab)+"throw "+(this.expression.compile(o))+";"};return ThrowNode}).call(this);statement(ThrowNode);exports.ExistenceNode=(function(){ExistenceNode=function ExistenceNode(expression){this.children=[(this.expression=expression)];return this};__extends(ExistenceNode,BaseNode);ExistenceNode.prototype.type="Existence";ExistenceNode.prototype.compile_node=function compile_node(o){return ExistenceNode.compile_test(o,this.expression)};return ExistenceNode}).call(this);ExistenceNode.compile_test=function compile_test(o,variable){var _a,_b,_c,first,second;_a=[variable,variable];first=_a[0];second=_a[1];if(variable instanceof CallNode||(variable instanceof ValueNode&&variable.has_properties())){_b=variable.compile_reference(o);first=_b[0];second=_b[1]}_c=[first.compile(o),second.compile(o)];first=_c[0];second=_c[1];return"(typeof "+first+' !== "undefined" && '+second+" !== null)"};exports.ParentheticalNode=(function(){ParentheticalNode=function ParentheticalNode(expression){this.children=[(this.expression=expression)];return this};__extends(ParentheticalNode,BaseNode);ParentheticalNode.prototype.type="Paren";ParentheticalNode.prototype.is_statement=function is_statement(){return this.expression.is_statement()};ParentheticalNode.prototype.compile_node=function compile_node(o){var code,l;code=this.expression.compile(o);if(this.is_statement()){return code}l=code.length;if(code.substr(l-1,1)===";"){code=code.substr(o,l-1)}return"("+code+")"};return ParentheticalNode}).call(this);exports.ForNode=(function(){ForNode=function ForNode(body,source,name,index){var _a;this.body=body;this.name=name;this.index=index||null;this.source=source.source;this.filter=source.filter;this.step=source.step;this.object=!!source.object;if(this.object){_a=[this.index,this.name];this.name=_a[0];this.index=_a[1]}this.children=compact([this.body,this.source,this.filter]);return this};__extends(ForNode,BaseNode);ForNode.prototype.type="For";ForNode.prototype.top_sensitive=function top_sensitive(){return true};ForNode.prototype.compile_node=function compile_node(o){var body,body_dent,close,for_part,index,index_found,index_var,ivar,lvar,name,name_found,range,return_result,rvar,scope,set_result,source,source_part,step_part,svar,top_level,var_part,vars;top_level=del(o,"top")&&!o.returns;range=this.source instanceof ValueNode&&this.source.base instanceof RangeNode&&!this.source.properties.length;source=range?this.source.base:this.source;scope=o.scope;name=this.name&&this.name.compile(o);index=this.index&&this.index.compile(o);name_found=name&&scope.find(name);index_found=index&&scope.find(index);body_dent=this.idt(1);if(!(top_level)){rvar=scope.free_variable()}svar=scope.free_variable();ivar=range?name:index||scope.free_variable();var_part="";body=Expressions.wrap([this.body]);if(range){index_var=scope.free_variable();source_part=source.compile_variables(o);for_part=source.compile(merge(o,{index:ivar,step:this.step}));for_part=index_var+" = 0, "+for_part+", "+index_var+"++"}else{index_var=null;source_part=svar+" = "+(this.source.compile(o))+";\n"+this.tab;if(name){var_part=body_dent+name+" = "+svar+"["+ivar+"];\n"}if(!this.object){lvar=scope.free_variable();step_part=this.step?ivar+" += "+(this.step.compile(o)):ivar+"++";for_part=ivar+" = 0, "+lvar+" = "+(svar)+".length; "+ivar+" < "+lvar+"; "+step_part}}set_result=rvar?this.idt()+rvar+" = []; ":this.idt();return_result=rvar||"";if(top_level&&this.contains(function(n){return n instanceof CodeNode})){body=ClosureNode.wrap(body,true)}if(!(top_level)){body=PushNode.wrap(rvar,body)}if(o.returns){return_result="return "+return_result;del(o,"returns");if(this.filter){body=new IfNode(this.filter,body,null,{statement:true})}}else{if(this.filter){body=Expressions.wrap([new IfNode(this.filter,body)])}}if(this.object){o.scope.assign("__hasProp","Object.prototype.hasOwnProperty",true);for_part=ivar+" in "+svar+") { if (__hasProp.call("+svar+", "+ivar+")"}if(!(top_level)){return_result="\n"+this.tab+return_result+";"}body=body.compile(merge(o,{indent:body_dent,top:true}));vars=range?name:name+", "+ivar;close=this.object?"}}\n":"}\n";return set_result+(source_part)+"for ("+for_part+") {\n"+var_part+body+"\n"+this.tab+close+this.tab+return_result};return ForNode}).call(this);statement(ForNode);exports.IfNode=(function(){IfNode=function IfNode(condition,body,else_body,tags){this.condition=condition;this.body=body&&body.unwrap();this.else_body=else_body&&else_body.unwrap();this.children=compact([this.condition,this.body,this.else_body]);this.tags=tags||{};if(this.condition instanceof Array){this.multiple=true}if(this.tags.invert){this.condition=new OpNode("!",new ParentheticalNode(this.condition))}return this};__extends(IfNode,BaseNode);IfNode.prototype.type="If";IfNode.prototype.push=function push(else_body){var eb;eb=else_body.unwrap();this.else_body?this.else_body.push(eb):(this.else_body=eb);return this};IfNode.prototype.force_statement=function force_statement(){this.tags.statement=true;return this};IfNode.prototype.rewrite_condition=function rewrite_condition(expression){this.switcher=expression;return this};IfNode.prototype.rewrite_switch=function rewrite_switch(o){var _a,_b,_c,assigner,cond,i,variable;assigner=this.switcher;if(!(this.switcher.unwrap() instanceof LiteralNode)){variable=literal(o.scope.free_variable());assigner=new AssignNode(variable,this.switcher);this.switcher=variable}this.condition=(function(){if(this.multiple){_a=[];_b=this.condition;for(i=0,_c=_b.length;i<_c;i++){cond=_b[i];_a.push(new OpNode("is",(i===0?assigner:this.switcher),cond))}return _a}else{return new OpNode("is",assigner,this.condition)}}).call(this);if(this.is_chain()){this.else_body.rewrite_condition(this.switcher)}return this};IfNode.prototype.add_else=function add_else(exprs,statement){if(this.is_chain()){this.else_body.add_else(exprs,statement)}else{if(!(statement)){exprs=exprs.unwrap()}this.children.push((this.else_body=exprs))}return this};IfNode.prototype.is_chain=function is_chain(){return this.chain=this.chain||this.else_body&&this.else_body instanceof IfNode};IfNode.prototype.is_statement=function is_statement(){return this.statement=this.statement||!!(this.comment||this.tags.statement||this.body.is_statement()||(this.else_body&&this.else_body.is_statement()))};IfNode.prototype.compile_condition=function compile_condition(o){var _a,_b,_c,_d,cond;return(function(){_a=[];_b=flatten([this.condition]);for(_c=0,_d=_b.length;_c<_d;_c++){cond=_b[_c];_a.push(cond.compile(o))}return _a}).call(this).join(" || ")};IfNode.prototype.compile_node=function compile_node(o){return this.is_statement()?this.compile_statement(o):this.compile_ternary(o)};IfNode.prototype.compile_statement=function compile_statement(o){var body,child,com_dent,cond_o,else_part,if_dent,if_part,prefix;if(this.switcher){this.rewrite_switch(o)}child=del(o,"chain_child");cond_o=merge(o);del(cond_o,"returns");o.indent=this.idt(1);o.top=true;if_dent=child?"":this.idt();com_dent=child?this.idt():"";prefix=this.comment?(this.comment.compile(cond_o))+"\n"+com_dent:"";body=Expressions.wrap([this.body]).compile(o);if_part=prefix+(if_dent)+"if ("+(this.compile_condition(cond_o))+") {\n"+body+"\n"+this.tab+"}";if(!(this.else_body)){return if_part}else_part=this.is_chain()?" else "+this.else_body.compile(merge(o,{indent:this.idt(),chain_child:true})):" else {\n"+(Expressions.wrap([this.else_body]).compile(o))+"\n"+this.tab+"}";return if_part+else_part};IfNode.prototype.compile_ternary=function compile_ternary(o){var else_part,if_part;if_part=this.condition.compile(o)+" ? "+this.body.compile(o);else_part=this.else_body?this.else_body.compile(o):"null";return if_part+" : "+else_part};return IfNode}).call(this);TAB=" ";TRAILING_WHITESPACE=/\s+$/gm;IDENTIFIER=/^[a-zA-Z$_](\w|\$)*$/;merge=function merge(options,overrides){var _a,_b,fresh,key,val;fresh={};_a=options;for(key in _a){if(__hasProp.call(_a,key)){val=_a[key];((fresh[key]=val))}}if(overrides){_b=overrides;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];((fresh[key]=val))}}}return fresh};compact=function compact(array){var _a,_b,_c,_d,item;_a=[];_b=array;for(_c=0,_d=_b.length;_c<_d;_c++){item=_b[_c];if(item){_a.push(item)}}return _a};flatten=function flatten(array){var _a,_b,_c,item,memo;memo=[];_a=array;for(_b=0,_c=_a.length;_b<_c;_b++){item=_a[_b];item instanceof Array?(memo=memo.concat(item)):memo.push(item)}return memo};del=function del(obj,key){var val;val=obj[key];delete obj[key];return val};literal=function literal(name){return new LiteralNode(name)}})();(function(){var lexer,parser,path,process_scripts;if((typeof process!=="undefined"&&process!==null)){process.mixin(require("nodes"));path=require("path");lexer=new (require("lexer").Lexer)();parser=require("parser").parser}else{lexer=new Lexer();parser=exports.parser;this.exports=(this.CoffeeScript={})}exports.VERSION="0.5.5";exports.compile=function compile(code,options){try{return(parser.parse(lexer.tokenize(code))).compile(options)}catch(err){if(options.source){err.message="In "+(options.source)+", "+(err.message)}throw err}};exports.tokens=function tokens(code){return lexer.tokenize(code)};exports.nodes=function nodes(code){return parser.parse(lexer.tokenize(code))};exports.run=function run(code,options){var __dirname,__filename;module.filename=(__filename=options.source);__dirname=path.dirname(__filename);return eval(exports.compile(code,options))};parser.lexer={lex:function lex(){var token;token=this.tokens[this.pos]||[""];this.pos+=1;this.yylineno=token[2];this.yytext=token[1];return token[0]},setInput:function setInput(tokens){this.tokens=tokens;return this.pos=0},upcomingInput:function upcomingInput(){return""},showPosition:function showPosition(){return this.pos}};if((typeof document!=="undefined"&&document!==null)&&document.getElementsByTagName){process_scripts=function process_scripts(){var _a,_b,_c,_d,tag;_a=[];_b=document.getElementsByTagName("script");for(_c=0,_d=_b.length;_c<_d;_c++){tag=_b[_c];if(tag.type==="text/coffeescript"){_a.push(eval(exports.compile(tag.innerHTML)))}}return _a};if(window.addEventListener){window.addEventListener("load",process_scripts,false)}else{if(window.attachEvent){window.attachEvent("onload",process_scripts)}}}})(); \ No newline at end of file +(function(){var balanced_string,compact,count,del,extend,flatten,helpers,include,merge,starts;var __hasProp=Object.prototype.hasOwnProperty;if(!((typeof process!=="undefined"&&process!==null))){this.exports=this}helpers=(exports.helpers={});helpers.include=(include=function include(list,value){return list.indexOf(value)>=0});helpers.starts=(starts=function starts(string,literal,start){return string.substring(start,(start||0)+literal.length)===literal});helpers.compact=(compact=function compact(array){var _a,_b,_c,_d,item;_a=[];_b=array;for(_c=0,_d=_b.length;_c<_d;_c++){item=_b[_c];item?_a.push(item):null}return _a});helpers.count=(count=function count(string,letter){var num,pos;num=0;pos=string.indexOf(letter);while(pos!==-1){num+=1;pos=string.indexOf(letter,pos+1)}return num});helpers.merge=(merge=function merge(options,overrides){var _a,_b,fresh,key,val;fresh={};_a=options;for(key in _a){if(__hasProp.call(_a,key)){val=_a[key];(fresh[key]=val)}}if(overrides){_b=overrides;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];(fresh[key]=val)}}}return fresh});helpers.extend=(extend=function extend(object,properties){var _a,_b,key,val;_a=[];_b=properties;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];_a.push((object[key]=val))}}return _a});helpers.flatten=(flatten=function flatten(array){var _a,_b,_c,item,memo;memo=[];_a=array;for(_b=0,_c=_a.length;_b<_c;_b++){item=_a[_b];item instanceof Array?(memo=memo.concat(item)):memo.push(item)}return memo});helpers.del=(del=function del(obj,key){var val;val=obj[key];delete obj[key];return val});helpers.balanced_string=(balanced_string=function balanced_string(str,delimited,options){var _a,_b,_c,_d,close,i,levels,open,pair,slash;options=options||{};slash=delimited[0][0]==="/";levels=[];i=0;while(i0;if(tag==="CALL_END"&&calls<0&&open){stack[stack.length-1]-=1;this.tokens.splice(i,0,["CALL_END",")",token[2]]);return 2}if(!(typeof post!=="undefined"&&post!==null)||include(IMPLICIT_END,tag)){if(tag==="INDENT"&&prev&&include(IMPLICIT_BLOCK,prev[0])){return 1}if(open||tag==="INDENT"){idx=tag==="OUTDENT"?i+1:i;stack_pointer=tag==="INDENT"?2:1;_c=0;_d=stack[stack.length-stack_pointer];for(_b=0,tmp=_c;(_c<=_d?tmp<_d:tmp>_d);(_c<=_d?tmp+=1:tmp-=1),_b++){this.tokens.splice(idx,0,["CALL_END",")",token[2]])}size=stack[stack.length-stack_pointer]+1;stack[stack.length-stack_pointer]=0;return size}}if(!(prev&&include(IMPLICIT_FUNC,prev[0])&&include(IMPLICIT_CALL,tag))){return 1}calls=0;this.tokens.splice(i,0,["CALL_START","(",token[2]]);stack[stack.length-1]+=1;return 2};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.add_implicit_indentation=function add_implicit_indentation(){return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var idx,insertion,parens,pre,starter,tok;if(!(include(SINGLE_LINERS,token[0])&&post[0]!=="INDENT"&&!(token[0]==="ELSE"&&post[0]==="IF"))){return 1}starter=token[0];this.tokens.splice(i+1,0,["INDENT",2,token[2]]);idx=i+1;parens=0;while(true){idx+=1;tok=this.tokens[idx];pre=this.tokens[idx-1];if((!tok||(include(SINGLE_CLOSERS,tok[0])&&tok[1]!==";")||(tok[0]===")"&&parens===0))&&!(starter==="ELSE"&&tok[0]==="ELSE")){insertion=pre[0]===","?idx-1:idx;this.tokens.splice(insertion,0,["OUTDENT",2,token[2]]);break}if(tok[0]==="("){parens+=1}if(tok[0]===")"){parens-=1}}if(!(token[0]==="THEN")){return 1}this.tokens.splice(i,1);return 0};return(function(){return __func.apply(__this,arguments)})})(this))};Rewriter.prototype.ensure_balance=function ensure_balance(pairs){var _a,_b,key,levels,line,open,open_line,unclosed,value;levels={};open_line={};this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var _a,_b,_c,_d,close,open,pair;_a=pairs;for(_b=0,_c=_a.length;_b<_c;_b++){pair=_a[_b];_d=pair;open=_d[0];close=_d[1];levels[open]=levels[open]||0;if(token[0]===open){if(levels[open]===0){open_line[open]=token[2]}levels[open]+=1}if(token[0]===close){levels[open]-=1}if(levels[open]<0){throw new Error("too many "+(token[1])+" on line "+(token[2]+1))}}return 1};return(function(){return __func.apply(__this,arguments)})})(this));unclosed=(function(){_a=[];_b=levels;for(key in _b){if(__hasProp.call(_b,key)){value=_b[key];value>0?_a.push(key):null}}return _a}).call(this);if(unclosed.length){open=unclosed[0];line=open_line[open]+1;throw new Error("unclosed "+open+" on line "+line)}};Rewriter.prototype.rewrite_closing_parens=function rewrite_closing_parens(){var _a,debt,key,stack,val;stack=[];debt={};_a=INVERSES;for(key in _a){if(__hasProp.call(_a,key)){val=_a[key];(debt[key]=0)}}return this.scan_tokens((function(__this){var __func=function(prev,token,post,i){var inv,match,mtag,tag;tag=token[0];inv=INVERSES[token[0]];if(include(EXPRESSION_START,tag)){stack.push(token);return 1}else{if(include(EXPRESSION_END,tag)){if(debt[inv]>0){debt[inv]-=1;this.tokens.splice(i,1);return 0}else{match=stack.pop();mtag=match[0];if(tag===INVERSES[mtag]){return 1}debt[mtag]+=1;val=mtag==="INDENT"?match[1]:INVERSES[mtag];this.tokens.splice(i,0,[INVERSES[mtag],val]);return 1}}else{return 1}}};return(function(){return __func.apply(__this,arguments)})})(this))};return Rewriter}).call(this);BALANCED_PAIRS=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["PARAM_START","PARAM_END"],["CALL_START","CALL_END"],["INDEX_START","INDEX_END"],["SOAKED_INDEX_START","SOAKED_INDEX_END"]];INVERSES={};_a=BALANCED_PAIRS;for(_b=0,_c=_a.length;_b<_c;_b++){pair=_a[_b];INVERSES[pair[0]]=pair[1];INVERSES[pair[1]]=pair[0]}EXPRESSION_START=(function(){_d=[];_e=BALANCED_PAIRS;for(_f=0,_g=_e.length;_f<_g;_f++){pair=_e[_f];_d.push(pair[0])}return _d}).call(this);EXPRESSION_END=(function(){_h=[];_i=BALANCED_PAIRS;for(_j=0,_k=_i.length;_j<_k;_j++){pair=_i[_j];_h.push(pair[1])}return _h}).call(this);EXPRESSION_CLOSE=["CATCH","WHEN","ELSE","FINALLY"].concat(EXPRESSION_END);IMPLICIT_FUNC=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","<-"];IMPLICIT_CALL=["IDENTIFIER","NUMBER","STRING","JS","REGEX","NEW","PARAM_START","TRY","DELETE","TYPEOF","SWITCH","EXTENSION","TRUE","FALSE","YES","NO","ON","OFF","!","!!","NOT","@","->","=>","[","(","{"];IMPLICIT_BLOCK=["->","=>","{","[",","];IMPLICIT_END=["IF","UNLESS","FOR","WHILE","TERMINATOR","INDENT","OUTDENT"];SINGLE_LINERS=["ELSE","->","=>","TRY","FINALLY","THEN"];SINGLE_CLOSERS=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"]})();(function(){var ACCESSORS,ASSIGNMENT,CALLABLE,CODE,COFFEE_ALIASES,COFFEE_KEYWORDS,COMMENT,COMMENT_CLEANER,CONVERSIONS,HALF_ASSIGNMENTS,HEREDOC,HEREDOC_INDENT,IDENTIFIER,INTERPOLATION,JS_CLEANER,JS_FORBIDDEN,JS_KEYWORDS,KEYWORDS,LAST_DENT,LAST_DENTS,LINE_BREAK,Lexer,MULTILINER,MULTI_DENT,NOT_REGEX,NO_NEWLINE,NUMBER,OPERATOR,REGEX_ESCAPE,REGEX_FLAGS,REGEX_INTERPOLATION,REGEX_START,RESERVED,Rewriter,STRING_NEWLINES,WHITESPACE,balanced_string,compact,count,helpers,include,starts;if((typeof process!=="undefined"&&process!==null)){Rewriter=require("./rewriter").Rewriter;helpers=require("./helpers").helpers}else{this.exports=this;Rewriter=this.Rewriter;helpers=this.helpers}include=helpers.include;count=helpers.count;starts=helpers.starts;compact=helpers.compact;balanced_string=helpers.balanced_string;exports.Lexer=(function(){Lexer=function Lexer(){};Lexer.prototype.tokenize=function tokenize(code,options){var o;code=code.replace(/(\r|\s+$)/g,"");o=options||{};this.code=code;this.i=0;this.line=o.line||0;this.indent=0;this.indents=[];this.tokens=[];while(this.ithis.indent){if(no_newlines){return this.suppress_newlines()}diff=size-this.indent;this.token("INDENT",diff);this.indents.push(diff)}else{this.outdent_token(this.indent-size,no_newlines)}}this.indent=size;return true};Lexer.prototype.outdent_token=function outdent_token(move_out,no_newlines){var last_indent;while(move_out>0&&this.indents.length){last_indent=this.indents.pop();this.token("OUTDENT",last_indent);move_out-=last_indent}if(!(this.tag()==="TERMINATOR"||no_newlines)){this.token("TERMINATOR","\n")}return true};Lexer.prototype.whitespace_token=function whitespace_token(){var prev,space;if(!(space=this.match(WHITESPACE,1))){return false}prev=this.prev();if(prev){prev.spaced=true}this.i+=space.length;return true};Lexer.prototype.newline_token=function newline_token(newlines){if(!(this.tag()==="TERMINATOR")){this.token("TERMINATOR","\n")}return true};Lexer.prototype.suppress_newlines=function suppress_newlines(){if(this.value()==="\\"){this.tokens.pop()}return true};Lexer.prototype.literal_token=function literal_token(){var match,prev_spaced,space,tag,value;match=this.chunk.match(OPERATOR);value=match&&match[1];space=match&&match[2];if(value&&value.match(CODE)){this.tag_parameters()}value=value||this.chunk.substr(0,1);prev_spaced=this.prev()&&this.prev().spaced;tag=value;if(value.match(ASSIGNMENT)){tag="ASSIGN";if(include(JS_FORBIDDEN,this.value)){this.assignment_error()}}else{if(value===";"){tag="TERMINATOR"}else{if(value==="["&&this.tag()==="?"&&!prev_spaced){tag="SOAKED_INDEX_START";this.soaked_index=true;this.tokens.pop()}else{if(value==="]"&&this.soaked_index){tag="SOAKED_INDEX_END";this.soaked_index=false}else{if(include(CALLABLE,this.tag())&&!prev_spaced){if(value==="("){tag="CALL_START"}if(value==="["){tag="INDEX_START"}}}}}}this.i+=value.length;if(space&&prev_spaced&&this.prev()[0]==="ASSIGN"&&include(HALF_ASSIGNMENTS,tag)){return this.tag_half_assignment(tag)}this.token(tag,value);return true};Lexer.prototype.name_access_type=function name_access_type(){if(this.value()==="::"){this.tag(1,"PROTOTYPE_ACCESS")}if(this.value()==="."&&!(this.value(2)===".")){if(this.tag(2)==="?"){this.tag(1,"SOAK_ACCESS");return this.tokens.splice(-2,1)}else{return this.tag(1,"PROPERTY_ACCESS")}}};Lexer.prototype.sanitize_heredoc=function sanitize_heredoc(doc,quote){var indent;indent=(doc.match(HEREDOC_INDENT)||[""]).sort()[0];return doc.replace(new RegExp("^"+indent,"gm"),"").replace(MULTILINER,"\\n").replace(new RegExp(quote,"g"),'\\"')};Lexer.prototype.tag_half_assignment=function tag_half_assignment(tag){var last;last=this.tokens.pop();this.tokens.push([""+tag+"=",""+tag+"=",last[2]]);return true};Lexer.prototype.tag_parameters=function tag_parameters(){var _a,i,tok;if(this.tag()!==")"){return null}i=0;while(true){i+=1;tok=this.prev(i);if(!tok){return null}if((_a=tok[0])==="IDENTIFIER"){tok[0]="PARAM"}else{if(_a===")"){tok[0]="PARAM_END"}else{if(_a==="("){return(tok[0]="PARAM_START")}}}}return true};Lexer.prototype.close_indentation=function close_indentation(){return this.outdent_token(this.indent)};Lexer.prototype.identifier_error=function identifier_error(word){throw new Error('SyntaxError: Reserved word "'+word+'" on line '+(this.line+1))};Lexer.prototype.assignment_error=function assignment_error(){throw new Error('SyntaxError: Reserved word "'+(this.value())+'" on line '+(this.line+1)+" can't be assigned")};Lexer.prototype.interpolate_string=function interpolate_string(str,escape_quotes){var _a,_b,_c,_d,_e,escaped,expr,group,i,inner,interp,lexer,match,nested,pi,quote,tag,token,tokens,value;if(str.length<3||!starts(str,'"')){return this.token("STRING",str)}else{lexer=new Lexer();tokens=[];quote=str.substring(0,1);_a=[1,1];i=_a[0];pi=_a[1];while(i:!?]+)([ \t]*)/;WHITESPACE=/^([ \t]+)/;COMMENT=/^(((\n?[ \t]*)?#[^\n]*)+)/;CODE=/^((-|=)>)/;MULTI_DENT=/^((\n([ \t]*))+)(\.)?/;LAST_DENTS=/\n([ \t]*)/g;LAST_DENT=/\n([ \t]*)/;ASSIGNMENT=/^(:|=)$/;REGEX_START=/^\/[^\/ ]/;REGEX_INTERPOLATION=/([^\\]\$[a-zA-Z_@]|[^\\]\$\{.*[^\\]\})/;REGEX_FLAGS=/^[imgy]{0,4}/;REGEX_ESCAPE=/\\[^\$]/g;JS_CLEANER=/(^`|`$)/g;MULTILINER=/\n/g;STRING_NEWLINES=/\n[ \t]*/g;COMMENT_CLEANER=/(^[ \t]*#|\n[ \t]*$)/mg;NO_NEWLINE=/^([+\*&|\/\-%=<>:!.\\][<>=&|]*|and|or|is|isnt|not|delete|typeof|instanceof)$/;HEREDOC_INDENT=/^[ \t]+/mg;NOT_REGEX=["NUMBER","REGEX","++","--","FALSE","NULL","TRUE"];CALLABLE=["IDENTIFIER","SUPER",")","]","}","STRING","@"];ACCESSORS=["PROPERTY_ACCESS","PROTOTYPE_ACCESS","SOAK_ACCESS","@"];LINE_BREAK=["INDENT","OUTDENT","TERMINATOR"];HALF_ASSIGNMENTS=["-","+","/","*","%","||","&&","?"];CONVERSIONS={and:"&&",or:"||",is:"==",isnt:"!=",not:"!"}})();var parser=(function(){var parser={trace:function trace(){},yy:{},symbols_:{Root:2,TERMINATOR:3,Expressions:4,Block:5,Expression:6,Value:7,Call:8,Curry:9,Code:10,Operation:11,Assign:12,If:13,Try:14,Throw:15,Return:16,While:17,For:18,Switch:19,Extends:20,Class:21,Splat:22,Existence:23,Comment:24,Extension:25,INDENT:26,OUTDENT:27,Identifier:28,IDENTIFIER:29,AlphaNumeric:30,NUMBER:31,STRING:32,Literal:33,JS:34,REGEX:35,BREAK:36,CONTINUE:37,TRUE:38,FALSE:39,YES:40,NO:41,ON:42,OFF:43,ASSIGN:44,AssignObj:45,RETURN:46,COMMENT:47,"?":48,PARAM_START:49,ParamList:50,PARAM_END:51,FuncGlyph:52,"->":53,"=>":54,Param:55,",":56,PARAM:57,".":58,Array:59,Object:60,Parenthetical:61,Range:62,This:63,Accessor:64,Invocation:65,PROPERTY_ACCESS:66,PROTOTYPE_ACCESS:67,"::":68,SOAK_ACCESS:69,Index:70,Slice:71,INDEX_START:72,INDEX_END:73,SOAKED_INDEX_START:74,SOAKED_INDEX_END:75,"{":76,AssignList:77,"}":78,IndentedAssignList:79,CLASS:80,EXTENDS:81,NEW:82,Super:83,"<-":84,Arguments:85,CALL_START:86,ArgList:87,CALL_END:88,SUPER:89,"@":90,"[":91,"]":92,SimpleArgs:93,TRY:94,Catch:95,FINALLY:96,CATCH:97,THROW:98,"(":99,")":100,EXTENSION:101,WhileSource:102,WHILE:103,WHEN:104,FOR:105,ForVariables:106,ForSource:107,IN:108,OF:109,BY:110,SWITCH:111,Whens:112,ELSE:113,When:114,LEADING_WHEN:115,IfStart:116,IF:117,ElsIf:118,IfBlock:119,UNLESS:120,"!":121,"!!":122,"-":123,"+":124,"~":125,"--":126,"++":127,DELETE:128,TYPEOF:129,"*":130,"/":131,"%":132,"<<":133,">>":134,">>>":135,"&":136,"|":137,"^":138,"<=":139,"<":140,">":141,">=":142,"==":143,"!=":144,"&&":145,"||":146,"-=":147,"+=":148,"/=":149,"*=":150,"%=":151,"||=":152,"&&=":153,"?=":154,INSTANCEOF:155,"$accept":0,"$end":1},terminals_:{"3":"TERMINATOR","26":"INDENT","27":"OUTDENT","29":"IDENTIFIER","31":"NUMBER","32":"STRING","34":"JS","35":"REGEX","36":"BREAK","37":"CONTINUE","38":"TRUE","39":"FALSE","40":"YES","41":"NO","42":"ON","43":"OFF","44":"ASSIGN","46":"RETURN","47":"COMMENT","48":"?","49":"PARAM_START","51":"PARAM_END","53":"->","54":"=>","56":",","57":"PARAM","58":".","66":"PROPERTY_ACCESS","67":"PROTOTYPE_ACCESS","68":"::","69":"SOAK_ACCESS","72":"INDEX_START","73":"INDEX_END","74":"SOAKED_INDEX_START","75":"SOAKED_INDEX_END","76":"{","78":"}","80":"CLASS","81":"EXTENDS","82":"NEW","84":"<-","86":"CALL_START","88":"CALL_END","89":"SUPER","90":"@","91":"[","92":"]","94":"TRY","96":"FINALLY","97":"CATCH","98":"THROW","99":"(","100":")","101":"EXTENSION","103":"WHILE","104":"WHEN","105":"FOR","108":"IN","109":"OF","110":"BY","111":"SWITCH","113":"ELSE","115":"LEADING_WHEN","117":"IF","120":"UNLESS","121":"!","122":"!!","123":"-","124":"+","125":"~","126":"--","127":"++","128":"DELETE","129":"TYPEOF","130":"*","131":"/","132":"%","133":"<<","134":">>","135":">>>","136":"&","137":"|","138":"^","139":"<=","140":"<","141":">","142":">=","143":"==","144":"!=","145":"&&","146":"||","147":"-=","148":"+=","149":"/=","150":"*=","151":"%=","152":"||=","153":"&&=","154":"?=","155":"INSTANCEOF"},productions_:[0,[2,0],[2,1],[2,1],[2,2],[4,1],[4,3],[4,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[5,3],[5,2],[5,2],[28,1],[30,1],[30,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[12,3],[45,3],[45,3],[45,1],[16,2],[16,1],[24,1],[23,2],[10,5],[10,2],[52,1],[52,1],[50,0],[50,1],[50,3],[55,1],[55,4],[22,4],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,2],[7,2],[64,2],[64,2],[64,1],[64,2],[64,1],[64,1],[70,3],[70,3],[60,3],[60,3],[21,2],[21,4],[21,3],[21,5],[77,0],[77,1],[77,3],[77,3],[77,4],[79,3],[8,1],[8,2],[8,1],[9,3],[20,3],[65,2],[65,2],[85,3],[83,4],[63,1],[63,2],[62,6],[62,7],[71,6],[71,7],[59,3],[87,0],[87,1],[87,2],[87,3],[87,3],[87,4],[87,4],[87,2],[93,1],[93,3],[14,3],[14,4],[14,5],[95,3],[15,2],[61,3],[25,1],[102,2],[102,4],[17,2],[17,2],[18,4],[18,4],[106,1],[106,3],[107,2],[107,2],[107,3],[107,3],[19,5],[19,7],[112,1],[112,2],[114,3],[114,4],[114,3],[116,3],[116,2],[119,1],[119,3],[118,4],[13,1],[13,3],[13,3],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3]],performAction:function anonymous(yytext,yyleng,yylineno,yy){var $$=arguments[5],$0=arguments[5].length;switch(arguments[4]){case 1:return this.$=new Expressions();break;case 2:return this.$=new Expressions();break;case 3:return this.$=$$[$0-1+1-1];break;case 4:return this.$=$$[$0-2+1-1];break;case 5:this.$=Expressions.wrap([$$[$0-1+1-1]]);break;case 6:this.$=$$[$0-3+1-1].push($$[$0-3+3-1]);break;case 7:this.$=$$[$0-2+1-1];break;case 8:this.$=$$[$0-1+1-1];break;case 9:this.$=$$[$0-1+1-1];break;case 10:this.$=$$[$0-1+1-1];break;case 11:this.$=$$[$0-1+1-1];break;case 12:this.$=$$[$0-1+1-1];break;case 13:this.$=$$[$0-1+1-1];break;case 14:this.$=$$[$0-1+1-1];break;case 15:this.$=$$[$0-1+1-1];break;case 16:this.$=$$[$0-1+1-1];break;case 17:this.$=$$[$0-1+1-1];break;case 18:this.$=$$[$0-1+1-1];break;case 19:this.$=$$[$0-1+1-1];break;case 20:this.$=$$[$0-1+1-1];break;case 21:this.$=$$[$0-1+1-1];break;case 22:this.$=$$[$0-1+1-1];break;case 23:this.$=$$[$0-1+1-1];break;case 24:this.$=$$[$0-1+1-1];break;case 25:this.$=$$[$0-1+1-1];break;case 26:this.$=$$[$0-1+1-1];break;case 27:this.$=$$[$0-3+2-1];break;case 28:this.$=new Expressions();break;case 29:this.$=Expressions.wrap([$$[$0-2+2-1]]);break;case 30:this.$=new LiteralNode(yytext);break;case 31:this.$=new LiteralNode(yytext);break;case 32:this.$=new LiteralNode(yytext);break;case 33:this.$=$$[$0-1+1-1];break;case 34:this.$=new LiteralNode(yytext);break;case 35:this.$=new LiteralNode(yytext);break;case 36:this.$=new LiteralNode(yytext);break;case 37:this.$=new LiteralNode(yytext);break;case 38:this.$=new LiteralNode(true);break;case 39:this.$=new LiteralNode(false);break;case 40:this.$=new LiteralNode(true);break;case 41:this.$=new LiteralNode(false);break;case 42:this.$=new LiteralNode(true);break;case 43:this.$=new LiteralNode(false);break;case 44:this.$=new AssignNode($$[$0-3+1-1],$$[$0-3+3-1]);break;case 45:this.$=new AssignNode(new ValueNode($$[$0-3+1-1]),$$[$0-3+3-1],"object");break;case 46:this.$=new AssignNode(new ValueNode($$[$0-3+1-1]),$$[$0-3+3-1],"object");break;case 47:this.$=$$[$0-1+1-1];break;case 48:this.$=new ReturnNode($$[$0-2+2-1]);break;case 49:this.$=new ReturnNode(new ValueNode(new LiteralNode("null")));break;case 50:this.$=new CommentNode(yytext);break;case 51:this.$=new ExistenceNode($$[$0-2+1-1]);break;case 52:this.$=new CodeNode($$[$0-5+2-1],$$[$0-5+5-1],$$[$0-5+4-1]);break;case 53:this.$=new CodeNode([],$$[$0-2+2-1],$$[$0-2+1-1]);break;case 54:this.$="func";break;case 55:this.$="boundfunc";break;case 56:this.$=[];break;case 57:this.$=[$$[$0-1+1-1]];break;case 58:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 59:this.$=new LiteralNode(yytext);break;case 60:this.$=new SplatNode($$[$0-4+1-1]);break;case 61:this.$=new SplatNode($$[$0-4+1-1]);break;case 62:this.$=new ValueNode($$[$0-1+1-1]);break;case 63:this.$=new ValueNode($$[$0-1+1-1]);break;case 64:this.$=new ValueNode($$[$0-1+1-1]);break;case 65:this.$=new ValueNode($$[$0-1+1-1]);break;case 66:this.$=new ValueNode($$[$0-1+1-1]);break;case 67:this.$=new ValueNode($$[$0-1+1-1]);break;case 68:this.$=$$[$0-1+1-1];break;case 69:this.$=$$[$0-2+1-1].push($$[$0-2+2-1]);break;case 70:this.$=new ValueNode($$[$0-2+1-1],[$$[$0-2+2-1]]);break;case 71:this.$=new AccessorNode($$[$0-2+2-1]);break;case 72:this.$=new AccessorNode($$[$0-2+2-1],"prototype");break;case 73:this.$=new AccessorNode(new LiteralNode("prototype"));break;case 74:this.$=new AccessorNode($$[$0-2+2-1],"soak");break;case 75:this.$=$$[$0-1+1-1];break;case 76:this.$=new SliceNode($$[$0-1+1-1]);break;case 77:this.$=new IndexNode($$[$0-3+2-1]);break;case 78:this.$=new IndexNode($$[$0-3+2-1],"soak");break;case 79:this.$=new ObjectNode($$[$0-3+2-1]);break;case 80:this.$=new ObjectNode($$[$0-3+2-1]);break;case 81:this.$=new ClassNode($$[$0-2+2-1]);break;case 82:this.$=new ClassNode($$[$0-4+2-1],$$[$0-4+4-1]);break;case 83:this.$=new ClassNode($$[$0-3+2-1],null,$$[$0-3+3-1]);break;case 84:this.$=new ClassNode($$[$0-5+2-1],$$[$0-5+4-1],$$[$0-5+5-1]);break;case 85:this.$=[];break;case 86:this.$=[$$[$0-1+1-1]];break;case 87:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 88:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 89:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 90:this.$=$$[$0-3+2-1];break;case 91:this.$=$$[$0-1+1-1];break;case 92:this.$=$$[$0-2+2-1].new_instance();break;case 93:this.$=$$[$0-1+1-1];break;case 94:this.$=new CurryNode($$[$0-3+1-1],$$[$0-3+3-1]);break;case 95:this.$=new ExtendsNode($$[$0-3+1-1],$$[$0-3+3-1]);break;case 96:this.$=new CallNode($$[$0-2+1-1],$$[$0-2+2-1]);break;case 97:this.$=new CallNode($$[$0-2+1-1],$$[$0-2+2-1]);break;case 98:this.$=$$[$0-3+2-1];break;case 99:this.$=new CallNode("super",$$[$0-4+3-1]);break;case 100:this.$=new ValueNode(new LiteralNode("this"));break;case 101:this.$=new ValueNode(new LiteralNode("this"),[new AccessorNode($$[$0-2+2-1])]);break;case 102:this.$=new RangeNode($$[$0-6+2-1],$$[$0-6+5-1]);break;case 103:this.$=new RangeNode($$[$0-7+2-1],$$[$0-7+6-1],true);break;case 104:this.$=new RangeNode($$[$0-6+2-1],$$[$0-6+5-1]);break;case 105:this.$=new RangeNode($$[$0-7+2-1],$$[$0-7+6-1],true);break;case 106:this.$=new ArrayNode($$[$0-3+2-1]);break;case 107:this.$=[];break;case 108:this.$=[$$[$0-1+1-1]];break;case 109:this.$=[$$[$0-2+2-1]];break;case 110:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 111:this.$=$$[$0-3+1-1].concat([$$[$0-3+3-1]]);break;case 112:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 113:this.$=$$[$0-4+1-1].concat([$$[$0-4+4-1]]);break;case 114:this.$=$$[$0-2+1-1];break;case 115:this.$=$$[$0-1+1-1];break;case 116:this.$=(function(){if($$[$0-3+1-1] instanceof Array){return $$[$0-3+1-1].concat([$$[$0-3+3-1]])}else{return[$$[$0-3+1-1]].concat([$$[$0-3+3-1]])}}());break;case 117:this.$=new TryNode($$[$0-3+2-1],$$[$0-3+3-1][0],$$[$0-3+3-1][1]);break;case 118:this.$=new TryNode($$[$0-4+2-1],null,null,$$[$0-4+4-1]);break;case 119:this.$=new TryNode($$[$0-5+2-1],$$[$0-5+3-1][0],$$[$0-5+3-1][1],$$[$0-5+5-1]);break;case 120:this.$=[$$[$0-3+2-1],$$[$0-3+3-1]];break;case 121:this.$=new ThrowNode($$[$0-2+2-1]);break;case 122:this.$=new ParentheticalNode($$[$0-3+2-1]);break;case 123:this.$=yytext;break;case 124:this.$=new WhileNode($$[$0-2+2-1]);break;case 125:this.$=new WhileNode($$[$0-4+2-1],{filter:$$[$0-4+4-1]});break;case 126:this.$=$$[$0-2+1-1].add_body($$[$0-2+2-1]);break;case 127:this.$=$$[$0-2+2-1].add_body(Expressions.wrap([$$[$0-2+1-1]]));break;case 128:this.$=new ForNode($$[$0-4+1-1],$$[$0-4+4-1],$$[$0-4+3-1][0],$$[$0-4+3-1][1]);break;case 129:this.$=new ForNode($$[$0-4+4-1],$$[$0-4+3-1],$$[$0-4+2-1][0],$$[$0-4+2-1][1]);break;case 130:this.$=[$$[$0-1+1-1]];break;case 131:this.$=[$$[$0-3+1-1],$$[$0-3+3-1]];break;case 132:this.$={source:$$[$0-2+2-1]};break;case 133:this.$={source:$$[$0-2+2-1],object:true};break;case 134:this.$=(function(){$$[$0-3+1-1].filter=$$[$0-3+3-1];return $$[$0-3+1-1]}());break;case 135:this.$=(function(){$$[$0-3+1-1].step=$$[$0-3+3-1];return $$[$0-3+1-1]}());break;case 136:this.$=$$[$0-5+4-1].rewrite_condition($$[$0-5+2-1]);break;case 137:this.$=$$[$0-7+4-1].rewrite_condition($$[$0-7+2-1]).add_else($$[$0-7+6-1],true);break;case 138:this.$=$$[$0-1+1-1];break;case 139:this.$=$$[$0-2+1-1].push($$[$0-2+2-1]);break;case 140:this.$=new IfNode($$[$0-3+2-1],$$[$0-3+3-1],null,{statement:true});break;case 141:this.$=new IfNode($$[$0-4+2-1],$$[$0-4+3-1],null,{statement:true});break;case 142:this.$=(function(){$$[$0-3+3-1].comment=$$[$0-3+1-1];return $$[$0-3+3-1]}());break;case 143:this.$=new IfNode($$[$0-3+2-1],$$[$0-3+3-1]);break;case 144:this.$=$$[$0-2+1-1].add_else($$[$0-2+2-1]);break;case 145:this.$=$$[$0-1+1-1];break;case 146:this.$=$$[$0-3+1-1].add_else($$[$0-3+3-1]);break;case 147:this.$=(new IfNode($$[$0-4+3-1],$$[$0-4+4-1])).force_statement();break;case 148:this.$=$$[$0-1+1-1];break;case 149:this.$=new IfNode($$[$0-3+3-1],Expressions.wrap([$$[$0-3+1-1]]),null,{statement:true});break;case 150:this.$=new IfNode($$[$0-3+3-1],Expressions.wrap([$$[$0-3+1-1]]),null,{statement:true,invert:true});break;case 151:this.$=new OpNode("!",$$[$0-2+2-1]);break;case 152:this.$=new OpNode("!!",$$[$0-2+2-1]);break;case 153:this.$=new OpNode("-",$$[$0-2+2-1]);break;case 154:this.$=new OpNode("+",$$[$0-2+2-1]);break;case 155:this.$=new OpNode("~",$$[$0-2+2-1]);break;case 156:this.$=new OpNode("--",$$[$0-2+2-1]);break;case 157:this.$=new OpNode("++",$$[$0-2+2-1]);break;case 158:this.$=new OpNode("delete",$$[$0-2+2-1]);break;case 159:this.$=new OpNode("typeof",$$[$0-2+2-1]);break;case 160:this.$=new OpNode("--",$$[$0-2+1-1],null,true);break;case 161:this.$=new OpNode("++",$$[$0-2+1-1],null,true);break;case 162:this.$=new OpNode("*",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 163:this.$=new OpNode("/",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 164:this.$=new OpNode("%",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 165:this.$=new OpNode("+",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 166:this.$=new OpNode("-",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 167:this.$=new OpNode("<<",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 168:this.$=new OpNode(">>",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 169:this.$=new OpNode(">>>",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 170:this.$=new OpNode("&",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 171:this.$=new OpNode("|",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 172:this.$=new OpNode("^",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 173:this.$=new OpNode("<=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 174:this.$=new OpNode("<",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 175:this.$=new OpNode(">",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 176:this.$=new OpNode(">=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 177:this.$=new OpNode("==",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 178:this.$=new OpNode("!=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 179:this.$=new OpNode("&&",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 180:this.$=new OpNode("||",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 181:this.$=new OpNode("?",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 182:this.$=new OpNode("-=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 183:this.$=new OpNode("+=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 184:this.$=new OpNode("/=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 185:this.$=new OpNode("*=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 186:this.$=new OpNode("%=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 187:this.$=new OpNode("||=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 188:this.$=new OpNode("&&=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 189:this.$=new OpNode("?=",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 190:this.$=new OpNode("instanceof",$$[$0-3+1-1],$$[$0-3+3-1]);break;case 191:this.$=new OpNode("in",$$[$0-3+1-1],$$[$0-3+3-1]);break}},table:[{"1":[2,1],"2":1,"3":[1,2],"4":3,"5":4,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,6],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[3]},{"1":[2,2],"24":81,"47":[1,55]},{"1":[2,3],"3":[1,82]},{"3":[1,83]},{"1":[2,5],"3":[2,5],"27":[2,5],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"4":121,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[1,122],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,8],"3":[2,8],"26":[2,8],"27":[2,8],"44":[1,125],"48":[2,8],"56":[2,8],"58":[2,8],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,8],"74":[1,136],"75":[2,8],"78":[2,8],"81":[1,126],"84":[1,124],"85":127,"86":[1,134],"88":[2,8],"92":[2,8],"100":[2,8],"103":[2,8],"104":[2,8],"105":[2,8],"108":[2,8],"110":[2,8],"117":[2,8],"120":[2,8],"123":[2,8],"124":[2,8],"126":[2,8],"127":[2,8],"130":[2,8],"131":[2,8],"132":[2,8],"133":[2,8],"134":[2,8],"135":[2,8],"136":[2,8],"137":[2,8],"138":[2,8],"139":[2,8],"140":[2,8],"141":[2,8],"142":[2,8],"143":[2,8],"144":[2,8],"145":[2,8],"146":[2,8],"147":[2,8],"148":[2,8],"149":[2,8],"150":[2,8],"151":[2,8],"152":[2,8],"153":[2,8],"154":[2,8],"155":[2,8]},{"1":[2,9],"3":[2,9],"26":[2,9],"27":[2,9],"48":[2,9],"56":[2,9],"58":[2,9],"73":[2,9],"75":[2,9],"78":[2,9],"88":[2,9],"92":[2,9],"100":[2,9],"103":[2,9],"104":[2,9],"105":[2,9],"108":[2,9],"110":[2,9],"117":[2,9],"120":[2,9],"123":[2,9],"124":[2,9],"126":[2,9],"127":[2,9],"130":[2,9],"131":[2,9],"132":[2,9],"133":[2,9],"134":[2,9],"135":[2,9],"136":[2,9],"137":[2,9],"138":[2,9],"139":[2,9],"140":[2,9],"141":[2,9],"142":[2,9],"143":[2,9],"144":[2,9],"145":[2,9],"146":[2,9],"147":[2,9],"148":[2,9],"149":[2,9],"150":[2,9],"151":[2,9],"152":[2,9],"153":[2,9],"154":[2,9],"155":[2,9]},{"1":[2,10],"3":[2,10],"26":[2,10],"27":[2,10],"48":[2,10],"56":[2,10],"58":[2,10],"73":[2,10],"75":[2,10],"78":[2,10],"88":[2,10],"92":[2,10],"100":[2,10],"103":[2,10],"104":[2,10],"105":[2,10],"108":[2,10],"110":[2,10],"117":[2,10],"120":[2,10],"123":[2,10],"124":[2,10],"126":[2,10],"127":[2,10],"130":[2,10],"131":[2,10],"132":[2,10],"133":[2,10],"134":[2,10],"135":[2,10],"136":[2,10],"137":[2,10],"138":[2,10],"139":[2,10],"140":[2,10],"141":[2,10],"142":[2,10],"143":[2,10],"144":[2,10],"145":[2,10],"146":[2,10],"147":[2,10],"148":[2,10],"149":[2,10],"150":[2,10],"151":[2,10],"152":[2,10],"153":[2,10],"154":[2,10],"155":[2,10]},{"1":[2,11],"3":[2,11],"26":[2,11],"27":[2,11],"48":[2,11],"56":[2,11],"58":[2,11],"73":[2,11],"75":[2,11],"78":[2,11],"88":[2,11],"92":[2,11],"100":[2,11],"103":[2,11],"104":[2,11],"105":[2,11],"108":[2,11],"110":[2,11],"117":[2,11],"120":[2,11],"123":[2,11],"124":[2,11],"126":[2,11],"127":[2,11],"130":[2,11],"131":[2,11],"132":[2,11],"133":[2,11],"134":[2,11],"135":[2,11],"136":[2,11],"137":[2,11],"138":[2,11],"139":[2,11],"140":[2,11],"141":[2,11],"142":[2,11],"143":[2,11],"144":[2,11],"145":[2,11],"146":[2,11],"147":[2,11],"148":[2,11],"149":[2,11],"150":[2,11],"151":[2,11],"152":[2,11],"153":[2,11],"154":[2,11],"155":[2,11]},{"1":[2,12],"3":[2,12],"26":[2,12],"27":[2,12],"48":[2,12],"56":[2,12],"58":[2,12],"73":[2,12],"75":[2,12],"78":[2,12],"88":[2,12],"92":[2,12],"100":[2,12],"103":[2,12],"104":[2,12],"105":[2,12],"108":[2,12],"110":[2,12],"117":[2,12],"120":[2,12],"123":[2,12],"124":[2,12],"126":[2,12],"127":[2,12],"130":[2,12],"131":[2,12],"132":[2,12],"133":[2,12],"134":[2,12],"135":[2,12],"136":[2,12],"137":[2,12],"138":[2,12],"139":[2,12],"140":[2,12],"141":[2,12],"142":[2,12],"143":[2,12],"144":[2,12],"145":[2,12],"146":[2,12],"147":[2,12],"148":[2,12],"149":[2,12],"150":[2,12],"151":[2,12],"152":[2,12],"153":[2,12],"154":[2,12],"155":[2,12]},{"1":[2,13],"3":[2,13],"26":[2,13],"27":[2,13],"48":[2,13],"56":[2,13],"58":[2,13],"73":[2,13],"75":[2,13],"78":[2,13],"88":[2,13],"92":[2,13],"100":[2,13],"103":[2,13],"104":[2,13],"105":[2,13],"108":[2,13],"110":[2,13],"117":[2,13],"120":[2,13],"123":[2,13],"124":[2,13],"126":[2,13],"127":[2,13],"130":[2,13],"131":[2,13],"132":[2,13],"133":[2,13],"134":[2,13],"135":[2,13],"136":[2,13],"137":[2,13],"138":[2,13],"139":[2,13],"140":[2,13],"141":[2,13],"142":[2,13],"143":[2,13],"144":[2,13],"145":[2,13],"146":[2,13],"147":[2,13],"148":[2,13],"149":[2,13],"150":[2,13],"151":[2,13],"152":[2,13],"153":[2,13],"154":[2,13],"155":[2,13]},{"1":[2,14],"3":[2,14],"26":[2,14],"27":[2,14],"48":[2,14],"56":[2,14],"58":[2,14],"73":[2,14],"75":[2,14],"78":[2,14],"88":[2,14],"92":[2,14],"100":[2,14],"103":[2,14],"104":[2,14],"105":[2,14],"108":[2,14],"110":[2,14],"117":[2,14],"120":[2,14],"123":[2,14],"124":[2,14],"126":[2,14],"127":[2,14],"130":[2,14],"131":[2,14],"132":[2,14],"133":[2,14],"134":[2,14],"135":[2,14],"136":[2,14],"137":[2,14],"138":[2,14],"139":[2,14],"140":[2,14],"141":[2,14],"142":[2,14],"143":[2,14],"144":[2,14],"145":[2,14],"146":[2,14],"147":[2,14],"148":[2,14],"149":[2,14],"150":[2,14],"151":[2,14],"152":[2,14],"153":[2,14],"154":[2,14],"155":[2,14]},{"1":[2,15],"3":[2,15],"26":[2,15],"27":[2,15],"48":[2,15],"56":[2,15],"58":[2,15],"73":[2,15],"75":[2,15],"78":[2,15],"88":[2,15],"92":[2,15],"100":[2,15],"103":[2,15],"104":[2,15],"105":[2,15],"108":[2,15],"110":[2,15],"117":[2,15],"120":[2,15],"123":[2,15],"124":[2,15],"126":[2,15],"127":[2,15],"130":[2,15],"131":[2,15],"132":[2,15],"133":[2,15],"134":[2,15],"135":[2,15],"136":[2,15],"137":[2,15],"138":[2,15],"139":[2,15],"140":[2,15],"141":[2,15],"142":[2,15],"143":[2,15],"144":[2,15],"145":[2,15],"146":[2,15],"147":[2,15],"148":[2,15],"149":[2,15],"150":[2,15],"151":[2,15],"152":[2,15],"153":[2,15],"154":[2,15],"155":[2,15]},{"1":[2,16],"3":[2,16],"26":[2,16],"27":[2,16],"48":[2,16],"56":[2,16],"58":[2,16],"73":[2,16],"75":[2,16],"78":[2,16],"88":[2,16],"92":[2,16],"100":[2,16],"103":[2,16],"104":[2,16],"105":[2,16],"108":[2,16],"110":[2,16],"117":[2,16],"120":[2,16],"123":[2,16],"124":[2,16],"126":[2,16],"127":[2,16],"130":[2,16],"131":[2,16],"132":[2,16],"133":[2,16],"134":[2,16],"135":[2,16],"136":[2,16],"137":[2,16],"138":[2,16],"139":[2,16],"140":[2,16],"141":[2,16],"142":[2,16],"143":[2,16],"144":[2,16],"145":[2,16],"146":[2,16],"147":[2,16],"148":[2,16],"149":[2,16],"150":[2,16],"151":[2,16],"152":[2,16],"153":[2,16],"154":[2,16],"155":[2,16]},{"1":[2,17],"3":[2,17],"26":[2,17],"27":[2,17],"48":[2,17],"56":[2,17],"58":[2,17],"73":[2,17],"75":[2,17],"78":[2,17],"88":[2,17],"92":[2,17],"100":[2,17],"103":[2,17],"104":[2,17],"105":[2,17],"108":[2,17],"110":[2,17],"117":[2,17],"120":[2,17],"123":[2,17],"124":[2,17],"126":[2,17],"127":[2,17],"130":[2,17],"131":[2,17],"132":[2,17],"133":[2,17],"134":[2,17],"135":[2,17],"136":[2,17],"137":[2,17],"138":[2,17],"139":[2,17],"140":[2,17],"141":[2,17],"142":[2,17],"143":[2,17],"144":[2,17],"145":[2,17],"146":[2,17],"147":[2,17],"148":[2,17],"149":[2,17],"150":[2,17],"151":[2,17],"152":[2,17],"153":[2,17],"154":[2,17],"155":[2,17]},{"1":[2,18],"3":[2,18],"26":[2,18],"27":[2,18],"48":[2,18],"56":[2,18],"58":[2,18],"73":[2,18],"75":[2,18],"78":[2,18],"88":[2,18],"92":[2,18],"100":[2,18],"103":[2,18],"104":[2,18],"105":[2,18],"108":[2,18],"110":[2,18],"117":[2,18],"120":[2,18],"123":[2,18],"124":[2,18],"126":[2,18],"127":[2,18],"130":[2,18],"131":[2,18],"132":[2,18],"133":[2,18],"134":[2,18],"135":[2,18],"136":[2,18],"137":[2,18],"138":[2,18],"139":[2,18],"140":[2,18],"141":[2,18],"142":[2,18],"143":[2,18],"144":[2,18],"145":[2,18],"146":[2,18],"147":[2,18],"148":[2,18],"149":[2,18],"150":[2,18],"151":[2,18],"152":[2,18],"153":[2,18],"154":[2,18],"155":[2,18]},{"1":[2,19],"3":[2,19],"26":[2,19],"27":[2,19],"48":[2,19],"56":[2,19],"58":[2,19],"73":[2,19],"75":[2,19],"78":[2,19],"88":[2,19],"92":[2,19],"100":[2,19],"103":[2,19],"104":[2,19],"105":[2,19],"108":[2,19],"110":[2,19],"117":[2,19],"120":[2,19],"123":[2,19],"124":[2,19],"126":[2,19],"127":[2,19],"130":[2,19],"131":[2,19],"132":[2,19],"133":[2,19],"134":[2,19],"135":[2,19],"136":[2,19],"137":[2,19],"138":[2,19],"139":[2,19],"140":[2,19],"141":[2,19],"142":[2,19],"143":[2,19],"144":[2,19],"145":[2,19],"146":[2,19],"147":[2,19],"148":[2,19],"149":[2,19],"150":[2,19],"151":[2,19],"152":[2,19],"153":[2,19],"154":[2,19],"155":[2,19]},{"1":[2,20],"3":[2,20],"26":[2,20],"27":[2,20],"48":[2,20],"56":[2,20],"58":[2,20],"73":[2,20],"75":[2,20],"78":[2,20],"88":[2,20],"92":[2,20],"100":[2,20],"103":[2,20],"104":[2,20],"105":[2,20],"108":[2,20],"110":[2,20],"117":[2,20],"120":[2,20],"123":[2,20],"124":[2,20],"126":[2,20],"127":[2,20],"130":[2,20],"131":[2,20],"132":[2,20],"133":[2,20],"134":[2,20],"135":[2,20],"136":[2,20],"137":[2,20],"138":[2,20],"139":[2,20],"140":[2,20],"141":[2,20],"142":[2,20],"143":[2,20],"144":[2,20],"145":[2,20],"146":[2,20],"147":[2,20],"148":[2,20],"149":[2,20],"150":[2,20],"151":[2,20],"152":[2,20],"153":[2,20],"154":[2,20],"155":[2,20]},{"1":[2,21],"3":[2,21],"26":[2,21],"27":[2,21],"48":[2,21],"56":[2,21],"58":[2,21],"73":[2,21],"75":[2,21],"78":[2,21],"88":[2,21],"92":[2,21],"100":[2,21],"103":[2,21],"104":[2,21],"105":[2,21],"108":[2,21],"110":[2,21],"117":[2,21],"120":[2,21],"123":[2,21],"124":[2,21],"126":[2,21],"127":[2,21],"130":[2,21],"131":[2,21],"132":[2,21],"133":[2,21],"134":[2,21],"135":[2,21],"136":[2,21],"137":[2,21],"138":[2,21],"139":[2,21],"140":[2,21],"141":[2,21],"142":[2,21],"143":[2,21],"144":[2,21],"145":[2,21],"146":[2,21],"147":[2,21],"148":[2,21],"149":[2,21],"150":[2,21],"151":[2,21],"152":[2,21],"153":[2,21],"154":[2,21],"155":[2,21]},{"1":[2,22],"3":[2,22],"26":[2,22],"27":[2,22],"48":[2,22],"56":[2,22],"58":[2,22],"73":[2,22],"75":[2,22],"78":[2,22],"88":[2,22],"92":[2,22],"100":[2,22],"103":[2,22],"104":[2,22],"105":[2,22],"108":[2,22],"110":[2,22],"117":[2,22],"120":[2,22],"123":[2,22],"124":[2,22],"126":[2,22],"127":[2,22],"130":[2,22],"131":[2,22],"132":[2,22],"133":[2,22],"134":[2,22],"135":[2,22],"136":[2,22],"137":[2,22],"138":[2,22],"139":[2,22],"140":[2,22],"141":[2,22],"142":[2,22],"143":[2,22],"144":[2,22],"145":[2,22],"146":[2,22],"147":[2,22],"148":[2,22],"149":[2,22],"150":[2,22],"151":[2,22],"152":[2,22],"153":[2,22],"154":[2,22],"155":[2,22]},{"1":[2,23],"3":[2,23],"26":[2,23],"27":[2,23],"48":[2,23],"56":[2,23],"58":[2,23],"73":[2,23],"75":[2,23],"78":[2,23],"88":[2,23],"92":[2,23],"100":[2,23],"103":[2,23],"104":[2,23],"105":[2,23],"108":[2,23],"110":[2,23],"117":[2,23],"120":[2,23],"123":[2,23],"124":[2,23],"126":[2,23],"127":[2,23],"130":[2,23],"131":[2,23],"132":[2,23],"133":[2,23],"134":[2,23],"135":[2,23],"136":[2,23],"137":[2,23],"138":[2,23],"139":[2,23],"140":[2,23],"141":[2,23],"142":[2,23],"143":[2,23],"144":[2,23],"145":[2,23],"146":[2,23],"147":[2,23],"148":[2,23],"149":[2,23],"150":[2,23],"151":[2,23],"152":[2,23],"153":[2,23],"154":[2,23],"155":[2,23]},{"1":[2,24],"3":[2,24],"26":[2,24],"27":[2,24],"48":[2,24],"56":[2,24],"58":[2,24],"73":[2,24],"75":[2,24],"78":[2,24],"88":[2,24],"92":[2,24],"100":[2,24],"103":[2,24],"104":[2,24],"105":[2,24],"108":[2,24],"110":[2,24],"117":[2,24],"120":[2,24],"123":[2,24],"124":[2,24],"126":[2,24],"127":[2,24],"130":[2,24],"131":[2,24],"132":[2,24],"133":[2,24],"134":[2,24],"135":[2,24],"136":[2,24],"137":[2,24],"138":[2,24],"139":[2,24],"140":[2,24],"141":[2,24],"142":[2,24],"143":[2,24],"144":[2,24],"145":[2,24],"146":[2,24],"147":[2,24],"148":[2,24],"149":[2,24],"150":[2,24],"151":[2,24],"152":[2,24],"153":[2,24],"154":[2,24],"155":[2,24]},{"1":[2,25],"3":[2,25],"26":[2,25],"27":[2,25],"48":[2,25],"56":[2,25],"58":[2,25],"73":[2,25],"75":[2,25],"78":[2,25],"88":[2,25],"92":[2,25],"100":[2,25],"103":[2,25],"104":[2,25],"105":[2,25],"108":[2,25],"110":[2,25],"117":[2,25],"120":[2,25],"123":[2,25],"124":[2,25],"126":[2,25],"127":[2,25],"130":[2,25],"131":[2,25],"132":[2,25],"133":[2,25],"134":[2,25],"135":[2,25],"136":[2,25],"137":[2,25],"138":[2,25],"139":[2,25],"140":[2,25],"141":[2,25],"142":[2,25],"143":[2,25],"144":[2,25],"145":[2,25],"146":[2,25],"147":[2,25],"148":[2,25],"149":[2,25],"150":[2,25],"151":[2,25],"152":[2,25],"153":[2,25],"154":[2,25],"155":[2,25]},{"1":[2,26],"3":[2,26],"26":[2,26],"27":[2,26],"48":[2,26],"56":[2,26],"58":[2,26],"73":[2,26],"75":[2,26],"78":[2,26],"88":[2,26],"92":[2,26],"100":[2,26],"103":[2,26],"104":[2,26],"105":[2,26],"108":[2,26],"110":[2,26],"117":[2,26],"120":[2,26],"123":[2,26],"124":[2,26],"126":[2,26],"127":[2,26],"130":[2,26],"131":[2,26],"132":[2,26],"133":[2,26],"134":[2,26],"135":[2,26],"136":[2,26],"137":[2,26],"138":[2,26],"139":[2,26],"140":[2,26],"141":[2,26],"142":[2,26],"143":[2,26],"144":[2,26],"145":[2,26],"146":[2,26],"147":[2,26],"148":[2,26],"149":[2,26],"150":[2,26],"151":[2,26],"152":[2,26],"153":[2,26],"154":[2,26],"155":[2,26]},{"1":[2,62],"3":[2,62],"26":[2,62],"27":[2,62],"44":[2,62],"48":[2,62],"56":[2,62],"58":[2,62],"66":[2,62],"67":[2,62],"68":[2,62],"69":[2,62],"72":[2,62],"73":[2,62],"74":[2,62],"75":[2,62],"78":[2,62],"81":[2,62],"84":[2,62],"86":[2,62],"88":[2,62],"92":[2,62],"100":[2,62],"103":[2,62],"104":[2,62],"105":[2,62],"108":[2,62],"110":[2,62],"117":[2,62],"120":[2,62],"123":[2,62],"124":[2,62],"126":[2,62],"127":[2,62],"130":[2,62],"131":[2,62],"132":[2,62],"133":[2,62],"134":[2,62],"135":[2,62],"136":[2,62],"137":[2,62],"138":[2,62],"139":[2,62],"140":[2,62],"141":[2,62],"142":[2,62],"143":[2,62],"144":[2,62],"145":[2,62],"146":[2,62],"147":[2,62],"148":[2,62],"149":[2,62],"150":[2,62],"151":[2,62],"152":[2,62],"153":[2,62],"154":[2,62],"155":[2,62]},{"1":[2,63],"3":[2,63],"26":[2,63],"27":[2,63],"44":[2,63],"48":[2,63],"56":[2,63],"58":[2,63],"66":[2,63],"67":[2,63],"68":[2,63],"69":[2,63],"72":[2,63],"73":[2,63],"74":[2,63],"75":[2,63],"78":[2,63],"81":[2,63],"84":[2,63],"86":[2,63],"88":[2,63],"92":[2,63],"100":[2,63],"103":[2,63],"104":[2,63],"105":[2,63],"108":[2,63],"110":[2,63],"117":[2,63],"120":[2,63],"123":[2,63],"124":[2,63],"126":[2,63],"127":[2,63],"130":[2,63],"131":[2,63],"132":[2,63],"133":[2,63],"134":[2,63],"135":[2,63],"136":[2,63],"137":[2,63],"138":[2,63],"139":[2,63],"140":[2,63],"141":[2,63],"142":[2,63],"143":[2,63],"144":[2,63],"145":[2,63],"146":[2,63],"147":[2,63],"148":[2,63],"149":[2,63],"150":[2,63],"151":[2,63],"152":[2,63],"153":[2,63],"154":[2,63],"155":[2,63]},{"1":[2,64],"3":[2,64],"26":[2,64],"27":[2,64],"44":[2,64],"48":[2,64],"56":[2,64],"58":[2,64],"66":[2,64],"67":[2,64],"68":[2,64],"69":[2,64],"72":[2,64],"73":[2,64],"74":[2,64],"75":[2,64],"78":[2,64],"81":[2,64],"84":[2,64],"86":[2,64],"88":[2,64],"92":[2,64],"100":[2,64],"103":[2,64],"104":[2,64],"105":[2,64],"108":[2,64],"110":[2,64],"117":[2,64],"120":[2,64],"123":[2,64],"124":[2,64],"126":[2,64],"127":[2,64],"130":[2,64],"131":[2,64],"132":[2,64],"133":[2,64],"134":[2,64],"135":[2,64],"136":[2,64],"137":[2,64],"138":[2,64],"139":[2,64],"140":[2,64],"141":[2,64],"142":[2,64],"143":[2,64],"144":[2,64],"145":[2,64],"146":[2,64],"147":[2,64],"148":[2,64],"149":[2,64],"150":[2,64],"151":[2,64],"152":[2,64],"153":[2,64],"154":[2,64],"155":[2,64]},{"1":[2,65],"3":[2,65],"26":[2,65],"27":[2,65],"44":[2,65],"48":[2,65],"56":[2,65],"58":[2,65],"66":[2,65],"67":[2,65],"68":[2,65],"69":[2,65],"72":[2,65],"73":[2,65],"74":[2,65],"75":[2,65],"78":[2,65],"81":[2,65],"84":[2,65],"86":[2,65],"88":[2,65],"92":[2,65],"100":[2,65],"103":[2,65],"104":[2,65],"105":[2,65],"108":[2,65],"110":[2,65],"117":[2,65],"120":[2,65],"123":[2,65],"124":[2,65],"126":[2,65],"127":[2,65],"130":[2,65],"131":[2,65],"132":[2,65],"133":[2,65],"134":[2,65],"135":[2,65],"136":[2,65],"137":[2,65],"138":[2,65],"139":[2,65],"140":[2,65],"141":[2,65],"142":[2,65],"143":[2,65],"144":[2,65],"145":[2,65],"146":[2,65],"147":[2,65],"148":[2,65],"149":[2,65],"150":[2,65],"151":[2,65],"152":[2,65],"153":[2,65],"154":[2,65],"155":[2,65]},{"1":[2,66],"3":[2,66],"26":[2,66],"27":[2,66],"44":[2,66],"48":[2,66],"56":[2,66],"58":[2,66],"66":[2,66],"67":[2,66],"68":[2,66],"69":[2,66],"72":[2,66],"73":[2,66],"74":[2,66],"75":[2,66],"78":[2,66],"81":[2,66],"84":[2,66],"86":[2,66],"88":[2,66],"92":[2,66],"100":[2,66],"103":[2,66],"104":[2,66],"105":[2,66],"108":[2,66],"110":[2,66],"117":[2,66],"120":[2,66],"123":[2,66],"124":[2,66],"126":[2,66],"127":[2,66],"130":[2,66],"131":[2,66],"132":[2,66],"133":[2,66],"134":[2,66],"135":[2,66],"136":[2,66],"137":[2,66],"138":[2,66],"139":[2,66],"140":[2,66],"141":[2,66],"142":[2,66],"143":[2,66],"144":[2,66],"145":[2,66],"146":[2,66],"147":[2,66],"148":[2,66],"149":[2,66],"150":[2,66],"151":[2,66],"152":[2,66],"153":[2,66],"154":[2,66],"155":[2,66]},{"1":[2,67],"3":[2,67],"26":[2,67],"27":[2,67],"44":[2,67],"48":[2,67],"56":[2,67],"58":[2,67],"66":[2,67],"67":[2,67],"68":[2,67],"69":[2,67],"72":[2,67],"73":[2,67],"74":[2,67],"75":[2,67],"78":[2,67],"81":[2,67],"84":[2,67],"86":[2,67],"88":[2,67],"92":[2,67],"100":[2,67],"103":[2,67],"104":[2,67],"105":[2,67],"108":[2,67],"110":[2,67],"117":[2,67],"120":[2,67],"123":[2,67],"124":[2,67],"126":[2,67],"127":[2,67],"130":[2,67],"131":[2,67],"132":[2,67],"133":[2,67],"134":[2,67],"135":[2,67],"136":[2,67],"137":[2,67],"138":[2,67],"139":[2,67],"140":[2,67],"141":[2,67],"142":[2,67],"143":[2,67],"144":[2,67],"145":[2,67],"146":[2,67],"147":[2,67],"148":[2,67],"149":[2,67],"150":[2,67],"151":[2,67],"152":[2,67],"153":[2,67],"154":[2,67],"155":[2,67]},{"1":[2,68],"3":[2,68],"26":[2,68],"27":[2,68],"44":[2,68],"48":[2,68],"56":[2,68],"58":[2,68],"66":[2,68],"67":[2,68],"68":[2,68],"69":[2,68],"72":[2,68],"73":[2,68],"74":[2,68],"75":[2,68],"78":[2,68],"81":[2,68],"84":[2,68],"86":[2,68],"88":[2,68],"92":[2,68],"100":[2,68],"103":[2,68],"104":[2,68],"105":[2,68],"108":[2,68],"110":[2,68],"117":[2,68],"120":[2,68],"123":[2,68],"124":[2,68],"126":[2,68],"127":[2,68],"130":[2,68],"131":[2,68],"132":[2,68],"133":[2,68],"134":[2,68],"135":[2,68],"136":[2,68],"137":[2,68],"138":[2,68],"139":[2,68],"140":[2,68],"141":[2,68],"142":[2,68],"143":[2,68],"144":[2,68],"145":[2,68],"146":[2,68],"147":[2,68],"148":[2,68],"149":[2,68],"150":[2,68],"151":[2,68],"152":[2,68],"153":[2,68],"154":[2,68],"155":[2,68]},{"1":[2,91],"3":[2,91],"26":[2,91],"27":[2,91],"48":[2,91],"56":[2,91],"58":[2,91],"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,91],"74":[1,136],"75":[2,91],"78":[2,91],"85":138,"86":[1,134],"88":[2,91],"92":[2,91],"100":[2,91],"103":[2,91],"104":[2,91],"105":[2,91],"108":[2,91],"110":[2,91],"117":[2,91],"120":[2,91],"123":[2,91],"124":[2,91],"126":[2,91],"127":[2,91],"130":[2,91],"131":[2,91],"132":[2,91],"133":[2,91],"134":[2,91],"135":[2,91],"136":[2,91],"137":[2,91],"138":[2,91],"139":[2,91],"140":[2,91],"141":[2,91],"142":[2,91],"143":[2,91],"144":[2,91],"145":[2,91],"146":[2,91],"147":[2,91],"148":[2,91],"149":[2,91],"150":[2,91],"151":[2,91],"152":[2,91],"153":[2,91],"154":[2,91],"155":[2,91]},{"7":140,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":139,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,93],"3":[2,93],"26":[2,93],"27":[2,93],"48":[2,93],"56":[2,93],"58":[2,93],"73":[2,93],"75":[2,93],"78":[2,93],"88":[2,93],"92":[2,93],"100":[2,93],"103":[2,93],"104":[2,93],"105":[2,93],"108":[2,93],"110":[2,93],"117":[2,93],"120":[2,93],"123":[2,93],"124":[2,93],"126":[2,93],"127":[2,93],"130":[2,93],"131":[2,93],"132":[2,93],"133":[2,93],"134":[2,93],"135":[2,93],"136":[2,93],"137":[2,93],"138":[2,93],"139":[2,93],"140":[2,93],"141":[2,93],"142":[2,93],"143":[2,93],"144":[2,93],"145":[2,93],"146":[2,93],"147":[2,93],"148":[2,93],"149":[2,93],"150":[2,93],"151":[2,93],"152":[2,93],"153":[2,93],"154":[2,93],"155":[2,93]},{"50":141,"51":[2,56],"55":142,"56":[2,56],"57":[1,143]},{"3":[1,145],"5":144,"26":[1,6]},{"6":146,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":147,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":148,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":149,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":150,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":151,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":152,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":153,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":154,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,148],"3":[2,148],"26":[2,148],"27":[2,148],"48":[2,148],"56":[2,148],"58":[2,148],"73":[2,148],"75":[2,148],"78":[2,148],"88":[2,148],"92":[2,148],"100":[2,148],"103":[2,148],"104":[2,148],"105":[2,148],"108":[2,148],"110":[2,148],"117":[2,148],"120":[2,148],"123":[2,148],"124":[2,148],"126":[2,148],"127":[2,148],"130":[2,148],"131":[2,148],"132":[2,148],"133":[2,148],"134":[2,148],"135":[2,148],"136":[2,148],"137":[2,148],"138":[2,148],"139":[2,148],"140":[2,148],"141":[2,148],"142":[2,148],"143":[2,148],"144":[2,148],"145":[2,148],"146":[2,148],"147":[2,148],"148":[2,148],"149":[2,148],"150":[2,148],"151":[2,148],"152":[2,148],"153":[2,148],"154":[2,148],"155":[2,148]},{"3":[1,145],"5":155,"26":[1,6]},{"6":156,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,49],"3":[2,49],"6":157,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[2,49],"27":[2,49],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,49],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,49],"58":[2,49],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,49],"75":[2,49],"76":[1,70],"78":[2,49],"80":[1,54],"82":[1,34],"83":35,"88":[2,49],"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,49],"94":[1,48],"98":[1,49],"99":[1,71],"100":[2,49],"101":[1,56],"102":51,"103":[2,49],"104":[2,49],"105":[1,52],"108":[2,49],"110":[2,49],"111":[1,53],"116":76,"117":[2,49],"119":47,"120":[2,49],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,49],"131":[2,49],"132":[2,49],"133":[2,49],"134":[2,49],"135":[2,49],"136":[2,49],"137":[2,49],"138":[2,49],"139":[2,49],"140":[2,49],"141":[2,49],"142":[2,49],"143":[2,49],"144":[2,49],"145":[2,49],"146":[2,49],"147":[2,49],"148":[2,49],"149":[2,49],"150":[2,49],"151":[2,49],"152":[2,49],"153":[2,49],"154":[2,49],"155":[2,49]},{"3":[1,145],"5":158,"26":[1,6]},{"28":160,"29":[1,57],"106":159},{"6":161,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"7":162,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,50],"3":[2,50],"26":[2,50],"27":[2,50],"47":[2,50],"48":[2,50],"56":[2,50],"58":[2,50],"73":[2,50],"75":[2,50],"78":[2,50],"88":[2,50],"92":[2,50],"96":[2,50],"97":[2,50],"100":[2,50],"103":[2,50],"104":[2,50],"105":[2,50],"108":[2,50],"110":[2,50],"113":[2,50],"115":[2,50],"117":[2,50],"120":[2,50],"123":[2,50],"124":[2,50],"126":[2,50],"127":[2,50],"130":[2,50],"131":[2,50],"132":[2,50],"133":[2,50],"134":[2,50],"135":[2,50],"136":[2,50],"137":[2,50],"138":[2,50],"139":[2,50],"140":[2,50],"141":[2,50],"142":[2,50],"143":[2,50],"144":[2,50],"145":[2,50],"146":[2,50],"147":[2,50],"148":[2,50],"149":[2,50],"150":[2,50],"151":[2,50],"152":[2,50],"153":[2,50],"154":[2,50],"155":[2,50]},{"1":[2,123],"3":[2,123],"26":[2,123],"27":[2,123],"48":[2,123],"56":[2,123],"58":[2,123],"73":[2,123],"75":[2,123],"78":[2,123],"88":[2,123],"92":[2,123],"100":[2,123],"103":[2,123],"104":[2,123],"105":[2,123],"108":[2,123],"110":[2,123],"117":[2,123],"120":[2,123],"123":[2,123],"124":[2,123],"126":[2,123],"127":[2,123],"130":[2,123],"131":[2,123],"132":[2,123],"133":[2,123],"134":[2,123],"135":[2,123],"136":[2,123],"137":[2,123],"138":[2,123],"139":[2,123],"140":[2,123],"141":[2,123],"142":[2,123],"143":[2,123],"144":[2,123],"145":[2,123],"146":[2,123],"147":[2,123],"148":[2,123],"149":[2,123],"150":[2,123],"151":[2,123],"152":[2,123],"153":[2,123],"154":[2,123],"155":[2,123]},{"1":[2,30],"3":[2,30],"26":[2,30],"27":[2,30],"44":[2,30],"48":[2,30],"56":[2,30],"58":[2,30],"66":[2,30],"67":[2,30],"68":[2,30],"69":[2,30],"72":[2,30],"73":[2,30],"74":[2,30],"75":[2,30],"78":[2,30],"81":[2,30],"84":[2,30],"86":[2,30],"88":[2,30],"92":[2,30],"100":[2,30],"103":[2,30],"104":[2,30],"105":[2,30],"108":[2,30],"109":[2,30],"110":[2,30],"117":[2,30],"120":[2,30],"123":[2,30],"124":[2,30],"126":[2,30],"127":[2,30],"130":[2,30],"131":[2,30],"132":[2,30],"133":[2,30],"134":[2,30],"135":[2,30],"136":[2,30],"137":[2,30],"138":[2,30],"139":[2,30],"140":[2,30],"141":[2,30],"142":[2,30],"143":[2,30],"144":[2,30],"145":[2,30],"146":[2,30],"147":[2,30],"148":[2,30],"149":[2,30],"150":[2,30],"151":[2,30],"152":[2,30],"153":[2,30],"154":[2,30],"155":[2,30]},{"1":[2,33],"3":[2,33],"26":[2,33],"27":[2,33],"44":[2,33],"48":[2,33],"56":[2,33],"58":[2,33],"66":[2,33],"67":[2,33],"68":[2,33],"69":[2,33],"72":[2,33],"73":[2,33],"74":[2,33],"75":[2,33],"78":[2,33],"81":[2,33],"84":[2,33],"86":[2,33],"88":[2,33],"92":[2,33],"100":[2,33],"103":[2,33],"104":[2,33],"105":[2,33],"108":[2,33],"110":[2,33],"117":[2,33],"120":[2,33],"123":[2,33],"124":[2,33],"126":[2,33],"127":[2,33],"130":[2,33],"131":[2,33],"132":[2,33],"133":[2,33],"134":[2,33],"135":[2,33],"136":[2,33],"137":[2,33],"138":[2,33],"139":[2,33],"140":[2,33],"141":[2,33],"142":[2,33],"143":[2,33],"144":[2,33],"145":[2,33],"146":[2,33],"147":[2,33],"148":[2,33],"149":[2,33],"150":[2,33],"151":[2,33],"152":[2,33],"153":[2,33],"154":[2,33],"155":[2,33]},{"1":[2,34],"3":[2,34],"26":[2,34],"27":[2,34],"44":[2,34],"48":[2,34],"56":[2,34],"58":[2,34],"66":[2,34],"67":[2,34],"68":[2,34],"69":[2,34],"72":[2,34],"73":[2,34],"74":[2,34],"75":[2,34],"78":[2,34],"81":[2,34],"84":[2,34],"86":[2,34],"88":[2,34],"92":[2,34],"100":[2,34],"103":[2,34],"104":[2,34],"105":[2,34],"108":[2,34],"110":[2,34],"117":[2,34],"120":[2,34],"123":[2,34],"124":[2,34],"126":[2,34],"127":[2,34],"130":[2,34],"131":[2,34],"132":[2,34],"133":[2,34],"134":[2,34],"135":[2,34],"136":[2,34],"137":[2,34],"138":[2,34],"139":[2,34],"140":[2,34],"141":[2,34],"142":[2,34],"143":[2,34],"144":[2,34],"145":[2,34],"146":[2,34],"147":[2,34],"148":[2,34],"149":[2,34],"150":[2,34],"151":[2,34],"152":[2,34],"153":[2,34],"154":[2,34],"155":[2,34]},{"1":[2,35],"3":[2,35],"26":[2,35],"27":[2,35],"44":[2,35],"48":[2,35],"56":[2,35],"58":[2,35],"66":[2,35],"67":[2,35],"68":[2,35],"69":[2,35],"72":[2,35],"73":[2,35],"74":[2,35],"75":[2,35],"78":[2,35],"81":[2,35],"84":[2,35],"86":[2,35],"88":[2,35],"92":[2,35],"100":[2,35],"103":[2,35],"104":[2,35],"105":[2,35],"108":[2,35],"110":[2,35],"117":[2,35],"120":[2,35],"123":[2,35],"124":[2,35],"126":[2,35],"127":[2,35],"130":[2,35],"131":[2,35],"132":[2,35],"133":[2,35],"134":[2,35],"135":[2,35],"136":[2,35],"137":[2,35],"138":[2,35],"139":[2,35],"140":[2,35],"141":[2,35],"142":[2,35],"143":[2,35],"144":[2,35],"145":[2,35],"146":[2,35],"147":[2,35],"148":[2,35],"149":[2,35],"150":[2,35],"151":[2,35],"152":[2,35],"153":[2,35],"154":[2,35],"155":[2,35]},{"1":[2,36],"3":[2,36],"26":[2,36],"27":[2,36],"44":[2,36],"48":[2,36],"56":[2,36],"58":[2,36],"66":[2,36],"67":[2,36],"68":[2,36],"69":[2,36],"72":[2,36],"73":[2,36],"74":[2,36],"75":[2,36],"78":[2,36],"81":[2,36],"84":[2,36],"86":[2,36],"88":[2,36],"92":[2,36],"100":[2,36],"103":[2,36],"104":[2,36],"105":[2,36],"108":[2,36],"110":[2,36],"117":[2,36],"120":[2,36],"123":[2,36],"124":[2,36],"126":[2,36],"127":[2,36],"130":[2,36],"131":[2,36],"132":[2,36],"133":[2,36],"134":[2,36],"135":[2,36],"136":[2,36],"137":[2,36],"138":[2,36],"139":[2,36],"140":[2,36],"141":[2,36],"142":[2,36],"143":[2,36],"144":[2,36],"145":[2,36],"146":[2,36],"147":[2,36],"148":[2,36],"149":[2,36],"150":[2,36],"151":[2,36],"152":[2,36],"153":[2,36],"154":[2,36],"155":[2,36]},{"1":[2,37],"3":[2,37],"26":[2,37],"27":[2,37],"44":[2,37],"48":[2,37],"56":[2,37],"58":[2,37],"66":[2,37],"67":[2,37],"68":[2,37],"69":[2,37],"72":[2,37],"73":[2,37],"74":[2,37],"75":[2,37],"78":[2,37],"81":[2,37],"84":[2,37],"86":[2,37],"88":[2,37],"92":[2,37],"100":[2,37],"103":[2,37],"104":[2,37],"105":[2,37],"108":[2,37],"110":[2,37],"117":[2,37],"120":[2,37],"123":[2,37],"124":[2,37],"126":[2,37],"127":[2,37],"130":[2,37],"131":[2,37],"132":[2,37],"133":[2,37],"134":[2,37],"135":[2,37],"136":[2,37],"137":[2,37],"138":[2,37],"139":[2,37],"140":[2,37],"141":[2,37],"142":[2,37],"143":[2,37],"144":[2,37],"145":[2,37],"146":[2,37],"147":[2,37],"148":[2,37],"149":[2,37],"150":[2,37],"151":[2,37],"152":[2,37],"153":[2,37],"154":[2,37],"155":[2,37]},{"1":[2,38],"3":[2,38],"26":[2,38],"27":[2,38],"44":[2,38],"48":[2,38],"56":[2,38],"58":[2,38],"66":[2,38],"67":[2,38],"68":[2,38],"69":[2,38],"72":[2,38],"73":[2,38],"74":[2,38],"75":[2,38],"78":[2,38],"81":[2,38],"84":[2,38],"86":[2,38],"88":[2,38],"92":[2,38],"100":[2,38],"103":[2,38],"104":[2,38],"105":[2,38],"108":[2,38],"110":[2,38],"117":[2,38],"120":[2,38],"123":[2,38],"124":[2,38],"126":[2,38],"127":[2,38],"130":[2,38],"131":[2,38],"132":[2,38],"133":[2,38],"134":[2,38],"135":[2,38],"136":[2,38],"137":[2,38],"138":[2,38],"139":[2,38],"140":[2,38],"141":[2,38],"142":[2,38],"143":[2,38],"144":[2,38],"145":[2,38],"146":[2,38],"147":[2,38],"148":[2,38],"149":[2,38],"150":[2,38],"151":[2,38],"152":[2,38],"153":[2,38],"154":[2,38],"155":[2,38]},{"1":[2,39],"3":[2,39],"26":[2,39],"27":[2,39],"44":[2,39],"48":[2,39],"56":[2,39],"58":[2,39],"66":[2,39],"67":[2,39],"68":[2,39],"69":[2,39],"72":[2,39],"73":[2,39],"74":[2,39],"75":[2,39],"78":[2,39],"81":[2,39],"84":[2,39],"86":[2,39],"88":[2,39],"92":[2,39],"100":[2,39],"103":[2,39],"104":[2,39],"105":[2,39],"108":[2,39],"110":[2,39],"117":[2,39],"120":[2,39],"123":[2,39],"124":[2,39],"126":[2,39],"127":[2,39],"130":[2,39],"131":[2,39],"132":[2,39],"133":[2,39],"134":[2,39],"135":[2,39],"136":[2,39],"137":[2,39],"138":[2,39],"139":[2,39],"140":[2,39],"141":[2,39],"142":[2,39],"143":[2,39],"144":[2,39],"145":[2,39],"146":[2,39],"147":[2,39],"148":[2,39],"149":[2,39],"150":[2,39],"151":[2,39],"152":[2,39],"153":[2,39],"154":[2,39],"155":[2,39]},{"1":[2,40],"3":[2,40],"26":[2,40],"27":[2,40],"44":[2,40],"48":[2,40],"56":[2,40],"58":[2,40],"66":[2,40],"67":[2,40],"68":[2,40],"69":[2,40],"72":[2,40],"73":[2,40],"74":[2,40],"75":[2,40],"78":[2,40],"81":[2,40],"84":[2,40],"86":[2,40],"88":[2,40],"92":[2,40],"100":[2,40],"103":[2,40],"104":[2,40],"105":[2,40],"108":[2,40],"110":[2,40],"117":[2,40],"120":[2,40],"123":[2,40],"124":[2,40],"126":[2,40],"127":[2,40],"130":[2,40],"131":[2,40],"132":[2,40],"133":[2,40],"134":[2,40],"135":[2,40],"136":[2,40],"137":[2,40],"138":[2,40],"139":[2,40],"140":[2,40],"141":[2,40],"142":[2,40],"143":[2,40],"144":[2,40],"145":[2,40],"146":[2,40],"147":[2,40],"148":[2,40],"149":[2,40],"150":[2,40],"151":[2,40],"152":[2,40],"153":[2,40],"154":[2,40],"155":[2,40]},{"1":[2,41],"3":[2,41],"26":[2,41],"27":[2,41],"44":[2,41],"48":[2,41],"56":[2,41],"58":[2,41],"66":[2,41],"67":[2,41],"68":[2,41],"69":[2,41],"72":[2,41],"73":[2,41],"74":[2,41],"75":[2,41],"78":[2,41],"81":[2,41],"84":[2,41],"86":[2,41],"88":[2,41],"92":[2,41],"100":[2,41],"103":[2,41],"104":[2,41],"105":[2,41],"108":[2,41],"110":[2,41],"117":[2,41],"120":[2,41],"123":[2,41],"124":[2,41],"126":[2,41],"127":[2,41],"130":[2,41],"131":[2,41],"132":[2,41],"133":[2,41],"134":[2,41],"135":[2,41],"136":[2,41],"137":[2,41],"138":[2,41],"139":[2,41],"140":[2,41],"141":[2,41],"142":[2,41],"143":[2,41],"144":[2,41],"145":[2,41],"146":[2,41],"147":[2,41],"148":[2,41],"149":[2,41],"150":[2,41],"151":[2,41],"152":[2,41],"153":[2,41],"154":[2,41],"155":[2,41]},{"1":[2,42],"3":[2,42],"26":[2,42],"27":[2,42],"44":[2,42],"48":[2,42],"56":[2,42],"58":[2,42],"66":[2,42],"67":[2,42],"68":[2,42],"69":[2,42],"72":[2,42],"73":[2,42],"74":[2,42],"75":[2,42],"78":[2,42],"81":[2,42],"84":[2,42],"86":[2,42],"88":[2,42],"92":[2,42],"100":[2,42],"103":[2,42],"104":[2,42],"105":[2,42],"108":[2,42],"110":[2,42],"117":[2,42],"120":[2,42],"123":[2,42],"124":[2,42],"126":[2,42],"127":[2,42],"130":[2,42],"131":[2,42],"132":[2,42],"133":[2,42],"134":[2,42],"135":[2,42],"136":[2,42],"137":[2,42],"138":[2,42],"139":[2,42],"140":[2,42],"141":[2,42],"142":[2,42],"143":[2,42],"144":[2,42],"145":[2,42],"146":[2,42],"147":[2,42],"148":[2,42],"149":[2,42],"150":[2,42],"151":[2,42],"152":[2,42],"153":[2,42],"154":[2,42],"155":[2,42]},{"1":[2,43],"3":[2,43],"26":[2,43],"27":[2,43],"44":[2,43],"48":[2,43],"56":[2,43],"58":[2,43],"66":[2,43],"67":[2,43],"68":[2,43],"69":[2,43],"72":[2,43],"73":[2,43],"74":[2,43],"75":[2,43],"78":[2,43],"81":[2,43],"84":[2,43],"86":[2,43],"88":[2,43],"92":[2,43],"100":[2,43],"103":[2,43],"104":[2,43],"105":[2,43],"108":[2,43],"110":[2,43],"117":[2,43],"120":[2,43],"123":[2,43],"124":[2,43],"126":[2,43],"127":[2,43],"130":[2,43],"131":[2,43],"132":[2,43],"133":[2,43],"134":[2,43],"135":[2,43],"136":[2,43],"137":[2,43],"138":[2,43],"139":[2,43],"140":[2,43],"141":[2,43],"142":[2,43],"143":[2,43],"144":[2,43],"145":[2,43],"146":[2,43],"147":[2,43],"148":[2,43],"149":[2,43],"150":[2,43],"151":[2,43],"152":[2,43],"153":[2,43],"154":[2,43],"155":[2,43]},{"3":[2,107],"6":165,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":164,"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,107],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,85],"24":173,"26":[1,170],"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":169,"47":[1,55],"56":[2,85],"77":167,"78":[2,85],"79":168},{"6":174,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,100],"3":[2,100],"26":[2,100],"27":[2,100],"28":175,"29":[1,57],"44":[2,100],"48":[2,100],"56":[2,100],"58":[2,100],"66":[2,100],"67":[2,100],"68":[2,100],"69":[2,100],"72":[2,100],"73":[2,100],"74":[2,100],"75":[2,100],"78":[2,100],"81":[2,100],"84":[2,100],"86":[2,100],"88":[2,100],"92":[2,100],"100":[2,100],"103":[2,100],"104":[2,100],"105":[2,100],"108":[2,100],"110":[2,100],"117":[2,100],"120":[2,100],"123":[2,100],"124":[2,100],"126":[2,100],"127":[2,100],"130":[2,100],"131":[2,100],"132":[2,100],"133":[2,100],"134":[2,100],"135":[2,100],"136":[2,100],"137":[2,100],"138":[2,100],"139":[2,100],"140":[2,100],"141":[2,100],"142":[2,100],"143":[2,100],"144":[2,100],"145":[2,100],"146":[2,100],"147":[2,100],"148":[2,100],"149":[2,100],"150":[2,100],"151":[2,100],"152":[2,100],"153":[2,100],"154":[2,100],"155":[2,100]},{"86":[1,176]},{"3":[2,54],"26":[2,54]},{"3":[2,55],"26":[2,55]},{"1":[2,145],"3":[2,145],"26":[2,145],"27":[2,145],"48":[2,145],"56":[2,145],"58":[2,145],"73":[2,145],"75":[2,145],"78":[2,145],"88":[2,145],"92":[2,145],"100":[2,145],"103":[2,145],"104":[2,145],"105":[2,145],"108":[2,145],"110":[2,145],"113":[1,177],"117":[2,145],"118":178,"120":[2,145],"123":[2,145],"124":[2,145],"126":[2,145],"127":[2,145],"130":[2,145],"131":[2,145],"132":[2,145],"133":[2,145],"134":[2,145],"135":[2,145],"136":[2,145],"137":[2,145],"138":[2,145],"139":[2,145],"140":[2,145],"141":[2,145],"142":[2,145],"143":[2,145],"144":[2,145],"145":[2,145],"146":[2,145],"147":[2,145],"148":[2,145],"149":[2,145],"150":[2,145],"151":[2,145],"152":[2,145],"153":[2,145],"154":[2,145],"155":[2,145]},{"6":179,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,31],"3":[2,31],"26":[2,31],"27":[2,31],"44":[2,31],"48":[2,31],"56":[2,31],"58":[2,31],"66":[2,31],"67":[2,31],"68":[2,31],"69":[2,31],"72":[2,31],"73":[2,31],"74":[2,31],"75":[2,31],"78":[2,31],"81":[2,31],"84":[2,31],"86":[2,31],"88":[2,31],"92":[2,31],"100":[2,31],"103":[2,31],"104":[2,31],"105":[2,31],"108":[2,31],"110":[2,31],"117":[2,31],"120":[2,31],"123":[2,31],"124":[2,31],"126":[2,31],"127":[2,31],"130":[2,31],"131":[2,31],"132":[2,31],"133":[2,31],"134":[2,31],"135":[2,31],"136":[2,31],"137":[2,31],"138":[2,31],"139":[2,31],"140":[2,31],"141":[2,31],"142":[2,31],"143":[2,31],"144":[2,31],"145":[2,31],"146":[2,31],"147":[2,31],"148":[2,31],"149":[2,31],"150":[2,31],"151":[2,31],"152":[2,31],"153":[2,31],"154":[2,31],"155":[2,31]},{"1":[2,32],"3":[2,32],"26":[2,32],"27":[2,32],"44":[2,32],"48":[2,32],"56":[2,32],"58":[2,32],"66":[2,32],"67":[2,32],"68":[2,32],"69":[2,32],"72":[2,32],"73":[2,32],"74":[2,32],"75":[2,32],"78":[2,32],"81":[2,32],"84":[2,32],"86":[2,32],"88":[2,32],"92":[2,32],"100":[2,32],"103":[2,32],"104":[2,32],"105":[2,32],"108":[2,32],"110":[2,32],"117":[2,32],"120":[2,32],"123":[2,32],"124":[2,32],"126":[2,32],"127":[2,32],"130":[2,32],"131":[2,32],"132":[2,32],"133":[2,32],"134":[2,32],"135":[2,32],"136":[2,32],"137":[2,32],"138":[2,32],"139":[2,32],"140":[2,32],"141":[2,32],"142":[2,32],"143":[2,32],"144":[2,32],"145":[2,32],"146":[2,32],"147":[2,32],"148":[2,32],"149":[2,32],"150":[2,32],"151":[2,32],"152":[2,32],"153":[2,32],"154":[2,32],"155":[2,32]},{"6":180,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,29],"3":[2,29],"26":[2,29],"27":[2,29],"47":[2,29],"48":[2,29],"56":[2,29],"58":[2,29],"73":[2,29],"75":[2,29],"78":[2,29],"88":[2,29],"92":[2,29],"96":[2,29],"97":[2,29],"100":[2,29],"103":[2,29],"104":[2,29],"105":[2,29],"108":[2,29],"110":[2,29],"113":[2,29],"115":[2,29],"117":[2,29],"120":[2,29],"123":[2,29],"124":[2,29],"126":[2,29],"127":[2,29],"130":[2,29],"131":[2,29],"132":[2,29],"133":[2,29],"134":[2,29],"135":[2,29],"136":[2,29],"137":[2,29],"138":[2,29],"139":[2,29],"140":[2,29],"141":[2,29],"142":[2,29],"143":[2,29],"144":[2,29],"145":[2,29],"146":[2,29],"147":[2,29],"148":[2,29],"149":[2,29],"150":[2,29],"151":[2,29],"152":[2,29],"153":[2,29],"154":[2,29],"155":[2,29]},{"1":[2,7],"3":[2,7],"6":181,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[2,7],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,4]},{"1":[2,160],"3":[2,160],"26":[2,160],"27":[2,160],"48":[2,160],"56":[2,160],"58":[2,160],"73":[2,160],"75":[2,160],"78":[2,160],"88":[2,160],"92":[2,160],"100":[2,160],"103":[2,160],"104":[2,160],"105":[2,160],"108":[2,160],"110":[2,160],"117":[2,160],"120":[2,160],"123":[2,160],"124":[2,160],"126":[2,160],"127":[2,160],"130":[2,160],"131":[2,160],"132":[2,160],"133":[2,160],"134":[2,160],"135":[2,160],"136":[2,160],"137":[2,160],"138":[2,160],"139":[2,160],"140":[2,160],"141":[2,160],"142":[2,160],"143":[2,160],"144":[2,160],"145":[2,160],"146":[2,160],"147":[2,160],"148":[2,160],"149":[2,160],"150":[2,160],"151":[2,160],"152":[2,160],"153":[2,160],"154":[2,160],"155":[2,160]},{"1":[2,161],"3":[2,161],"26":[2,161],"27":[2,161],"48":[2,161],"56":[2,161],"58":[2,161],"73":[2,161],"75":[2,161],"78":[2,161],"88":[2,161],"92":[2,161],"100":[2,161],"103":[2,161],"104":[2,161],"105":[2,161],"108":[2,161],"110":[2,161],"117":[2,161],"120":[2,161],"123":[2,161],"124":[2,161],"126":[2,161],"127":[2,161],"130":[2,161],"131":[2,161],"132":[2,161],"133":[2,161],"134":[2,161],"135":[2,161],"136":[2,161],"137":[2,161],"138":[2,161],"139":[2,161],"140":[2,161],"141":[2,161],"142":[2,161],"143":[2,161],"144":[2,161],"145":[2,161],"146":[2,161],"147":[2,161],"148":[2,161],"149":[2,161],"150":[2,161],"151":[2,161],"152":[2,161],"153":[2,161],"154":[2,161],"155":[2,161]},{"6":182,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":183,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":184,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":185,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":186,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":187,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":188,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":189,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":190,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":191,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":192,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":193,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":194,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":195,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":196,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":197,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":198,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":199,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":200,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,51],"3":[2,51],"6":201,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[2,51],"27":[2,51],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,51],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,51],"58":[2,51],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,51],"75":[2,51],"76":[1,70],"78":[2,51],"80":[1,54],"82":[1,34],"83":35,"88":[2,51],"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,51],"94":[1,48],"98":[1,49],"99":[1,71],"100":[2,51],"101":[1,56],"102":51,"103":[2,51],"104":[2,51],"105":[2,51],"108":[2,51],"110":[2,51],"111":[1,53],"116":76,"117":[2,51],"119":47,"120":[2,51],"121":[1,38],"122":[1,39],"123":[2,51],"124":[2,51],"125":[1,42],"126":[2,51],"127":[2,51],"128":[1,45],"129":[1,46],"130":[2,51],"131":[2,51],"132":[2,51],"133":[2,51],"134":[2,51],"135":[2,51],"136":[2,51],"137":[2,51],"138":[2,51],"139":[2,51],"140":[2,51],"141":[2,51],"142":[2,51],"143":[2,51],"144":[2,51],"145":[2,51],"146":[2,51],"147":[2,51],"148":[2,51],"149":[2,51],"150":[2,51],"151":[2,51],"152":[2,51],"153":[2,51],"154":[2,51],"155":[2,51]},{"6":202,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":203,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":204,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":205,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":206,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":207,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":208,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":209,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":210,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":211,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":212,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":213,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,127],"3":[2,127],"26":[2,127],"27":[2,127],"48":[2,127],"56":[2,127],"58":[2,127],"73":[2,127],"75":[2,127],"78":[2,127],"88":[2,127],"92":[2,127],"100":[2,127],"103":[2,127],"104":[2,127],"105":[2,127],"108":[2,127],"110":[2,127],"117":[2,127],"120":[2,127],"123":[2,127],"124":[2,127],"126":[2,127],"127":[2,127],"130":[2,127],"131":[2,127],"132":[2,127],"133":[2,127],"134":[2,127],"135":[2,127],"136":[2,127],"137":[2,127],"138":[2,127],"139":[2,127],"140":[2,127],"141":[2,127],"142":[2,127],"143":[2,127],"144":[2,127],"145":[2,127],"146":[2,127],"147":[2,127],"148":[2,127],"149":[2,127],"150":[2,127],"151":[2,127],"152":[2,127],"153":[2,127],"154":[2,127],"155":[2,127]},{"28":160,"29":[1,57],"106":214},{"58":[1,215]},{"3":[1,82],"27":[1,216]},{"1":[2,28],"3":[2,28],"26":[2,28],"27":[2,28],"47":[2,28],"48":[2,28],"56":[2,28],"58":[2,28],"73":[2,28],"75":[2,28],"78":[2,28],"88":[2,28],"92":[2,28],"96":[2,28],"97":[2,28],"100":[2,28],"103":[2,28],"104":[2,28],"105":[2,28],"108":[2,28],"110":[2,28],"113":[2,28],"115":[2,28],"117":[2,28],"120":[2,28],"123":[2,28],"124":[2,28],"126":[2,28],"127":[2,28],"130":[2,28],"131":[2,28],"132":[2,28],"133":[2,28],"134":[2,28],"135":[2,28],"136":[2,28],"137":[2,28],"138":[2,28],"139":[2,28],"140":[2,28],"141":[2,28],"142":[2,28],"143":[2,28],"144":[2,28],"145":[2,28],"146":[2,28],"147":[2,28],"148":[2,28],"149":[2,28],"150":[2,28],"151":[2,28],"152":[2,28],"153":[2,28],"154":[2,28],"155":[2,28]},{"1":[2,69],"3":[2,69],"26":[2,69],"27":[2,69],"44":[2,69],"48":[2,69],"56":[2,69],"58":[2,69],"66":[2,69],"67":[2,69],"68":[2,69],"69":[2,69],"72":[2,69],"73":[2,69],"74":[2,69],"75":[2,69],"78":[2,69],"81":[2,69],"84":[2,69],"86":[2,69],"88":[2,69],"92":[2,69],"100":[2,69],"103":[2,69],"104":[2,69],"105":[2,69],"108":[2,69],"110":[2,69],"117":[2,69],"120":[2,69],"123":[2,69],"124":[2,69],"126":[2,69],"127":[2,69],"130":[2,69],"131":[2,69],"132":[2,69],"133":[2,69],"134":[2,69],"135":[2,69],"136":[2,69],"137":[2,69],"138":[2,69],"139":[2,69],"140":[2,69],"141":[2,69],"142":[2,69],"143":[2,69],"144":[2,69],"145":[2,69],"146":[2,69],"147":[2,69],"148":[2,69],"149":[2,69],"150":[2,69],"151":[2,69],"152":[2,69],"153":[2,69],"154":[2,69],"155":[2,69]},{"85":217,"86":[1,134]},{"6":218,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"7":219,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,96],"3":[2,96],"26":[2,96],"27":[2,96],"48":[2,96],"56":[2,96],"58":[2,96],"66":[2,96],"67":[2,96],"68":[2,96],"69":[2,96],"72":[2,96],"73":[2,96],"74":[2,96],"75":[2,96],"78":[2,96],"86":[2,96],"88":[2,96],"92":[2,96],"100":[2,96],"103":[2,96],"104":[2,96],"105":[2,96],"108":[2,96],"110":[2,96],"117":[2,96],"120":[2,96],"123":[2,96],"124":[2,96],"126":[2,96],"127":[2,96],"130":[2,96],"131":[2,96],"132":[2,96],"133":[2,96],"134":[2,96],"135":[2,96],"136":[2,96],"137":[2,96],"138":[2,96],"139":[2,96],"140":[2,96],"141":[2,96],"142":[2,96],"143":[2,96],"144":[2,96],"145":[2,96],"146":[2,96],"147":[2,96],"148":[2,96],"149":[2,96],"150":[2,96],"151":[2,96],"152":[2,96],"153":[2,96],"154":[2,96],"155":[2,96]},{"28":220,"29":[1,57]},{"28":221,"29":[1,57]},{"1":[2,73],"3":[2,73],"26":[2,73],"27":[2,73],"44":[2,73],"48":[2,73],"56":[2,73],"58":[2,73],"66":[2,73],"67":[2,73],"68":[2,73],"69":[2,73],"72":[2,73],"73":[2,73],"74":[2,73],"75":[2,73],"78":[2,73],"81":[2,73],"84":[2,73],"86":[2,73],"88":[2,73],"92":[2,73],"100":[2,73],"103":[2,73],"104":[2,73],"105":[2,73],"108":[2,73],"110":[2,73],"117":[2,73],"120":[2,73],"123":[2,73],"124":[2,73],"126":[2,73],"127":[2,73],"130":[2,73],"131":[2,73],"132":[2,73],"133":[2,73],"134":[2,73],"135":[2,73],"136":[2,73],"137":[2,73],"138":[2,73],"139":[2,73],"140":[2,73],"141":[2,73],"142":[2,73],"143":[2,73],"144":[2,73],"145":[2,73],"146":[2,73],"147":[2,73],"148":[2,73],"149":[2,73],"150":[2,73],"151":[2,73],"152":[2,73],"153":[2,73],"154":[2,73],"155":[2,73]},{"28":222,"29":[1,57]},{"1":[2,75],"3":[2,75],"26":[2,75],"27":[2,75],"44":[2,75],"48":[2,75],"56":[2,75],"58":[2,75],"66":[2,75],"67":[2,75],"68":[2,75],"69":[2,75],"72":[2,75],"73":[2,75],"74":[2,75],"75":[2,75],"78":[2,75],"81":[2,75],"84":[2,75],"86":[2,75],"88":[2,75],"92":[2,75],"100":[2,75],"103":[2,75],"104":[2,75],"105":[2,75],"108":[2,75],"110":[2,75],"117":[2,75],"120":[2,75],"123":[2,75],"124":[2,75],"126":[2,75],"127":[2,75],"130":[2,75],"131":[2,75],"132":[2,75],"133":[2,75],"134":[2,75],"135":[2,75],"136":[2,75],"137":[2,75],"138":[2,75],"139":[2,75],"140":[2,75],"141":[2,75],"142":[2,75],"143":[2,75],"144":[2,75],"145":[2,75],"146":[2,75],"147":[2,75],"148":[2,75],"149":[2,75],"150":[2,75],"151":[2,75],"152":[2,75],"153":[2,75],"154":[2,75],"155":[2,75]},{"1":[2,76],"3":[2,76],"26":[2,76],"27":[2,76],"44":[2,76],"48":[2,76],"56":[2,76],"58":[2,76],"66":[2,76],"67":[2,76],"68":[2,76],"69":[2,76],"72":[2,76],"73":[2,76],"74":[2,76],"75":[2,76],"78":[2,76],"81":[2,76],"84":[2,76],"86":[2,76],"88":[2,76],"92":[2,76],"100":[2,76],"103":[2,76],"104":[2,76],"105":[2,76],"108":[2,76],"110":[2,76],"117":[2,76],"120":[2,76],"123":[2,76],"124":[2,76],"126":[2,76],"127":[2,76],"130":[2,76],"131":[2,76],"132":[2,76],"133":[2,76],"134":[2,76],"135":[2,76],"136":[2,76],"137":[2,76],"138":[2,76],"139":[2,76],"140":[2,76],"141":[2,76],"142":[2,76],"143":[2,76],"144":[2,76],"145":[2,76],"146":[2,76],"147":[2,76],"148":[2,76],"149":[2,76],"150":[2,76],"151":[2,76],"152":[2,76],"153":[2,76],"154":[2,76],"155":[2,76]},{"3":[2,107],"6":224,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":223,"88":[2,107],"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":225,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,70],"3":[2,70],"26":[2,70],"27":[2,70],"44":[2,70],"48":[2,70],"56":[2,70],"58":[2,70],"66":[2,70],"67":[2,70],"68":[2,70],"69":[2,70],"72":[2,70],"73":[2,70],"74":[2,70],"75":[2,70],"78":[2,70],"81":[2,70],"84":[2,70],"86":[2,70],"88":[2,70],"92":[2,70],"100":[2,70],"103":[2,70],"104":[2,70],"105":[2,70],"108":[2,70],"110":[2,70],"117":[2,70],"120":[2,70],"123":[2,70],"124":[2,70],"126":[2,70],"127":[2,70],"130":[2,70],"131":[2,70],"132":[2,70],"133":[2,70],"134":[2,70],"135":[2,70],"136":[2,70],"137":[2,70],"138":[2,70],"139":[2,70],"140":[2,70],"141":[2,70],"142":[2,70],"143":[2,70],"144":[2,70],"145":[2,70],"146":[2,70],"147":[2,70],"148":[2,70],"149":[2,70],"150":[2,70],"151":[2,70],"152":[2,70],"153":[2,70],"154":[2,70],"155":[2,70]},{"1":[2,97],"3":[2,97],"26":[2,97],"27":[2,97],"48":[2,97],"56":[2,97],"58":[2,97],"66":[2,97],"67":[2,97],"68":[2,97],"69":[2,97],"72":[2,97],"73":[2,97],"74":[2,97],"75":[2,97],"78":[2,97],"86":[2,97],"88":[2,97],"92":[2,97],"100":[2,97],"103":[2,97],"104":[2,97],"105":[2,97],"108":[2,97],"110":[2,97],"117":[2,97],"120":[2,97],"123":[2,97],"124":[2,97],"126":[2,97],"127":[2,97],"130":[2,97],"131":[2,97],"132":[2,97],"133":[2,97],"134":[2,97],"135":[2,97],"136":[2,97],"137":[2,97],"138":[2,97],"139":[2,97],"140":[2,97],"141":[2,97],"142":[2,97],"143":[2,97],"144":[2,97],"145":[2,97],"146":[2,97],"147":[2,97],"148":[2,97],"149":[2,97],"150":[2,97],"151":[2,97],"152":[2,97],"153":[2,97],"154":[2,97],"155":[2,97]},{"1":[2,92],"3":[2,92],"26":[2,92],"27":[2,92],"48":[2,92],"56":[2,92],"58":[2,92],"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,92],"74":[1,136],"75":[2,92],"78":[2,92],"85":138,"86":[1,134],"88":[2,92],"92":[2,92],"100":[2,92],"103":[2,92],"104":[2,92],"105":[2,92],"108":[2,92],"110":[2,92],"117":[2,92],"120":[2,92],"123":[2,92],"124":[2,92],"126":[2,92],"127":[2,92],"130":[2,92],"131":[2,92],"132":[2,92],"133":[2,92],"134":[2,92],"135":[2,92],"136":[2,92],"137":[2,92],"138":[2,92],"139":[2,92],"140":[2,92],"141":[2,92],"142":[2,92],"143":[2,92],"144":[2,92],"145":[2,92],"146":[2,92],"147":[2,92],"148":[2,92],"149":[2,92],"150":[2,92],"151":[2,92],"152":[2,92],"153":[2,92],"154":[2,92],"155":[2,92]},{"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"74":[1,136],"85":127,"86":[1,134]},{"51":[1,227],"56":[1,228]},{"51":[2,57],"56":[2,57],"58":[1,229]},{"51":[2,59],"56":[2,59],"58":[2,59]},{"1":[2,53],"3":[2,53],"26":[2,53],"27":[2,53],"48":[2,53],"56":[2,53],"58":[2,53],"73":[2,53],"75":[2,53],"78":[2,53],"88":[2,53],"92":[2,53],"100":[2,53],"103":[2,53],"104":[2,53],"105":[2,53],"108":[2,53],"110":[2,53],"117":[2,53],"120":[2,53],"123":[2,53],"124":[2,53],"126":[2,53],"127":[2,53],"130":[2,53],"131":[2,53],"132":[2,53],"133":[2,53],"134":[2,53],"135":[2,53],"136":[2,53],"137":[2,53],"138":[2,53],"139":[2,53],"140":[2,53],"141":[2,53],"142":[2,53],"143":[2,53],"144":[2,53],"145":[2,53],"146":[2,53],"147":[2,53],"148":[2,53],"149":[2,53],"150":[2,53],"151":[2,53],"152":[2,53],"153":[2,53],"154":[2,53],"155":[2,53]},{"24":81,"47":[1,55]},{"1":[2,151],"3":[2,151],"26":[2,151],"27":[2,151],"48":[1,105],"56":[2,151],"58":[2,151],"73":[2,151],"75":[2,151],"78":[2,151],"88":[2,151],"92":[2,151],"100":[2,151],"102":118,"103":[2,151],"104":[2,151],"105":[2,151],"108":[2,151],"110":[2,151],"117":[2,151],"120":[2,151],"123":[2,151],"124":[2,151],"130":[2,151],"131":[2,151],"132":[2,151],"133":[2,151],"134":[2,151],"135":[2,151],"136":[2,151],"137":[2,151],"138":[2,151],"139":[2,151],"140":[2,151],"141":[2,151],"142":[2,151],"143":[2,151],"144":[2,151],"145":[2,151],"146":[2,151],"147":[2,151],"148":[2,151],"149":[2,151],"150":[2,151],"151":[2,151],"152":[2,151],"153":[2,151],"154":[2,151],"155":[2,151]},{"1":[2,152],"3":[2,152],"26":[2,152],"27":[2,152],"48":[1,105],"56":[2,152],"58":[2,152],"73":[2,152],"75":[2,152],"78":[2,152],"88":[2,152],"92":[2,152],"100":[2,152],"102":118,"103":[2,152],"104":[2,152],"105":[2,152],"108":[2,152],"110":[2,152],"117":[2,152],"120":[2,152],"123":[2,152],"124":[2,152],"130":[2,152],"131":[2,152],"132":[2,152],"133":[2,152],"134":[2,152],"135":[2,152],"136":[2,152],"137":[2,152],"138":[2,152],"139":[2,152],"140":[2,152],"141":[2,152],"142":[2,152],"143":[2,152],"144":[2,152],"145":[2,152],"146":[2,152],"147":[2,152],"148":[2,152],"149":[2,152],"150":[2,152],"151":[2,152],"152":[2,152],"153":[2,152],"154":[2,152],"155":[2,152]},{"1":[2,153],"3":[2,153],"26":[2,153],"27":[2,153],"48":[1,105],"56":[2,153],"58":[2,153],"73":[2,153],"75":[2,153],"78":[2,153],"88":[2,153],"92":[2,153],"100":[2,153],"102":118,"103":[2,153],"104":[2,153],"105":[2,153],"108":[2,153],"110":[2,153],"117":[2,153],"120":[2,153],"123":[2,153],"124":[2,153],"130":[2,153],"131":[2,153],"132":[2,153],"133":[2,153],"134":[2,153],"135":[2,153],"136":[2,153],"137":[2,153],"138":[2,153],"139":[2,153],"140":[2,153],"141":[2,153],"142":[2,153],"143":[2,153],"144":[2,153],"145":[2,153],"146":[2,153],"147":[2,153],"148":[2,153],"149":[2,153],"150":[2,153],"151":[2,153],"152":[2,153],"153":[2,153],"154":[2,153],"155":[2,153]},{"1":[2,154],"3":[2,154],"26":[2,154],"27":[2,154],"48":[1,105],"56":[2,154],"58":[2,154],"73":[2,154],"75":[2,154],"78":[2,154],"88":[2,154],"92":[2,154],"100":[2,154],"102":118,"103":[2,154],"104":[2,154],"105":[2,154],"108":[2,154],"110":[2,154],"117":[2,154],"120":[2,154],"123":[2,154],"124":[2,154],"130":[2,154],"131":[2,154],"132":[2,154],"133":[2,154],"134":[2,154],"135":[2,154],"136":[2,154],"137":[2,154],"138":[2,154],"139":[2,154],"140":[2,154],"141":[2,154],"142":[2,154],"143":[2,154],"144":[2,154],"145":[2,154],"146":[2,154],"147":[2,154],"148":[2,154],"149":[2,154],"150":[2,154],"151":[2,154],"152":[2,154],"153":[2,154],"154":[2,154],"155":[2,154]},{"1":[2,155],"3":[2,155],"26":[2,155],"27":[2,155],"48":[1,105],"56":[2,155],"58":[2,155],"73":[2,155],"75":[2,155],"78":[2,155],"88":[2,155],"92":[2,155],"100":[2,155],"102":118,"103":[2,155],"104":[2,155],"105":[2,155],"108":[2,155],"110":[2,155],"117":[2,155],"120":[2,155],"123":[2,155],"124":[2,155],"130":[2,155],"131":[2,155],"132":[2,155],"133":[2,155],"134":[2,155],"135":[2,155],"136":[2,155],"137":[2,155],"138":[2,155],"139":[2,155],"140":[2,155],"141":[2,155],"142":[2,155],"143":[2,155],"144":[2,155],"145":[2,155],"146":[2,155],"147":[2,155],"148":[2,155],"149":[2,155],"150":[2,155],"151":[2,155],"152":[2,155],"153":[2,155],"154":[2,155],"155":[2,155]},{"1":[2,156],"3":[2,156],"26":[2,156],"27":[2,156],"48":[1,105],"56":[2,156],"58":[2,156],"73":[2,156],"75":[2,156],"78":[2,156],"88":[2,156],"92":[2,156],"100":[2,156],"102":118,"103":[2,156],"104":[2,156],"105":[2,156],"108":[2,156],"110":[2,156],"117":[2,156],"120":[2,156],"123":[2,156],"124":[2,156],"130":[2,156],"131":[2,156],"132":[2,156],"133":[2,156],"134":[2,156],"135":[2,156],"136":[2,156],"137":[2,156],"138":[2,156],"139":[2,156],"140":[2,156],"141":[2,156],"142":[2,156],"143":[2,156],"144":[2,156],"145":[2,156],"146":[2,156],"147":[2,156],"148":[2,156],"149":[2,156],"150":[2,156],"151":[2,156],"152":[2,156],"153":[2,156],"154":[2,156],"155":[2,156]},{"1":[2,157],"3":[2,157],"26":[2,157],"27":[2,157],"48":[1,105],"56":[2,157],"58":[2,157],"73":[2,157],"75":[2,157],"78":[2,157],"88":[2,157],"92":[2,157],"100":[2,157],"102":118,"103":[2,157],"104":[2,157],"105":[2,157],"108":[2,157],"110":[2,157],"117":[2,157],"120":[2,157],"123":[2,157],"124":[2,157],"130":[2,157],"131":[2,157],"132":[2,157],"133":[2,157],"134":[2,157],"135":[2,157],"136":[2,157],"137":[2,157],"138":[2,157],"139":[2,157],"140":[2,157],"141":[2,157],"142":[2,157],"143":[2,157],"144":[2,157],"145":[2,157],"146":[2,157],"147":[2,157],"148":[2,157],"149":[2,157],"150":[2,157],"151":[2,157],"152":[2,157],"153":[2,157],"154":[2,157],"155":[2,157]},{"1":[2,158],"3":[2,158],"26":[2,158],"27":[2,158],"48":[1,105],"56":[2,158],"58":[2,158],"73":[2,158],"75":[2,158],"78":[2,158],"88":[2,158],"92":[2,158],"100":[2,158],"102":118,"103":[2,158],"104":[2,158],"105":[2,158],"108":[2,158],"110":[2,158],"117":[2,158],"120":[2,158],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,158],"144":[2,158],"145":[2,158],"146":[2,158],"147":[2,158],"148":[2,158],"149":[2,158],"150":[2,158],"151":[2,158],"152":[2,158],"153":[2,158],"154":[2,158],"155":[1,114]},{"1":[2,159],"3":[2,159],"26":[2,159],"27":[2,159],"48":[1,105],"56":[2,159],"58":[2,159],"73":[2,159],"75":[2,159],"78":[2,159],"88":[2,159],"92":[2,159],"100":[2,159],"102":118,"103":[2,159],"104":[2,159],"105":[2,159],"108":[2,159],"110":[2,159],"117":[2,159],"120":[2,159],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,159],"144":[2,159],"145":[2,159],"146":[2,159],"147":[2,159],"148":[2,159],"149":[2,159],"150":[2,159],"151":[2,159],"152":[2,159],"153":[2,159],"154":[2,159],"155":[1,114]},{"95":230,"96":[1,231],"97":[1,232]},{"1":[2,121],"3":[2,121],"26":[2,121],"27":[2,121],"48":[1,105],"56":[2,121],"58":[1,120],"73":[2,121],"75":[2,121],"78":[2,121],"88":[2,121],"92":[2,121],"100":[2,121],"102":118,"103":[2,121],"104":[2,121],"105":[2,121],"108":[1,115],"110":[2,121],"117":[2,121],"120":[2,121],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,48],"3":[2,48],"26":[2,48],"27":[2,48],"48":[1,105],"56":[2,48],"58":[1,120],"73":[2,48],"75":[2,48],"78":[2,48],"88":[2,48],"92":[2,48],"100":[2,48],"102":118,"103":[2,48],"104":[2,48],"105":[1,119],"108":[1,115],"110":[2,48],"117":[2,48],"120":[2,48],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,126],"3":[2,126],"26":[2,126],"27":[2,126],"48":[2,126],"56":[2,126],"58":[2,126],"73":[2,126],"75":[2,126],"78":[2,126],"88":[2,126],"92":[2,126],"100":[2,126],"103":[2,126],"104":[2,126],"105":[2,126],"108":[2,126],"110":[2,126],"117":[2,126],"120":[2,126],"123":[2,126],"124":[2,126],"126":[2,126],"127":[2,126],"130":[2,126],"131":[2,126],"132":[2,126],"133":[2,126],"134":[2,126],"135":[2,126],"136":[2,126],"137":[2,126],"138":[2,126],"139":[2,126],"140":[2,126],"141":[2,126],"142":[2,126],"143":[2,126],"144":[2,126],"145":[2,126],"146":[2,126],"147":[2,126],"148":[2,126],"149":[2,126],"150":[2,126],"151":[2,126],"152":[2,126],"153":[2,126],"154":[2,126],"155":[2,126]},{"107":233,"108":[1,234],"109":[1,235]},{"56":[1,236],"108":[2,130],"109":[2,130]},{"26":[1,237],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,81],"3":[2,81],"26":[1,170],"27":[2,81],"48":[2,81],"56":[2,81],"58":[2,81],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,81],"74":[1,136],"75":[2,81],"78":[2,81],"79":239,"81":[1,238],"85":127,"86":[1,134],"88":[2,81],"92":[2,81],"100":[2,81],"103":[2,81],"104":[2,81],"105":[2,81],"108":[2,81],"110":[2,81],"117":[2,81],"120":[2,81],"123":[2,81],"124":[2,81],"126":[2,81],"127":[2,81],"130":[2,81],"131":[2,81],"132":[2,81],"133":[2,81],"134":[2,81],"135":[2,81],"136":[2,81],"137":[2,81],"138":[2,81],"139":[2,81],"140":[2,81],"141":[2,81],"142":[2,81],"143":[2,81],"144":[2,81],"145":[2,81],"146":[2,81],"147":[2,81],"148":[2,81],"149":[2,81],"150":[2,81],"151":[2,81],"152":[2,81],"153":[2,81],"154":[2,81],"155":[2,81]},{"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"74":[1,136],"85":138,"86":[1,134]},{"3":[1,242],"27":[1,243],"56":[1,241],"92":[1,240]},{"3":[2,108],"27":[2,108],"48":[1,105],"56":[2,108],"58":[1,244],"92":[2,108],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":245,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,248],"56":[1,247],"78":[1,246]},{"78":[1,249]},{"3":[2,86],"27":[2,86],"56":[2,86],"78":[2,86]},{"3":[2,85],"24":173,"27":[2,85],"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":169,"47":[1,55],"56":[2,85],"77":250},{"44":[1,251]},{"44":[1,252]},{"3":[2,47],"27":[2,47],"56":[2,47],"78":[2,47]},{"48":[1,105],"58":[1,120],"100":[1,253],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,101],"3":[2,101],"26":[2,101],"27":[2,101],"44":[2,101],"48":[2,101],"56":[2,101],"58":[2,101],"66":[2,101],"67":[2,101],"68":[2,101],"69":[2,101],"72":[2,101],"73":[2,101],"74":[2,101],"75":[2,101],"78":[2,101],"81":[2,101],"84":[2,101],"86":[2,101],"88":[2,101],"92":[2,101],"100":[2,101],"103":[2,101],"104":[2,101],"105":[2,101],"108":[2,101],"110":[2,101],"117":[2,101],"120":[2,101],"123":[2,101],"124":[2,101],"126":[2,101],"127":[2,101],"130":[2,101],"131":[2,101],"132":[2,101],"133":[2,101],"134":[2,101],"135":[2,101],"136":[2,101],"137":[2,101],"138":[2,101],"139":[2,101],"140":[2,101],"141":[2,101],"142":[2,101],"143":[2,101],"144":[2,101],"145":[2,101],"146":[2,101],"147":[2,101],"148":[2,101],"149":[2,101],"150":[2,101],"151":[2,101],"152":[2,101],"153":[2,101],"154":[2,101],"155":[2,101]},{"3":[2,107],"6":224,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":254,"88":[2,107],"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,145],"5":255,"26":[1,6],"117":[1,256]},{"1":[2,144],"3":[2,144],"26":[2,144],"27":[2,144],"48":[2,144],"56":[2,144],"58":[2,144],"73":[2,144],"75":[2,144],"78":[2,144],"88":[2,144],"92":[2,144],"100":[2,144],"103":[2,144],"104":[2,144],"105":[2,144],"108":[2,144],"110":[2,144],"113":[2,144],"117":[2,144],"120":[2,144],"123":[2,144],"124":[2,144],"126":[2,144],"127":[2,144],"130":[2,144],"131":[2,144],"132":[2,144],"133":[2,144],"134":[2,144],"135":[2,144],"136":[2,144],"137":[2,144],"138":[2,144],"139":[2,144],"140":[2,144],"141":[2,144],"142":[2,144],"143":[2,144],"144":[2,144],"145":[2,144],"146":[2,144],"147":[2,144],"148":[2,144],"149":[2,144],"150":[2,144],"151":[2,144],"152":[2,144],"153":[2,144],"154":[2,144],"155":[2,144]},{"1":[2,124],"3":[2,124],"26":[2,124],"27":[2,124],"48":[1,105],"56":[2,124],"58":[1,120],"73":[2,124],"75":[2,124],"78":[2,124],"88":[2,124],"92":[2,124],"100":[2,124],"102":118,"103":[1,77],"104":[1,257],"105":[1,119],"108":[1,115],"110":[2,124],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[1,145],"5":258,"26":[1,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,6],"3":[2,6],"27":[2,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,162],"3":[2,162],"26":[2,162],"27":[2,162],"48":[1,105],"56":[2,162],"58":[2,162],"73":[2,162],"75":[2,162],"78":[2,162],"88":[2,162],"92":[2,162],"100":[2,162],"102":118,"103":[2,162],"104":[2,162],"105":[2,162],"108":[2,162],"110":[2,162],"117":[2,162],"120":[2,162],"123":[2,162],"124":[2,162],"126":[1,84],"127":[1,85],"130":[2,162],"131":[2,162],"132":[2,162],"133":[2,162],"134":[2,162],"135":[2,162],"136":[2,162],"137":[2,162],"138":[2,162],"139":[2,162],"140":[2,162],"141":[2,162],"142":[2,162],"143":[2,162],"144":[2,162],"145":[2,162],"146":[2,162],"147":[2,162],"148":[2,162],"149":[2,162],"150":[2,162],"151":[2,162],"152":[2,162],"153":[2,162],"154":[2,162],"155":[2,162]},{"1":[2,163],"3":[2,163],"26":[2,163],"27":[2,163],"48":[1,105],"56":[2,163],"58":[2,163],"73":[2,163],"75":[2,163],"78":[2,163],"88":[2,163],"92":[2,163],"100":[2,163],"102":118,"103":[2,163],"104":[2,163],"105":[2,163],"108":[2,163],"110":[2,163],"117":[2,163],"120":[2,163],"123":[2,163],"124":[2,163],"126":[1,84],"127":[1,85],"130":[2,163],"131":[2,163],"132":[2,163],"133":[2,163],"134":[2,163],"135":[2,163],"136":[2,163],"137":[2,163],"138":[2,163],"139":[2,163],"140":[2,163],"141":[2,163],"142":[2,163],"143":[2,163],"144":[2,163],"145":[2,163],"146":[2,163],"147":[2,163],"148":[2,163],"149":[2,163],"150":[2,163],"151":[2,163],"152":[2,163],"153":[2,163],"154":[2,163],"155":[2,163]},{"1":[2,164],"3":[2,164],"26":[2,164],"27":[2,164],"48":[1,105],"56":[2,164],"58":[2,164],"73":[2,164],"75":[2,164],"78":[2,164],"88":[2,164],"92":[2,164],"100":[2,164],"102":118,"103":[2,164],"104":[2,164],"105":[2,164],"108":[2,164],"110":[2,164],"117":[2,164],"120":[2,164],"123":[2,164],"124":[2,164],"126":[1,84],"127":[1,85],"130":[2,164],"131":[2,164],"132":[2,164],"133":[2,164],"134":[2,164],"135":[2,164],"136":[2,164],"137":[2,164],"138":[2,164],"139":[2,164],"140":[2,164],"141":[2,164],"142":[2,164],"143":[2,164],"144":[2,164],"145":[2,164],"146":[2,164],"147":[2,164],"148":[2,164],"149":[2,164],"150":[2,164],"151":[2,164],"152":[2,164],"153":[2,164],"154":[2,164],"155":[2,164]},{"1":[2,165],"3":[2,165],"26":[2,165],"27":[2,165],"48":[1,105],"56":[2,165],"58":[2,165],"73":[2,165],"75":[2,165],"78":[2,165],"88":[2,165],"92":[2,165],"100":[2,165],"102":118,"103":[2,165],"104":[2,165],"105":[2,165],"108":[2,165],"110":[2,165],"117":[2,165],"120":[2,165],"123":[2,165],"124":[2,165],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,165],"134":[2,165],"135":[2,165],"136":[2,165],"137":[2,165],"138":[2,165],"139":[2,165],"140":[2,165],"141":[2,165],"142":[2,165],"143":[2,165],"144":[2,165],"145":[2,165],"146":[2,165],"147":[2,165],"148":[2,165],"149":[2,165],"150":[2,165],"151":[2,165],"152":[2,165],"153":[2,165],"154":[2,165],"155":[2,165]},{"1":[2,166],"3":[2,166],"26":[2,166],"27":[2,166],"48":[1,105],"56":[2,166],"58":[2,166],"73":[2,166],"75":[2,166],"78":[2,166],"88":[2,166],"92":[2,166],"100":[2,166],"102":118,"103":[2,166],"104":[2,166],"105":[2,166],"108":[2,166],"110":[2,166],"117":[2,166],"120":[2,166],"123":[2,166],"124":[2,166],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,166],"134":[2,166],"135":[2,166],"136":[2,166],"137":[2,166],"138":[2,166],"139":[2,166],"140":[2,166],"141":[2,166],"142":[2,166],"143":[2,166],"144":[2,166],"145":[2,166],"146":[2,166],"147":[2,166],"148":[2,166],"149":[2,166],"150":[2,166],"151":[2,166],"152":[2,166],"153":[2,166],"154":[2,166],"155":[2,166]},{"1":[2,167],"3":[2,167],"26":[2,167],"27":[2,167],"48":[1,105],"56":[2,167],"58":[2,167],"73":[2,167],"75":[2,167],"78":[2,167],"88":[2,167],"92":[2,167],"100":[2,167],"102":118,"103":[2,167],"104":[2,167],"105":[2,167],"108":[2,167],"110":[2,167],"117":[2,167],"120":[2,167],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,167],"134":[2,167],"135":[2,167],"136":[2,167],"137":[2,167],"138":[2,167],"139":[2,167],"140":[2,167],"141":[2,167],"142":[2,167],"143":[2,167],"144":[2,167],"145":[2,167],"146":[2,167],"147":[2,167],"148":[2,167],"149":[2,167],"150":[2,167],"151":[2,167],"152":[2,167],"153":[2,167],"154":[2,167],"155":[2,167]},{"1":[2,168],"3":[2,168],"26":[2,168],"27":[2,168],"48":[1,105],"56":[2,168],"58":[2,168],"73":[2,168],"75":[2,168],"78":[2,168],"88":[2,168],"92":[2,168],"100":[2,168],"102":118,"103":[2,168],"104":[2,168],"105":[2,168],"108":[2,168],"110":[2,168],"117":[2,168],"120":[2,168],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,168],"134":[2,168],"135":[2,168],"136":[2,168],"137":[2,168],"138":[2,168],"139":[2,168],"140":[2,168],"141":[2,168],"142":[2,168],"143":[2,168],"144":[2,168],"145":[2,168],"146":[2,168],"147":[2,168],"148":[2,168],"149":[2,168],"150":[2,168],"151":[2,168],"152":[2,168],"153":[2,168],"154":[2,168],"155":[2,168]},{"1":[2,169],"3":[2,169],"26":[2,169],"27":[2,169],"48":[1,105],"56":[2,169],"58":[2,169],"73":[2,169],"75":[2,169],"78":[2,169],"88":[2,169],"92":[2,169],"100":[2,169],"102":118,"103":[2,169],"104":[2,169],"105":[2,169],"108":[2,169],"110":[2,169],"117":[2,169],"120":[2,169],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,169],"134":[2,169],"135":[2,169],"136":[2,169],"137":[2,169],"138":[2,169],"139":[2,169],"140":[2,169],"141":[2,169],"142":[2,169],"143":[2,169],"144":[2,169],"145":[2,169],"146":[2,169],"147":[2,169],"148":[2,169],"149":[2,169],"150":[2,169],"151":[2,169],"152":[2,169],"153":[2,169],"154":[2,169],"155":[2,169]},{"1":[2,170],"3":[2,170],"26":[2,170],"27":[2,170],"48":[1,105],"56":[2,170],"58":[2,170],"73":[2,170],"75":[2,170],"78":[2,170],"88":[2,170],"92":[2,170],"100":[2,170],"102":118,"103":[2,170],"104":[2,170],"105":[2,170],"108":[2,170],"110":[2,170],"117":[2,170],"120":[2,170],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,170],"137":[2,170],"138":[2,170],"139":[2,170],"140":[2,170],"141":[2,170],"142":[2,170],"143":[2,170],"144":[2,170],"145":[2,170],"146":[2,170],"147":[2,170],"148":[2,170],"149":[2,170],"150":[2,170],"151":[2,170],"152":[2,170],"153":[2,170],"154":[2,170],"155":[2,170]},{"1":[2,171],"3":[2,171],"26":[2,171],"27":[2,171],"48":[1,105],"56":[2,171],"58":[2,171],"73":[2,171],"75":[2,171],"78":[2,171],"88":[2,171],"92":[2,171],"100":[2,171],"102":118,"103":[2,171],"104":[2,171],"105":[2,171],"108":[2,171],"110":[2,171],"117":[2,171],"120":[2,171],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,171],"137":[2,171],"138":[2,171],"139":[2,171],"140":[2,171],"141":[2,171],"142":[2,171],"143":[2,171],"144":[2,171],"145":[2,171],"146":[2,171],"147":[2,171],"148":[2,171],"149":[2,171],"150":[2,171],"151":[2,171],"152":[2,171],"153":[2,171],"154":[2,171],"155":[2,171]},{"1":[2,172],"3":[2,172],"26":[2,172],"27":[2,172],"48":[1,105],"56":[2,172],"58":[2,172],"73":[2,172],"75":[2,172],"78":[2,172],"88":[2,172],"92":[2,172],"100":[2,172],"102":118,"103":[2,172],"104":[2,172],"105":[2,172],"108":[2,172],"110":[2,172],"117":[2,172],"120":[2,172],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,172],"137":[2,172],"138":[2,172],"139":[2,172],"140":[2,172],"141":[2,172],"142":[2,172],"143":[2,172],"144":[2,172],"145":[2,172],"146":[2,172],"147":[2,172],"148":[2,172],"149":[2,172],"150":[2,172],"151":[2,172],"152":[2,172],"153":[2,172],"154":[2,172],"155":[2,172]},{"1":[2,173],"3":[2,173],"26":[2,173],"27":[2,173],"48":[1,105],"56":[2,173],"58":[2,173],"73":[2,173],"75":[2,173],"78":[2,173],"88":[2,173],"92":[2,173],"100":[2,173],"102":118,"103":[2,173],"104":[2,173],"105":[2,173],"108":[2,173],"110":[2,173],"117":[2,173],"120":[2,173],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,173],"140":[2,173],"141":[2,173],"142":[2,173],"143":[2,173],"144":[2,173],"145":[2,173],"146":[2,173],"147":[2,173],"148":[2,173],"149":[2,173],"150":[2,173],"151":[2,173],"152":[2,173],"153":[2,173],"154":[2,173],"155":[2,173]},{"1":[2,174],"3":[2,174],"26":[2,174],"27":[2,174],"48":[1,105],"56":[2,174],"58":[2,174],"73":[2,174],"75":[2,174],"78":[2,174],"88":[2,174],"92":[2,174],"100":[2,174],"102":118,"103":[2,174],"104":[2,174],"105":[2,174],"108":[2,174],"110":[2,174],"117":[2,174],"120":[2,174],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,174],"140":[2,174],"141":[2,174],"142":[2,174],"143":[2,174],"144":[2,174],"145":[2,174],"146":[2,174],"147":[2,174],"148":[2,174],"149":[2,174],"150":[2,174],"151":[2,174],"152":[2,174],"153":[2,174],"154":[2,174],"155":[2,174]},{"1":[2,175],"3":[2,175],"26":[2,175],"27":[2,175],"48":[1,105],"56":[2,175],"58":[2,175],"73":[2,175],"75":[2,175],"78":[2,175],"88":[2,175],"92":[2,175],"100":[2,175],"102":118,"103":[2,175],"104":[2,175],"105":[2,175],"108":[2,175],"110":[2,175],"117":[2,175],"120":[2,175],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,175],"140":[2,175],"141":[2,175],"142":[2,175],"143":[2,175],"144":[2,175],"145":[2,175],"146":[2,175],"147":[2,175],"148":[2,175],"149":[2,175],"150":[2,175],"151":[2,175],"152":[2,175],"153":[2,175],"154":[2,175],"155":[2,175]},{"1":[2,176],"3":[2,176],"26":[2,176],"27":[2,176],"48":[1,105],"56":[2,176],"58":[2,176],"73":[2,176],"75":[2,176],"78":[2,176],"88":[2,176],"92":[2,176],"100":[2,176],"102":118,"103":[2,176],"104":[2,176],"105":[2,176],"108":[2,176],"110":[2,176],"117":[2,176],"120":[2,176],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,176],"140":[2,176],"141":[2,176],"142":[2,176],"143":[2,176],"144":[2,176],"145":[2,176],"146":[2,176],"147":[2,176],"148":[2,176],"149":[2,176],"150":[2,176],"151":[2,176],"152":[2,176],"153":[2,176],"154":[2,176],"155":[2,176]},{"1":[2,177],"3":[2,177],"26":[2,177],"27":[2,177],"48":[1,105],"56":[2,177],"58":[2,177],"73":[2,177],"75":[2,177],"78":[2,177],"88":[2,177],"92":[2,177],"100":[2,177],"102":118,"103":[2,177],"104":[2,177],"105":[2,177],"108":[2,177],"110":[2,177],"117":[2,177],"120":[2,177],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,177],"144":[2,177],"145":[2,177],"146":[2,177],"147":[2,177],"148":[2,177],"149":[2,177],"150":[2,177],"151":[2,177],"152":[2,177],"153":[2,177],"154":[2,177],"155":[1,114]},{"1":[2,178],"3":[2,178],"26":[2,178],"27":[2,178],"48":[1,105],"56":[2,178],"58":[2,178],"73":[2,178],"75":[2,178],"78":[2,178],"88":[2,178],"92":[2,178],"100":[2,178],"102":118,"103":[2,178],"104":[2,178],"105":[2,178],"108":[2,178],"110":[2,178],"117":[2,178],"120":[2,178],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,178],"144":[2,178],"145":[2,178],"146":[2,178],"147":[2,178],"148":[2,178],"149":[2,178],"150":[2,178],"151":[2,178],"152":[2,178],"153":[2,178],"154":[2,178],"155":[1,114]},{"1":[2,179],"3":[2,179],"26":[2,179],"27":[2,179],"48":[1,105],"56":[2,179],"58":[2,179],"73":[2,179],"75":[2,179],"78":[2,179],"88":[2,179],"92":[2,179],"100":[2,179],"102":118,"103":[2,179],"104":[2,179],"105":[2,179],"108":[2,179],"110":[2,179],"117":[2,179],"120":[2,179],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[2,179],"146":[2,179],"147":[2,179],"148":[2,179],"149":[2,179],"150":[2,179],"151":[2,179],"152":[2,179],"153":[2,179],"154":[2,179],"155":[1,114]},{"1":[2,180],"3":[2,180],"26":[2,180],"27":[2,180],"48":[1,105],"56":[2,180],"58":[2,180],"73":[2,180],"75":[2,180],"78":[2,180],"88":[2,180],"92":[2,180],"100":[2,180],"102":118,"103":[2,180],"104":[2,180],"105":[2,180],"108":[2,180],"110":[2,180],"117":[2,180],"120":[2,180],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[2,180],"146":[2,180],"147":[2,180],"148":[2,180],"149":[2,180],"150":[2,180],"151":[2,180],"152":[2,180],"153":[2,180],"154":[2,180],"155":[1,114]},{"1":[2,181],"3":[2,181],"26":[2,181],"27":[2,181],"48":[2,181],"56":[2,181],"58":[2,181],"73":[2,181],"75":[2,181],"78":[2,181],"88":[2,181],"92":[2,181],"100":[2,181],"102":118,"103":[2,181],"104":[2,181],"105":[2,181],"108":[2,181],"110":[2,181],"117":[2,181],"120":[2,181],"123":[2,181],"124":[2,181],"126":[2,181],"127":[2,181],"130":[2,181],"131":[2,181],"132":[2,181],"133":[2,181],"134":[2,181],"135":[2,181],"136":[2,181],"137":[2,181],"138":[2,181],"139":[2,181],"140":[2,181],"141":[2,181],"142":[2,181],"143":[2,181],"144":[2,181],"145":[2,181],"146":[2,181],"147":[2,181],"148":[2,181],"149":[2,181],"150":[2,181],"151":[2,181],"152":[2,181],"153":[2,181],"154":[2,181],"155":[2,181]},{"1":[2,182],"3":[2,182],"26":[2,182],"27":[2,182],"48":[1,105],"56":[2,182],"58":[2,182],"73":[2,182],"75":[2,182],"78":[2,182],"88":[2,182],"92":[2,182],"100":[2,182],"102":118,"103":[2,182],"104":[2,182],"105":[2,182],"108":[2,182],"110":[2,182],"117":[2,182],"120":[2,182],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,183],"3":[2,183],"26":[2,183],"27":[2,183],"48":[1,105],"56":[2,183],"58":[2,183],"73":[2,183],"75":[2,183],"78":[2,183],"88":[2,183],"92":[2,183],"100":[2,183],"102":118,"103":[2,183],"104":[2,183],"105":[2,183],"108":[2,183],"110":[2,183],"117":[2,183],"120":[2,183],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,184],"3":[2,184],"26":[2,184],"27":[2,184],"48":[1,105],"56":[2,184],"58":[2,184],"73":[2,184],"75":[2,184],"78":[2,184],"88":[2,184],"92":[2,184],"100":[2,184],"102":118,"103":[2,184],"104":[2,184],"105":[2,184],"108":[2,184],"110":[2,184],"117":[2,184],"120":[2,184],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,185],"3":[2,185],"26":[2,185],"27":[2,185],"48":[1,105],"56":[2,185],"58":[2,185],"73":[2,185],"75":[2,185],"78":[2,185],"88":[2,185],"92":[2,185],"100":[2,185],"102":118,"103":[2,185],"104":[2,185],"105":[2,185],"108":[2,185],"110":[2,185],"117":[2,185],"120":[2,185],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,186],"3":[2,186],"26":[2,186],"27":[2,186],"48":[1,105],"56":[2,186],"58":[2,186],"73":[2,186],"75":[2,186],"78":[2,186],"88":[2,186],"92":[2,186],"100":[2,186],"102":118,"103":[2,186],"104":[2,186],"105":[2,186],"108":[2,186],"110":[2,186],"117":[2,186],"120":[2,186],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,187],"3":[2,187],"26":[2,187],"27":[2,187],"48":[1,105],"56":[2,187],"58":[2,187],"73":[2,187],"75":[2,187],"78":[2,187],"88":[2,187],"92":[2,187],"100":[2,187],"102":118,"103":[2,187],"104":[2,187],"105":[2,187],"108":[2,187],"110":[2,187],"117":[2,187],"120":[2,187],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,188],"3":[2,188],"26":[2,188],"27":[2,188],"48":[1,105],"56":[2,188],"58":[2,188],"73":[2,188],"75":[2,188],"78":[2,188],"88":[2,188],"92":[2,188],"100":[2,188],"102":118,"103":[2,188],"104":[2,188],"105":[2,188],"108":[2,188],"110":[2,188],"117":[2,188],"120":[2,188],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,189],"3":[2,189],"26":[2,189],"27":[2,189],"48":[1,105],"56":[2,189],"58":[2,189],"73":[2,189],"75":[2,189],"78":[2,189],"88":[2,189],"92":[2,189],"100":[2,189],"102":118,"103":[2,189],"104":[2,189],"105":[2,189],"108":[2,189],"110":[2,189],"117":[2,189],"120":[2,189],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,190],"3":[2,190],"26":[2,190],"27":[2,190],"48":[1,105],"56":[2,190],"58":[2,190],"73":[2,190],"75":[2,190],"78":[2,190],"88":[2,190],"92":[2,190],"100":[2,190],"102":118,"103":[2,190],"104":[2,190],"105":[2,190],"108":[2,190],"110":[2,190],"117":[2,190],"120":[2,190],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,190],"144":[2,190],"145":[2,190],"146":[2,190],"147":[2,190],"148":[2,190],"149":[2,190],"150":[2,190],"151":[2,190],"152":[2,190],"153":[2,190],"154":[2,190],"155":[1,114]},{"1":[2,191],"3":[2,191],"26":[2,191],"27":[2,191],"48":[1,105],"56":[2,191],"58":[1,120],"73":[2,191],"75":[2,191],"78":[2,191],"88":[2,191],"92":[2,191],"100":[2,191],"102":118,"103":[2,191],"104":[2,191],"105":[2,191],"108":[1,115],"110":[2,191],"117":[2,191],"120":[2,191],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,149],"3":[2,149],"26":[2,149],"27":[2,149],"48":[1,105],"56":[2,149],"58":[1,120],"73":[2,149],"75":[2,149],"78":[2,149],"88":[2,149],"92":[2,149],"100":[2,149],"102":118,"103":[1,77],"104":[2,149],"105":[1,119],"108":[1,115],"110":[2,149],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,150],"3":[2,150],"26":[2,150],"27":[2,150],"48":[1,105],"56":[2,150],"58":[1,120],"73":[2,150],"75":[2,150],"78":[2,150],"88":[2,150],"92":[2,150],"100":[2,150],"102":118,"103":[1,77],"104":[2,150],"105":[1,119],"108":[1,115],"110":[2,150],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"107":259,"108":[1,234],"109":[1,235]},{"58":[1,260]},{"1":[2,27],"3":[2,27],"26":[2,27],"27":[2,27],"47":[2,27],"48":[2,27],"56":[2,27],"58":[2,27],"73":[2,27],"75":[2,27],"78":[2,27],"88":[2,27],"92":[2,27],"96":[2,27],"97":[2,27],"100":[2,27],"103":[2,27],"104":[2,27],"105":[2,27],"108":[2,27],"110":[2,27],"113":[2,27],"115":[2,27],"117":[2,27],"120":[2,27],"123":[2,27],"124":[2,27],"126":[2,27],"127":[2,27],"130":[2,27],"131":[2,27],"132":[2,27],"133":[2,27],"134":[2,27],"135":[2,27],"136":[2,27],"137":[2,27],"138":[2,27],"139":[2,27],"140":[2,27],"141":[2,27],"142":[2,27],"143":[2,27],"144":[2,27],"145":[2,27],"146":[2,27],"147":[2,27],"148":[2,27],"149":[2,27],"150":[2,27],"151":[2,27],"152":[2,27],"153":[2,27],"154":[2,27],"155":[2,27]},{"1":[2,94],"3":[2,94],"26":[2,94],"27":[2,94],"48":[2,94],"56":[2,94],"58":[2,94],"73":[2,94],"75":[2,94],"78":[2,94],"88":[2,94],"92":[2,94],"100":[2,94],"103":[2,94],"104":[2,94],"105":[2,94],"108":[2,94],"110":[2,94],"117":[2,94],"120":[2,94],"123":[2,94],"124":[2,94],"126":[2,94],"127":[2,94],"130":[2,94],"131":[2,94],"132":[2,94],"133":[2,94],"134":[2,94],"135":[2,94],"136":[2,94],"137":[2,94],"138":[2,94],"139":[2,94],"140":[2,94],"141":[2,94],"142":[2,94],"143":[2,94],"144":[2,94],"145":[2,94],"146":[2,94],"147":[2,94],"148":[2,94],"149":[2,94],"150":[2,94],"151":[2,94],"152":[2,94],"153":[2,94],"154":[2,94],"155":[2,94]},{"1":[2,44],"3":[2,44],"26":[2,44],"27":[2,44],"48":[1,105],"56":[2,44],"58":[1,120],"73":[2,44],"75":[2,44],"78":[2,44],"88":[2,44],"92":[2,44],"100":[2,44],"102":118,"103":[2,44],"104":[2,44],"105":[1,119],"108":[1,115],"110":[2,44],"117":[2,44],"120":[2,44],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,95],"3":[2,95],"26":[2,95],"27":[2,95],"48":[2,95],"56":[2,95],"58":[2,95],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,95],"74":[1,136],"75":[2,95],"78":[2,95],"85":127,"86":[1,134],"88":[2,95],"92":[2,95],"100":[2,95],"103":[2,95],"104":[2,95],"105":[2,95],"108":[2,95],"110":[2,95],"117":[2,95],"120":[2,95],"123":[2,95],"124":[2,95],"126":[2,95],"127":[2,95],"130":[2,95],"131":[2,95],"132":[2,95],"133":[2,95],"134":[2,95],"135":[2,95],"136":[2,95],"137":[2,95],"138":[2,95],"139":[2,95],"140":[2,95],"141":[2,95],"142":[2,95],"143":[2,95],"144":[2,95],"145":[2,95],"146":[2,95],"147":[2,95],"148":[2,95],"149":[2,95],"150":[2,95],"151":[2,95],"152":[2,95],"153":[2,95],"154":[2,95],"155":[2,95]},{"1":[2,71],"3":[2,71],"26":[2,71],"27":[2,71],"44":[2,71],"48":[2,71],"56":[2,71],"58":[2,71],"66":[2,71],"67":[2,71],"68":[2,71],"69":[2,71],"72":[2,71],"73":[2,71],"74":[2,71],"75":[2,71],"78":[2,71],"81":[2,71],"84":[2,71],"86":[2,71],"88":[2,71],"92":[2,71],"100":[2,71],"103":[2,71],"104":[2,71],"105":[2,71],"108":[2,71],"110":[2,71],"117":[2,71],"120":[2,71],"123":[2,71],"124":[2,71],"126":[2,71],"127":[2,71],"130":[2,71],"131":[2,71],"132":[2,71],"133":[2,71],"134":[2,71],"135":[2,71],"136":[2,71],"137":[2,71],"138":[2,71],"139":[2,71],"140":[2,71],"141":[2,71],"142":[2,71],"143":[2,71],"144":[2,71],"145":[2,71],"146":[2,71],"147":[2,71],"148":[2,71],"149":[2,71],"150":[2,71],"151":[2,71],"152":[2,71],"153":[2,71],"154":[2,71],"155":[2,71]},{"1":[2,72],"3":[2,72],"26":[2,72],"27":[2,72],"44":[2,72],"48":[2,72],"56":[2,72],"58":[2,72],"66":[2,72],"67":[2,72],"68":[2,72],"69":[2,72],"72":[2,72],"73":[2,72],"74":[2,72],"75":[2,72],"78":[2,72],"81":[2,72],"84":[2,72],"86":[2,72],"88":[2,72],"92":[2,72],"100":[2,72],"103":[2,72],"104":[2,72],"105":[2,72],"108":[2,72],"110":[2,72],"117":[2,72],"120":[2,72],"123":[2,72],"124":[2,72],"126":[2,72],"127":[2,72],"130":[2,72],"131":[2,72],"132":[2,72],"133":[2,72],"134":[2,72],"135":[2,72],"136":[2,72],"137":[2,72],"138":[2,72],"139":[2,72],"140":[2,72],"141":[2,72],"142":[2,72],"143":[2,72],"144":[2,72],"145":[2,72],"146":[2,72],"147":[2,72],"148":[2,72],"149":[2,72],"150":[2,72],"151":[2,72],"152":[2,72],"153":[2,72],"154":[2,72],"155":[2,72]},{"1":[2,74],"3":[2,74],"26":[2,74],"27":[2,74],"44":[2,74],"48":[2,74],"56":[2,74],"58":[2,74],"66":[2,74],"67":[2,74],"68":[2,74],"69":[2,74],"72":[2,74],"73":[2,74],"74":[2,74],"75":[2,74],"78":[2,74],"81":[2,74],"84":[2,74],"86":[2,74],"88":[2,74],"92":[2,74],"100":[2,74],"103":[2,74],"104":[2,74],"105":[2,74],"108":[2,74],"110":[2,74],"117":[2,74],"120":[2,74],"123":[2,74],"124":[2,74],"126":[2,74],"127":[2,74],"130":[2,74],"131":[2,74],"132":[2,74],"133":[2,74],"134":[2,74],"135":[2,74],"136":[2,74],"137":[2,74],"138":[2,74],"139":[2,74],"140":[2,74],"141":[2,74],"142":[2,74],"143":[2,74],"144":[2,74],"145":[2,74],"146":[2,74],"147":[2,74],"148":[2,74],"149":[2,74],"150":[2,74],"151":[2,74],"152":[2,74],"153":[2,74],"154":[2,74],"155":[2,74]},{"3":[1,242],"27":[1,243],"56":[1,241],"88":[1,261]},{"3":[2,108],"27":[2,108],"48":[1,105],"56":[2,108],"58":[1,120],"88":[2,108],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,263],"73":[1,262],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,120],"75":[1,264],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"52":265,"53":[1,74],"54":[1,75]},{"55":266,"57":[1,143]},{"58":[1,267]},{"1":[2,117],"3":[2,117],"26":[2,117],"27":[2,117],"48":[2,117],"56":[2,117],"58":[2,117],"73":[2,117],"75":[2,117],"78":[2,117],"88":[2,117],"92":[2,117],"96":[1,268],"100":[2,117],"103":[2,117],"104":[2,117],"105":[2,117],"108":[2,117],"110":[2,117],"117":[2,117],"120":[2,117],"123":[2,117],"124":[2,117],"126":[2,117],"127":[2,117],"130":[2,117],"131":[2,117],"132":[2,117],"133":[2,117],"134":[2,117],"135":[2,117],"136":[2,117],"137":[2,117],"138":[2,117],"139":[2,117],"140":[2,117],"141":[2,117],"142":[2,117],"143":[2,117],"144":[2,117],"145":[2,117],"146":[2,117],"147":[2,117],"148":[2,117],"149":[2,117],"150":[2,117],"151":[2,117],"152":[2,117],"153":[2,117],"154":[2,117],"155":[2,117]},{"3":[1,145],"5":269,"26":[1,6]},{"28":270,"29":[1,57]},{"3":[1,145],"5":271,"26":[1,6],"104":[1,272],"110":[1,273]},{"6":274,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":275,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"28":276,"29":[1,57]},{"24":280,"47":[1,55],"112":277,"114":278,"115":[1,279]},{"7":281,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,83],"3":[2,83],"26":[2,83],"27":[2,83],"48":[2,83],"56":[2,83],"58":[2,83],"73":[2,83],"75":[2,83],"78":[2,83],"88":[2,83],"92":[2,83],"100":[2,83],"103":[2,83],"104":[2,83],"105":[2,83],"108":[2,83],"110":[2,83],"117":[2,83],"120":[2,83],"123":[2,83],"124":[2,83],"126":[2,83],"127":[2,83],"130":[2,83],"131":[2,83],"132":[2,83],"133":[2,83],"134":[2,83],"135":[2,83],"136":[2,83],"137":[2,83],"138":[2,83],"139":[2,83],"140":[2,83],"141":[2,83],"142":[2,83],"143":[2,83],"144":[2,83],"145":[2,83],"146":[2,83],"147":[2,83],"148":[2,83],"149":[2,83],"150":[2,83],"151":[2,83],"152":[2,83],"153":[2,83],"154":[2,83],"155":[2,83]},{"1":[2,106],"3":[2,106],"26":[2,106],"27":[2,106],"44":[2,106],"48":[2,106],"56":[2,106],"58":[2,106],"66":[2,106],"67":[2,106],"68":[2,106],"69":[2,106],"72":[2,106],"73":[2,106],"74":[2,106],"75":[2,106],"78":[2,106],"81":[2,106],"84":[2,106],"86":[2,106],"88":[2,106],"92":[2,106],"100":[2,106],"103":[2,106],"104":[2,106],"105":[2,106],"108":[2,106],"110":[2,106],"117":[2,106],"120":[2,106],"123":[2,106],"124":[2,106],"126":[2,106],"127":[2,106],"130":[2,106],"131":[2,106],"132":[2,106],"133":[2,106],"134":[2,106],"135":[2,106],"136":[2,106],"137":[2,106],"138":[2,106],"139":[2,106],"140":[2,106],"141":[2,106],"142":[2,106],"143":[2,106],"144":[2,106],"145":[2,106],"146":[2,106],"147":[2,106],"148":[2,106],"149":[2,106],"150":[2,106],"151":[2,106],"152":[2,106],"153":[2,106],"154":[2,106],"155":[2,106]},{"3":[1,283],"6":282,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,284],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":285,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,114],"27":[2,114],"56":[2,114],"88":[2,114],"92":[2,114]},{"58":[1,286]},{"3":[2,109],"27":[2,109],"48":[1,105],"56":[2,109],"58":[1,120],"88":[2,109],"92":[2,109],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,79],"3":[2,79],"26":[2,79],"27":[2,79],"44":[2,79],"48":[2,79],"56":[2,79],"58":[2,79],"66":[2,79],"67":[2,79],"68":[2,79],"69":[2,79],"72":[2,79],"73":[2,79],"74":[2,79],"75":[2,79],"78":[2,79],"81":[2,79],"84":[2,79],"86":[2,79],"88":[2,79],"92":[2,79],"100":[2,79],"103":[2,79],"104":[2,79],"105":[2,79],"108":[2,79],"110":[2,79],"117":[2,79],"120":[2,79],"123":[2,79],"124":[2,79],"126":[2,79],"127":[2,79],"130":[2,79],"131":[2,79],"132":[2,79],"133":[2,79],"134":[2,79],"135":[2,79],"136":[2,79],"137":[2,79],"138":[2,79],"139":[2,79],"140":[2,79],"141":[2,79],"142":[2,79],"143":[2,79],"144":[2,79],"145":[2,79],"146":[2,79],"147":[2,79],"148":[2,79],"149":[2,79],"150":[2,79],"151":[2,79],"152":[2,79],"153":[2,79],"154":[2,79],"155":[2,79]},{"3":[1,288],"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":287,"47":[1,55]},{"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":289,"47":[1,55]},{"1":[2,80],"3":[2,80],"26":[2,80],"27":[2,80],"44":[2,80],"48":[2,80],"56":[2,80],"58":[2,80],"66":[2,80],"67":[2,80],"68":[2,80],"69":[2,80],"72":[2,80],"73":[2,80],"74":[2,80],"75":[2,80],"78":[2,80],"81":[2,80],"84":[2,80],"86":[2,80],"88":[2,80],"92":[2,80],"100":[2,80],"103":[2,80],"104":[2,80],"105":[2,80],"108":[2,80],"110":[2,80],"117":[2,80],"120":[2,80],"123":[2,80],"124":[2,80],"126":[2,80],"127":[2,80],"130":[2,80],"131":[2,80],"132":[2,80],"133":[2,80],"134":[2,80],"135":[2,80],"136":[2,80],"137":[2,80],"138":[2,80],"139":[2,80],"140":[2,80],"141":[2,80],"142":[2,80],"143":[2,80],"144":[2,80],"145":[2,80],"146":[2,80],"147":[2,80],"148":[2,80],"149":[2,80],"150":[2,80],"151":[2,80],"152":[2,80],"153":[2,80],"154":[2,80],"155":[2,80]},{"3":[1,248],"27":[1,290],"56":[1,247]},{"6":291,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":292,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,122],"3":[2,122],"26":[2,122],"27":[2,122],"44":[2,122],"48":[2,122],"56":[2,122],"58":[2,122],"66":[2,122],"67":[2,122],"68":[2,122],"69":[2,122],"72":[2,122],"73":[2,122],"74":[2,122],"75":[2,122],"78":[2,122],"81":[2,122],"84":[2,122],"86":[2,122],"88":[2,122],"92":[2,122],"100":[2,122],"103":[2,122],"104":[2,122],"105":[2,122],"108":[2,122],"110":[2,122],"117":[2,122],"120":[2,122],"123":[2,122],"124":[2,122],"126":[2,122],"127":[2,122],"130":[2,122],"131":[2,122],"132":[2,122],"133":[2,122],"134":[2,122],"135":[2,122],"136":[2,122],"137":[2,122],"138":[2,122],"139":[2,122],"140":[2,122],"141":[2,122],"142":[2,122],"143":[2,122],"144":[2,122],"145":[2,122],"146":[2,122],"147":[2,122],"148":[2,122],"149":[2,122],"150":[2,122],"151":[2,122],"152":[2,122],"153":[2,122],"154":[2,122],"155":[2,122]},{"3":[1,242],"27":[1,243],"56":[1,241],"88":[1,293]},{"1":[2,146],"3":[2,146],"26":[2,146],"27":[2,146],"48":[2,146],"56":[2,146],"58":[2,146],"73":[2,146],"75":[2,146],"78":[2,146],"88":[2,146],"92":[2,146],"100":[2,146],"103":[2,146],"104":[2,146],"105":[2,146],"108":[2,146],"110":[2,146],"117":[2,146],"120":[2,146],"123":[2,146],"124":[2,146],"126":[2,146],"127":[2,146],"130":[2,146],"131":[2,146],"132":[2,146],"133":[2,146],"134":[2,146],"135":[2,146],"136":[2,146],"137":[2,146],"138":[2,146],"139":[2,146],"140":[2,146],"141":[2,146],"142":[2,146],"143":[2,146],"144":[2,146],"145":[2,146],"146":[2,146],"147":[2,146],"148":[2,146],"149":[2,146],"150":[2,146],"151":[2,146],"152":[2,146],"153":[2,146],"154":[2,146],"155":[2,146]},{"6":294,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":295,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,143],"3":[2,143],"26":[2,143],"27":[2,143],"48":[2,143],"56":[2,143],"58":[2,143],"73":[2,143],"75":[2,143],"78":[2,143],"88":[2,143],"92":[2,143],"100":[2,143],"103":[2,143],"104":[2,143],"105":[2,143],"108":[2,143],"110":[2,143],"113":[2,143],"117":[2,143],"120":[2,143],"123":[2,143],"124":[2,143],"126":[2,143],"127":[2,143],"130":[2,143],"131":[2,143],"132":[2,143],"133":[2,143],"134":[2,143],"135":[2,143],"136":[2,143],"137":[2,143],"138":[2,143],"139":[2,143],"140":[2,143],"141":[2,143],"142":[2,143],"143":[2,143],"144":[2,143],"145":[2,143],"146":[2,143],"147":[2,143],"148":[2,143],"149":[2,143],"150":[2,143],"151":[2,143],"152":[2,143],"153":[2,143],"154":[2,143],"155":[2,143]},{"1":[2,128],"3":[2,128],"26":[2,128],"27":[2,128],"48":[2,128],"56":[2,128],"58":[2,128],"73":[2,128],"75":[2,128],"78":[2,128],"88":[2,128],"92":[2,128],"100":[2,128],"103":[2,128],"104":[1,272],"105":[2,128],"108":[2,128],"110":[1,273],"117":[2,128],"120":[2,128],"123":[2,128],"124":[2,128],"126":[2,128],"127":[2,128],"130":[2,128],"131":[2,128],"132":[2,128],"133":[2,128],"134":[2,128],"135":[2,128],"136":[2,128],"137":[2,128],"138":[2,128],"139":[2,128],"140":[2,128],"141":[2,128],"142":[2,128],"143":[2,128],"144":[2,128],"145":[2,128],"146":[2,128],"147":[2,128],"148":[2,128],"149":[2,128],"150":[2,128],"151":[2,128],"152":[2,128],"153":[2,128],"154":[2,128],"155":[2,128]},{"1":[2,61],"3":[2,61],"26":[2,61],"27":[2,61],"48":[2,61],"56":[2,61],"58":[2,61],"73":[2,61],"75":[2,61],"78":[2,61],"88":[2,61],"92":[2,61],"100":[2,61],"103":[2,61],"104":[2,61],"105":[2,61],"108":[2,61],"110":[2,61],"117":[2,61],"120":[2,61],"123":[2,61],"124":[2,61],"126":[2,61],"127":[2,61],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"1":[2,98],"3":[2,98],"26":[2,98],"27":[2,98],"48":[2,98],"56":[2,98],"58":[2,98],"66":[2,98],"67":[2,98],"68":[2,98],"69":[2,98],"72":[2,98],"73":[2,98],"74":[2,98],"75":[2,98],"78":[2,98],"86":[2,98],"88":[2,98],"92":[2,98],"100":[2,98],"103":[2,98],"104":[2,98],"105":[2,98],"108":[2,98],"110":[2,98],"117":[2,98],"120":[2,98],"123":[2,98],"124":[2,98],"126":[2,98],"127":[2,98],"130":[2,98],"131":[2,98],"132":[2,98],"133":[2,98],"134":[2,98],"135":[2,98],"136":[2,98],"137":[2,98],"138":[2,98],"139":[2,98],"140":[2,98],"141":[2,98],"142":[2,98],"143":[2,98],"144":[2,98],"145":[2,98],"146":[2,98],"147":[2,98],"148":[2,98],"149":[2,98],"150":[2,98],"151":[2,98],"152":[2,98],"153":[2,98],"154":[2,98],"155":[2,98]},{"1":[2,77],"3":[2,77],"26":[2,77],"27":[2,77],"44":[2,77],"48":[2,77],"56":[2,77],"58":[2,77],"66":[2,77],"67":[2,77],"68":[2,77],"69":[2,77],"72":[2,77],"73":[2,77],"74":[2,77],"75":[2,77],"78":[2,77],"81":[2,77],"84":[2,77],"86":[2,77],"88":[2,77],"92":[2,77],"100":[2,77],"103":[2,77],"104":[2,77],"105":[2,77],"108":[2,77],"110":[2,77],"117":[2,77],"120":[2,77],"123":[2,77],"124":[2,77],"126":[2,77],"127":[2,77],"130":[2,77],"131":[2,77],"132":[2,77],"133":[2,77],"134":[2,77],"135":[2,77],"136":[2,77],"137":[2,77],"138":[2,77],"139":[2,77],"140":[2,77],"141":[2,77],"142":[2,77],"143":[2,77],"144":[2,77],"145":[2,77],"146":[2,77],"147":[2,77],"148":[2,77],"149":[2,77],"150":[2,77],"151":[2,77],"152":[2,77],"153":[2,77],"154":[2,77],"155":[2,77]},{"58":[1,296]},{"1":[2,78],"3":[2,78],"26":[2,78],"27":[2,78],"44":[2,78],"48":[2,78],"56":[2,78],"58":[2,78],"66":[2,78],"67":[2,78],"68":[2,78],"69":[2,78],"72":[2,78],"73":[2,78],"74":[2,78],"75":[2,78],"78":[2,78],"81":[2,78],"84":[2,78],"86":[2,78],"88":[2,78],"92":[2,78],"100":[2,78],"103":[2,78],"104":[2,78],"105":[2,78],"108":[2,78],"110":[2,78],"117":[2,78],"120":[2,78],"123":[2,78],"124":[2,78],"126":[2,78],"127":[2,78],"130":[2,78],"131":[2,78],"132":[2,78],"133":[2,78],"134":[2,78],"135":[2,78],"136":[2,78],"137":[2,78],"138":[2,78],"139":[2,78],"140":[2,78],"141":[2,78],"142":[2,78],"143":[2,78],"144":[2,78],"145":[2,78],"146":[2,78],"147":[2,78],"148":[2,78],"149":[2,78],"150":[2,78],"151":[2,78],"152":[2,78],"153":[2,78],"154":[2,78],"155":[2,78]},{"3":[1,145],"5":297,"26":[1,6]},{"51":[2,58],"56":[2,58],"58":[1,229]},{"58":[1,298]},{"3":[1,145],"5":299,"26":[1,6]},{"1":[2,118],"3":[2,118],"26":[2,118],"27":[2,118],"48":[2,118],"56":[2,118],"58":[2,118],"73":[2,118],"75":[2,118],"78":[2,118],"88":[2,118],"92":[2,118],"100":[2,118],"103":[2,118],"104":[2,118],"105":[2,118],"108":[2,118],"110":[2,118],"117":[2,118],"120":[2,118],"123":[2,118],"124":[2,118],"126":[2,118],"127":[2,118],"130":[2,118],"131":[2,118],"132":[2,118],"133":[2,118],"134":[2,118],"135":[2,118],"136":[2,118],"137":[2,118],"138":[2,118],"139":[2,118],"140":[2,118],"141":[2,118],"142":[2,118],"143":[2,118],"144":[2,118],"145":[2,118],"146":[2,118],"147":[2,118],"148":[2,118],"149":[2,118],"150":[2,118],"151":[2,118],"152":[2,118],"153":[2,118],"154":[2,118],"155":[2,118]},{"3":[1,145],"5":300,"26":[1,6]},{"1":[2,129],"3":[2,129],"26":[2,129],"27":[2,129],"48":[2,129],"56":[2,129],"58":[2,129],"73":[2,129],"75":[2,129],"78":[2,129],"88":[2,129],"92":[2,129],"100":[2,129],"103":[2,129],"104":[2,129],"105":[2,129],"108":[2,129],"110":[2,129],"117":[2,129],"120":[2,129],"123":[2,129],"124":[2,129],"126":[2,129],"127":[2,129],"130":[2,129],"131":[2,129],"132":[2,129],"133":[2,129],"134":[2,129],"135":[2,129],"136":[2,129],"137":[2,129],"138":[2,129],"139":[2,129],"140":[2,129],"141":[2,129],"142":[2,129],"143":[2,129],"144":[2,129],"145":[2,129],"146":[2,129],"147":[2,129],"148":[2,129],"149":[2,129],"150":[2,129],"151":[2,129],"152":[2,129],"153":[2,129],"154":[2,129],"155":[2,129]},{"6":301,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":302,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,132],"3":[2,132],"26":[2,132],"27":[2,132],"48":[1,105],"56":[2,132],"58":[1,120],"73":[2,132],"75":[2,132],"78":[2,132],"88":[2,132],"92":[2,132],"100":[2,132],"102":118,"103":[2,132],"104":[2,132],"105":[2,132],"108":[1,115],"110":[2,132],"117":[2,132],"120":[2,132],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,133],"3":[2,133],"26":[2,133],"27":[2,133],"48":[1,105],"56":[2,133],"58":[1,120],"73":[2,133],"75":[2,133],"78":[2,133],"88":[2,133],"92":[2,133],"100":[2,133],"102":118,"103":[2,133],"104":[2,133],"105":[2,133],"108":[1,115],"110":[2,133],"117":[2,133],"120":[2,133],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"108":[2,131],"109":[2,131]},{"24":280,"27":[1,303],"47":[1,55],"113":[1,304],"114":305,"115":[1,279]},{"27":[2,138],"47":[2,138],"113":[2,138],"115":[2,138]},{"6":307,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"93":306,"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,308]},{"1":[2,82],"3":[2,82],"26":[1,170],"27":[2,82],"48":[2,82],"56":[2,82],"58":[2,82],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,82],"74":[1,136],"75":[2,82],"78":[2,82],"79":309,"85":127,"86":[1,134],"88":[2,82],"92":[2,82],"100":[2,82],"103":[2,82],"104":[2,82],"105":[2,82],"108":[2,82],"110":[2,82],"117":[2,82],"120":[2,82],"123":[2,82],"124":[2,82],"126":[2,82],"127":[2,82],"130":[2,82],"131":[2,82],"132":[2,82],"133":[2,82],"134":[2,82],"135":[2,82],"136":[2,82],"137":[2,82],"138":[2,82],"139":[2,82],"140":[2,82],"141":[2,82],"142":[2,82],"143":[2,82],"144":[2,82],"145":[2,82],"146":[2,82],"147":[2,82],"148":[2,82],"149":[2,82],"150":[2,82],"151":[2,82],"152":[2,82],"153":[2,82],"154":[2,82],"155":[2,82]},{"3":[2,110],"27":[2,110],"48":[1,105],"56":[2,110],"58":[1,120],"88":[2,110],"92":[2,110],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":310,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":311,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,111],"27":[2,111],"48":[1,105],"56":[2,111],"58":[1,120],"88":[2,111],"92":[2,111],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":312,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[1,313],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,87],"27":[2,87],"56":[2,87],"78":[2,87]},{"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":314,"47":[1,55]},{"3":[2,88],"27":[2,88],"56":[2,88],"78":[2,88]},{"1":[2,90],"3":[2,90],"26":[2,90],"27":[2,90],"48":[2,90],"56":[2,90],"58":[2,90],"73":[2,90],"75":[2,90],"78":[2,90],"88":[2,90],"92":[2,90],"100":[2,90],"103":[2,90],"104":[2,90],"105":[2,90],"108":[2,90],"110":[2,90],"117":[2,90],"120":[2,90],"123":[2,90],"124":[2,90],"126":[2,90],"127":[2,90],"130":[2,90],"131":[2,90],"132":[2,90],"133":[2,90],"134":[2,90],"135":[2,90],"136":[2,90],"137":[2,90],"138":[2,90],"139":[2,90],"140":[2,90],"141":[2,90],"142":[2,90],"143":[2,90],"144":[2,90],"145":[2,90],"146":[2,90],"147":[2,90],"148":[2,90],"149":[2,90],"150":[2,90],"151":[2,90],"152":[2,90],"153":[2,90],"154":[2,90],"155":[2,90]},{"3":[2,45],"27":[2,45],"48":[1,105],"56":[2,45],"58":[1,120],"78":[2,45],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,46],"27":[2,46],"48":[1,105],"56":[2,46],"58":[1,120],"78":[2,46],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,99],"3":[2,99],"26":[2,99],"27":[2,99],"48":[2,99],"56":[2,99],"58":[2,99],"73":[2,99],"75":[2,99],"78":[2,99],"88":[2,99],"92":[2,99],"100":[2,99],"103":[2,99],"104":[2,99],"105":[2,99],"108":[2,99],"110":[2,99],"117":[2,99],"120":[2,99],"123":[2,99],"124":[2,99],"126":[2,99],"127":[2,99],"130":[2,99],"131":[2,99],"132":[2,99],"133":[2,99],"134":[2,99],"135":[2,99],"136":[2,99],"137":[2,99],"138":[2,99],"139":[2,99],"140":[2,99],"141":[2,99],"142":[2,99],"143":[2,99],"144":[2,99],"145":[2,99],"146":[2,99],"147":[2,99],"148":[2,99],"149":[2,99],"150":[2,99],"151":[2,99],"152":[2,99],"153":[2,99],"154":[2,99],"155":[2,99]},{"3":[1,145],"5":315,"26":[1,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,125],"3":[2,125],"26":[2,125],"27":[2,125],"48":[1,105],"56":[2,125],"58":[1,120],"73":[2,125],"75":[2,125],"78":[2,125],"88":[2,125],"92":[2,125],"100":[2,125],"102":118,"103":[1,77],"104":[2,125],"105":[1,119],"108":[1,115],"110":[2,125],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":316,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[1,317],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,52],"3":[2,52],"26":[2,52],"27":[2,52],"48":[2,52],"56":[2,52],"58":[2,52],"73":[2,52],"75":[2,52],"78":[2,52],"88":[2,52],"92":[2,52],"100":[2,52],"103":[2,52],"104":[2,52],"105":[2,52],"108":[2,52],"110":[2,52],"117":[2,52],"120":[2,52],"123":[2,52],"124":[2,52],"126":[2,52],"127":[2,52],"130":[2,52],"131":[2,52],"132":[2,52],"133":[2,52],"134":[2,52],"135":[2,52],"136":[2,52],"137":[2,52],"138":[2,52],"139":[2,52],"140":[2,52],"141":[2,52],"142":[2,52],"143":[2,52],"144":[2,52],"145":[2,52],"146":[2,52],"147":[2,52],"148":[2,52],"149":[2,52],"150":[2,52],"151":[2,52],"152":[2,52],"153":[2,52],"154":[2,52],"155":[2,52]},{"51":[2,60],"56":[2,60],"58":[2,60]},{"1":[2,119],"3":[2,119],"26":[2,119],"27":[2,119],"48":[2,119],"56":[2,119],"58":[2,119],"73":[2,119],"75":[2,119],"78":[2,119],"88":[2,119],"92":[2,119],"100":[2,119],"103":[2,119],"104":[2,119],"105":[2,119],"108":[2,119],"110":[2,119],"117":[2,119],"120":[2,119],"123":[2,119],"124":[2,119],"126":[2,119],"127":[2,119],"130":[2,119],"131":[2,119],"132":[2,119],"133":[2,119],"134":[2,119],"135":[2,119],"136":[2,119],"137":[2,119],"138":[2,119],"139":[2,119],"140":[2,119],"141":[2,119],"142":[2,119],"143":[2,119],"144":[2,119],"145":[2,119],"146":[2,119],"147":[2,119],"148":[2,119],"149":[2,119],"150":[2,119],"151":[2,119],"152":[2,119],"153":[2,119],"154":[2,119],"155":[2,119]},{"1":[2,120],"3":[2,120],"26":[2,120],"27":[2,120],"48":[2,120],"56":[2,120],"58":[2,120],"73":[2,120],"75":[2,120],"78":[2,120],"88":[2,120],"92":[2,120],"96":[2,120],"100":[2,120],"103":[2,120],"104":[2,120],"105":[2,120],"108":[2,120],"110":[2,120],"117":[2,120],"120":[2,120],"123":[2,120],"124":[2,120],"126":[2,120],"127":[2,120],"130":[2,120],"131":[2,120],"132":[2,120],"133":[2,120],"134":[2,120],"135":[2,120],"136":[2,120],"137":[2,120],"138":[2,120],"139":[2,120],"140":[2,120],"141":[2,120],"142":[2,120],"143":[2,120],"144":[2,120],"145":[2,120],"146":[2,120],"147":[2,120],"148":[2,120],"149":[2,120],"150":[2,120],"151":[2,120],"152":[2,120],"153":[2,120],"154":[2,120],"155":[2,120]},{"1":[2,134],"3":[2,134],"26":[2,134],"27":[2,134],"48":[1,105],"56":[2,134],"58":[1,120],"73":[2,134],"75":[2,134],"78":[2,134],"88":[2,134],"92":[2,134],"100":[2,134],"102":118,"103":[2,134],"104":[2,134],"105":[2,134],"108":[1,115],"110":[2,134],"117":[2,134],"120":[2,134],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,135],"3":[2,135],"26":[2,135],"27":[2,135],"48":[1,105],"56":[2,135],"58":[1,120],"73":[2,135],"75":[2,135],"78":[2,135],"88":[2,135],"92":[2,135],"100":[2,135],"102":118,"103":[2,135],"104":[2,135],"105":[2,135],"108":[1,115],"110":[2,135],"117":[2,135],"120":[2,135],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,136],"3":[2,136],"26":[2,136],"27":[2,136],"48":[2,136],"56":[2,136],"58":[2,136],"73":[2,136],"75":[2,136],"78":[2,136],"88":[2,136],"92":[2,136],"100":[2,136],"103":[2,136],"104":[2,136],"105":[2,136],"108":[2,136],"110":[2,136],"117":[2,136],"120":[2,136],"123":[2,136],"124":[2,136],"126":[2,136],"127":[2,136],"130":[2,136],"131":[2,136],"132":[2,136],"133":[2,136],"134":[2,136],"135":[2,136],"136":[2,136],"137":[2,136],"138":[2,136],"139":[2,136],"140":[2,136],"141":[2,136],"142":[2,136],"143":[2,136],"144":[2,136],"145":[2,136],"146":[2,136],"147":[2,136],"148":[2,136],"149":[2,136],"150":[2,136],"151":[2,136],"152":[2,136],"153":[2,136],"154":[2,136],"155":[2,136]},{"3":[1,145],"5":318,"26":[1,6]},{"27":[2,139],"47":[2,139],"113":[2,139],"115":[2,139]},{"3":[1,145],"5":319,"26":[1,6],"56":[1,320]},{"3":[2,115],"26":[2,115],"48":[1,105],"56":[2,115],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"24":280,"47":[1,55],"114":321,"115":[1,279]},{"1":[2,84],"3":[2,84],"26":[2,84],"27":[2,84],"48":[2,84],"56":[2,84],"58":[2,84],"73":[2,84],"75":[2,84],"78":[2,84],"88":[2,84],"92":[2,84],"100":[2,84],"103":[2,84],"104":[2,84],"105":[2,84],"108":[2,84],"110":[2,84],"117":[2,84],"120":[2,84],"123":[2,84],"124":[2,84],"126":[2,84],"127":[2,84],"130":[2,84],"131":[2,84],"132":[2,84],"133":[2,84],"134":[2,84],"135":[2,84],"136":[2,84],"137":[2,84],"138":[2,84],"139":[2,84],"140":[2,84],"141":[2,84],"142":[2,84],"143":[2,84],"144":[2,84],"145":[2,84],"146":[2,84],"147":[2,84],"148":[2,84],"149":[2,84],"150":[2,84],"151":[2,84],"152":[2,84],"153":[2,84],"154":[2,84],"155":[2,84]},{"3":[2,112],"27":[2,112],"48":[1,105],"56":[2,112],"58":[1,120],"88":[2,112],"92":[2,112],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,113],"27":[2,113],"48":[1,105],"56":[2,113],"58":[1,120],"88":[2,113],"92":[2,113],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,120],"92":[1,322],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,61],"6":323,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[2,61],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,61],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,61],"58":[2,61],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,61],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[2,61],"105":[2,61],"108":[2,61],"111":[1,53],"116":76,"117":[2,61],"119":47,"120":[2,61],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"3":[2,89],"27":[2,89],"56":[2,89],"78":[2,89]},{"1":[2,147],"3":[2,147],"26":[2,147],"27":[2,147],"48":[2,147],"56":[2,147],"58":[2,147],"73":[2,147],"75":[2,147],"78":[2,147],"88":[2,147],"92":[2,147],"100":[2,147],"103":[2,147],"104":[2,147],"105":[2,147],"108":[2,147],"110":[2,147],"113":[2,147],"117":[2,147],"120":[2,147],"123":[2,147],"124":[2,147],"126":[2,147],"127":[2,147],"130":[2,147],"131":[2,147],"132":[2,147],"133":[2,147],"134":[2,147],"135":[2,147],"136":[2,147],"137":[2,147],"138":[2,147],"139":[2,147],"140":[2,147],"141":[2,147],"142":[2,147],"143":[2,147],"144":[2,147],"145":[2,147],"146":[2,147],"147":[2,147],"148":[2,147],"149":[2,147],"150":[2,147],"151":[2,147],"152":[2,147],"153":[2,147],"154":[2,147],"155":[2,147]},{"48":[1,105],"58":[1,120],"73":[1,324],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":325,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,61],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[2,61],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,61],"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[2,61],"105":[2,61],"108":[2,61],"111":[1,53],"116":76,"117":[2,61],"119":47,"120":[2,61],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"27":[1,326]},{"3":[1,327],"27":[2,140],"47":[2,140],"113":[2,140],"115":[2,140]},{"6":328,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"27":[2,142],"47":[2,142],"113":[2,142],"115":[2,142]},{"1":[2,102],"3":[2,102],"26":[2,102],"27":[2,102],"44":[2,102],"48":[2,102],"56":[2,102],"58":[2,102],"66":[2,102],"67":[2,102],"68":[2,102],"69":[2,102],"72":[2,102],"73":[2,102],"74":[2,102],"75":[2,102],"78":[2,102],"81":[2,102],"84":[2,102],"86":[2,102],"88":[2,102],"92":[2,102],"100":[2,102],"103":[2,102],"104":[2,102],"105":[2,102],"108":[2,102],"110":[2,102],"117":[2,102],"120":[2,102],"123":[2,102],"124":[2,102],"126":[2,102],"127":[2,102],"130":[2,102],"131":[2,102],"132":[2,102],"133":[2,102],"134":[2,102],"135":[2,102],"136":[2,102],"137":[2,102],"138":[2,102],"139":[2,102],"140":[2,102],"141":[2,102],"142":[2,102],"143":[2,102],"144":[2,102],"145":[2,102],"146":[2,102],"147":[2,102],"148":[2,102],"149":[2,102],"150":[2,102],"151":[2,102],"152":[2,102],"153":[2,102],"154":[2,102],"155":[2,102]},{"48":[1,105],"58":[1,120],"92":[1,329],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,104],"3":[2,104],"26":[2,104],"27":[2,104],"44":[2,104],"48":[2,104],"56":[2,104],"58":[2,104],"66":[2,104],"67":[2,104],"68":[2,104],"69":[2,104],"72":[2,104],"73":[2,104],"74":[2,104],"75":[2,104],"78":[2,104],"81":[2,104],"84":[2,104],"86":[2,104],"88":[2,104],"92":[2,104],"100":[2,104],"103":[2,104],"104":[2,104],"105":[2,104],"108":[2,104],"110":[2,104],"117":[2,104],"120":[2,104],"123":[2,104],"124":[2,104],"126":[2,104],"127":[2,104],"130":[2,104],"131":[2,104],"132":[2,104],"133":[2,104],"134":[2,104],"135":[2,104],"136":[2,104],"137":[2,104],"138":[2,104],"139":[2,104],"140":[2,104],"141":[2,104],"142":[2,104],"143":[2,104],"144":[2,104],"145":[2,104],"146":[2,104],"147":[2,104],"148":[2,104],"149":[2,104],"150":[2,104],"151":[2,104],"152":[2,104],"153":[2,104],"154":[2,104],"155":[2,104]},{"48":[1,105],"58":[1,120],"73":[1,330],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,137],"3":[2,137],"26":[2,137],"27":[2,137],"48":[2,137],"56":[2,137],"58":[2,137],"73":[2,137],"75":[2,137],"78":[2,137],"88":[2,137],"92":[2,137],"100":[2,137],"103":[2,137],"104":[2,137],"105":[2,137],"108":[2,137],"110":[2,137],"117":[2,137],"120":[2,137],"123":[2,137],"124":[2,137],"126":[2,137],"127":[2,137],"130":[2,137],"131":[2,137],"132":[2,137],"133":[2,137],"134":[2,137],"135":[2,137],"136":[2,137],"137":[2,137],"138":[2,137],"139":[2,137],"140":[2,137],"141":[2,137],"142":[2,137],"143":[2,137],"144":[2,137],"145":[2,137],"146":[2,137],"147":[2,137],"148":[2,137],"149":[2,137],"150":[2,137],"151":[2,137],"152":[2,137],"153":[2,137],"154":[2,137],"155":[2,137]},{"27":[2,141],"47":[2,141],"113":[2,141],"115":[2,141]},{"3":[2,116],"26":[2,116],"48":[1,105],"56":[2,116],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,103],"3":[2,103],"26":[2,103],"27":[2,103],"44":[2,103],"48":[2,103],"56":[2,103],"58":[2,103],"66":[2,103],"67":[2,103],"68":[2,103],"69":[2,103],"72":[2,103],"73":[2,103],"74":[2,103],"75":[2,103],"78":[2,103],"81":[2,103],"84":[2,103],"86":[2,103],"88":[2,103],"92":[2,103],"100":[2,103],"103":[2,103],"104":[2,103],"105":[2,103],"108":[2,103],"110":[2,103],"117":[2,103],"120":[2,103],"123":[2,103],"124":[2,103],"126":[2,103],"127":[2,103],"130":[2,103],"131":[2,103],"132":[2,103],"133":[2,103],"134":[2,103],"135":[2,103],"136":[2,103],"137":[2,103],"138":[2,103],"139":[2,103],"140":[2,103],"141":[2,103],"142":[2,103],"143":[2,103],"144":[2,103],"145":[2,103],"146":[2,103],"147":[2,103],"148":[2,103],"149":[2,103],"150":[2,103],"151":[2,103],"152":[2,103],"153":[2,103],"154":[2,103],"155":[2,103]},{"1":[2,105],"3":[2,105],"26":[2,105],"27":[2,105],"44":[2,105],"48":[2,105],"56":[2,105],"58":[2,105],"66":[2,105],"67":[2,105],"68":[2,105],"69":[2,105],"72":[2,105],"73":[2,105],"74":[2,105],"75":[2,105],"78":[2,105],"81":[2,105],"84":[2,105],"86":[2,105],"88":[2,105],"92":[2,105],"100":[2,105],"103":[2,105],"104":[2,105],"105":[2,105],"108":[2,105],"110":[2,105],"117":[2,105],"120":[2,105],"123":[2,105],"124":[2,105],"126":[2,105],"127":[2,105],"130":[2,105],"131":[2,105],"132":[2,105],"133":[2,105],"134":[2,105],"135":[2,105],"136":[2,105],"137":[2,105],"138":[2,105],"139":[2,105],"140":[2,105],"141":[2,105],"142":[2,105],"143":[2,105],"144":[2,105],"145":[2,105],"146":[2,105],"147":[2,105],"148":[2,105],"149":[2,105],"150":[2,105],"151":[2,105],"152":[2,105],"153":[2,105],"154":[2,105],"155":[2,105]}],parseError:function parseError(str,hash){throw new Error(str)},parse:function parse(input){var self=this,stack=[0],vstack=[null],table=this.table,yytext="",yylineno=0,yyleng=0,shifts=0,reductions=0;this.lexer.setInput(input);this.lexer.yy=this.yy;var parseError=this.yy.parseError=this.yy.parseError||this.parseError;function lex(){var token;token=self.lexer.lex()||1;if(typeof token!=="number"){token=self.symbols_[token]}return token}var symbol,state,action,a,r,yyval={},p,len,ip=0,newState,expected;symbol=lex();while(true){state=stack[stack.length-1];action=table[state]&&table[state][symbol];if(typeof action==="undefined"||!action.length||!action[0]){expected=[];for(p in table[state]){if(this.terminals_[p]&&p!=1){expected.push("'"+this.terminals_[p]+"'")}}if(this.lexer.showPosition){parseError("Parse error on line "+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(", "),{text:this.lexer.match,token:this.terminals_[symbol],line:this.lexer.yylineno,expected:expected})}else{parseError("Parse error on line "+(yylineno+1)+": Unexpected '"+this.terminals_[symbol]+"'",{text:this.lexer.match,token:this.terminals_[symbol],line:this.lexer.yylineno,expected:expected})}}if(action[0] instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}a=action;switch(a[0]){case 1:shifts++;stack.push(symbol);++ip;yyleng=this.lexer.yyleng;yytext=this.lexer.yytext;yylineno=this.lexer.yylineno;symbol=lex();vstack.push(null);stack.push(a[1]);break;case 2:reductions++;len=this.productions_[a[1]][1];yyval.$=vstack[vstack.length-len];r=this.performAction.call(yyval,yytext,yyleng,yylineno,this.yy,a[1],vstack);if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len)}stack.push(this.productions_[a[1]][0]);vstack.push(yyval.$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:this.reductionCount=reductions;this.shiftCount=shifts;return true}}return true}};return parser})();if(typeof require!=="undefined"){exports.parser=parser;exports.parse=function(){return parser.parse.apply(parser,arguments)};exports.main=function commonjsMain(args){var cwd=require("file").path(require("file").cwd());if(!args[1]){throw new Error("Usage: "+args[0]+" FILE")}var source=cwd.join(args[1]).read({charset:"utf-8"});this.parse(source)};if(require.main===module){exports.main(require("system").args)}}(function(){var Scope;var __hasProp=Object.prototype.hasOwnProperty;if(!((typeof process!=="undefined"&&process!==null))){this.exports=this}exports.Scope=(function(){Scope=function Scope(parent,expressions,method){var _a;_a=[parent,expressions,method];this.parent=_a[0];this.expressions=_a[1];this.method=_a[2];this.variables={};this.temp_var=this.parent?this.parent.temp_var:"_a";return this};Scope.prototype.find=function find(name){if(this.check(name)){return true}this.variables[name]="var";return false};Scope.prototype.parameter=function parameter(name){this.variables[name]="param";return this.variables[name]};Scope.prototype.check=function check(name){if(this.variables[name]){return true}return !!(this.parent&&this.parent.check(name))};Scope.prototype.free_variable=function free_variable(){var ordinal;while(this.check(this.temp_var)){ordinal=1+parseInt(this.temp_var.substr(1),36);this.temp_var="_"+ordinal.toString(36).replace(/\d/g,"a")}this.variables[this.temp_var]="var";return this.temp_var};Scope.prototype.assign=function assign(name,value,top_level){if(top_level&&this.parent){return this.parent.assign(name,value,top_level)}this.variables[name]={value:value,assigned:true};return this.variables[name]};Scope.prototype.has_declarations=function has_declarations(body){return body===this.expressions&&this.declared_variables().length};Scope.prototype.has_assignments=function has_assignments(body){return body===this.expressions&&this.assigned_variables().length};Scope.prototype.declared_variables=function declared_variables(){var _a,_b,key,val;return(function(){_a=[];_b=this.variables;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];val==="var"?_a.push(key):null}}return _a}).call(this).sort()};Scope.prototype.assigned_variables=function assigned_variables(){var _a,_b,key,val;_a=[];_b=this.variables;for(key in _b){if(__hasProp.call(_b,key)){val=_b[key];val.assigned?_a.push(""+key+" = "+(val.value)):null}}return _a};Scope.prototype.compiled_declarations=function compiled_declarations(){return this.declared_variables().join(", ")};Scope.prototype.compiled_assignments=function compiled_assignments(){return this.assigned_variables().join(", ")};return Scope}).call(this)})();(function(){var AccessorNode,ArrayNode,AssignNode,BaseNode,CallNode,ClassNode,ClosureNode,CodeNode,CommentNode,CurryNode,ExistenceNode,Expressions,ExtendsNode,ForNode,IDENTIFIER,IfNode,IndexNode,LiteralNode,ObjectNode,OpNode,ParentheticalNode,PushNode,RangeNode,ReturnNode,Scope,SliceNode,SplatNode,TAB,TRAILING_WHITESPACE,ThrowNode,TryNode,ValueNode,WhileNode,compact,del,flatten,helpers,literal,merge,statement;var __extends=function(child,parent){var ctor=function(){};ctor.prototype=parent.prototype;child.__superClass__=parent.prototype;child.prototype=new ctor();child.prototype.constructor=child};if((typeof process!=="undefined"&&process!==null)){Scope=require("./scope").Scope;helpers=require("./helpers").helpers}else{this.exports=this;helpers=this.helpers;Scope=this.Scope}compact=helpers.compact;flatten=helpers.flatten;merge=helpers.merge;del=helpers.del;statement=function statement(klass,only){klass.prototype.is_statement=function is_statement(){return true};if(only){klass.prototype.is_pure_statement=function is_pure_statement(){return true};return klass.prototype.is_pure_statement}};exports.BaseNode=(function(){BaseNode=function BaseNode(){};BaseNode.prototype.compile=function compile(o){var closure,top;this.options=merge(o||{});this.tab=o.indent;if(!(this instanceof ValueNode)){del(this.options,"operation")}top=this.top_sensitive()?this.options.top:del(this.options,"top");closure=this.is_statement()&&!this.is_pure_statement()&&!top&&!this.options.as_statement&&!(this instanceof CommentNode)&&!this.contains_pure_statement();if(closure){return this.compile_closure(this.options)}else{return this.compile_node(this.options)}};BaseNode.prototype.compile_closure=function compile_closure(o){this.tab=o.indent;o.shared_scope=o.scope;return ClosureNode.wrap(this).compile(o)};BaseNode.prototype.compile_reference=function compile_reference(o){var compiled,reference;reference=literal(o.scope.free_variable());compiled=new AssignNode(reference,this);return[compiled,reference]};BaseNode.prototype.idt=function idt(tabs){var idt,num;idt=this.tab||"";num=(tabs||0)+1;while(num-=1){idt+=TAB}return idt};BaseNode.prototype.make_return=function make_return(){return new ReturnNode(this)};BaseNode.prototype.contains=function contains(block){var _a,_b,_c,node;_a=this.children;for(_b=0,_c=_a.length;_b<_c;_b++){node=_a[_b];if(block(node)){return true}if(node.contains&&node.contains(block)){return true}}return false};BaseNode.prototype.contains_pure_statement=function contains_pure_statement(){return this.is_pure_statement()||this.contains(function(n){return n.is_pure_statement()})};BaseNode.prototype.traverse=function traverse(block){var _a,_b,_c,_d,node;_a=[];_b=this.children;for(_c=0,_d=_b.length;_c<_d;_c++){node=_b[_c];_a.push((function(){block(node);if(node.traverse){return node.traverse(block)}}).call(this))}return _a};BaseNode.prototype.toString=function toString(idt){var _a,_b,_c,_d,child;idt=idt||"";return"\n"+idt+this.type+(function(){_a=[];_b=this.children;for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(child.toString(idt+TAB))}return _a}).call(this).join("")};BaseNode.prototype.unwrap=function unwrap(){return this};BaseNode.prototype.children=[];BaseNode.prototype.is_statement=function is_statement(){return false};BaseNode.prototype.is_pure_statement=function is_pure_statement(){return false};BaseNode.prototype.top_sensitive=function top_sensitive(){return false};return BaseNode}).call(this);exports.Expressions=(function(){Expressions=function Expressions(nodes){this.children=(this.expressions=compact(flatten(nodes||[])));return this};__extends(Expressions,BaseNode);Expressions.prototype.type="Expressions";Expressions.prototype.push=function push(node){this.expressions.push(node);return this};Expressions.prototype.unshift=function unshift(node){this.expressions.unshift(node);return this};Expressions.prototype.unwrap=function unwrap(){if(this.expressions.length===1){return this.expressions[0]}else{return this}};Expressions.prototype.empty=function empty(){return this.expressions.length===0};Expressions.prototype.copy=function copy(){return new Expressions(this.children.slice())};Expressions.prototype.make_return=function make_return(){var idx,last;idx=this.expressions.length-1;last=this.expressions[idx];if(last instanceof CommentNode){last=this.expressions[idx-=1]}if(!last||last instanceof ReturnNode){return this}if(!(last.contains_pure_statement())){this.expressions[idx]=last.make_return()}return this};Expressions.prototype.compile=function compile(o){o=o||{};if(o.scope){return Expressions.__superClass__.compile.call(this,o)}else{return this.compile_root(o)}};Expressions.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,node;return(function(){_a=[];_b=this.expressions;for(_c=0,_d=_b.length;_c<_d;_c++){node=_b[_c];_a.push(this.compile_expression(node,merge(o)))}return _a}).call(this).join("\n")};Expressions.prototype.compile_root=function compile_root(o){var code;o.indent=(this.tab=o.no_wrap?"":TAB);o.scope=new Scope(null,this,null);code=o.globals?this.compile_node(o):this.compile_with_declarations(o);code=code.replace(TRAILING_WHITESPACE,"");if(o.no_wrap){return code}else{return"(function(){\n"+code+"\n})();\n"}};Expressions.prototype.compile_with_declarations=function compile_with_declarations(o){var code;code=this.compile_node(o);if(o.scope.has_assignments(this)){code=""+(this.tab)+"var "+(o.scope.compiled_assignments())+";\n"+code}if(o.scope.has_declarations(this)){code=""+(this.tab)+"var "+(o.scope.compiled_declarations())+";\n"+code}return code};Expressions.prototype.compile_expression=function compile_expression(node,o){var compiled_node;this.tab=o.indent;compiled_node=node.compile(merge(o,{top:true}));if(node.is_statement()){return compiled_node}else{return""+(this.idt())+compiled_node+";"}};return Expressions}).call(this);Expressions.wrap=function wrap(nodes){if(nodes.length===1&&nodes[0] instanceof Expressions){return nodes[0]}return new Expressions(nodes)};statement(Expressions);exports.LiteralNode=(function(){LiteralNode=function LiteralNode(value){this.value=value;return this};__extends(LiteralNode,BaseNode);LiteralNode.prototype.type="Literal";LiteralNode.prototype.is_statement=function is_statement(){return this.value==="break"||this.value==="continue"};LiteralNode.prototype.is_pure_statement=LiteralNode.prototype.is_statement;LiteralNode.prototype.compile_node=function compile_node(o){var end,idt;idt=this.is_statement()?this.idt():"";end=this.is_statement()?";":"";return""+idt+this.value+end};LiteralNode.prototype.toString=function toString(idt){return' "'+this.value+'"'};return LiteralNode}).call(this);exports.ReturnNode=(function(){ReturnNode=function ReturnNode(expression){this.children=[(this.expression=expression)];return this};__extends(ReturnNode,BaseNode);ReturnNode.prototype.type="Return";ReturnNode.prototype.compile_node=function compile_node(o){if(this.expression.is_statement()){o.as_statement=true}return""+(this.tab)+"return "+(this.expression.compile(o))+";"};return ReturnNode}).call(this);statement(ReturnNode,true);exports.ValueNode=(function(){ValueNode=function ValueNode(base,properties){this.children=flatten([(this.base=base),(this.properties=(properties||[]))]);return this};__extends(ValueNode,BaseNode);ValueNode.prototype.type="Value";ValueNode.prototype.SOAK=" == undefined ? undefined : ";ValueNode.prototype.push=function push(prop){this.properties.push(prop);this.children.push(prop);return this};ValueNode.prototype.has_properties=function has_properties(){return !!this.properties.length};ValueNode.prototype.is_array=function is_array(){return this.base instanceof ArrayNode&&!this.has_properties()};ValueNode.prototype.is_object=function is_object(){return this.base instanceof ObjectNode&&!this.has_properties()};ValueNode.prototype.is_splice=function is_splice(){return this.has_properties()&&this.properties[this.properties.length-1] instanceof SliceNode};ValueNode.prototype.make_return=function make_return(){if(this.has_properties()){return ValueNode.__superClass__.make_return.call(this)}else{return this.base.make_return()}};ValueNode.prototype.unwrap=function unwrap(){if(this.properties.length){return this}else{return this.base}};ValueNode.prototype.is_statement=function is_statement(){return this.base.is_statement&&this.base.is_statement()&&!this.has_properties()};ValueNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,baseline,complete,only,op,part,prop,props,soaked,temp;soaked=false;only=del(o,"only_first");op=del(o,"operation");props=only?this.properties.slice(0,this.properties.length-1):this.properties;baseline=this.base.compile(o);if(this.base instanceof ObjectNode&&this.has_properties()){baseline="("+baseline+")"}complete=(this.last=baseline);_a=props;for(_b=0,_c=_a.length;_b<_c;_b++){prop=_a[_b];this.source=baseline;if(prop.soak_node){soaked=true;if(this.base instanceof CallNode&&prop===props[0]){temp=o.scope.free_variable();complete="("+temp+" = "+complete+")"+this.SOAK+(baseline=temp+prop.compile(o))}else{complete=complete+this.SOAK+(baseline+=prop.compile(o))}}else{part=prop.compile(o);baseline+=part;complete+=part;this.last=part}}if(op&&soaked){return"("+complete+")"}else{return complete}};return ValueNode}).call(this);exports.CommentNode=(function(){CommentNode=function CommentNode(lines){this.lines=lines;this;return this};__extends(CommentNode,BaseNode);CommentNode.prototype.type="Comment";CommentNode.prototype.make_return=function make_return(){return this};CommentNode.prototype.compile_node=function compile_node(o){return""+this.tab+"//"+this.lines.join("\n"+this.tab+"//")};return CommentNode}).call(this);statement(CommentNode);exports.CallNode=(function(){CallNode=function CallNode(variable,args){this.is_new=false;this.is_super=variable==="super";this.variable=this.is_super?null:variable;this.children=compact(flatten([this.variable,(this.args=(args||[]))]));this.compile_splat_arguments=(function(func,obj,args){return function(){return func.apply(obj,args.concat(Array.prototype.slice.call(arguments,0)))}}(SplatNode.compile_mixed_array,this,[this.args]));return this};__extends(CallNode,BaseNode);CallNode.prototype.type="Call";CallNode.prototype.new_instance=function new_instance(){this.is_new=true;return this};CallNode.prototype.prefix=function prefix(){if(this.is_new){return"new "}else{return""}};CallNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,_e,_f,_g,arg,args;_a=this.args;for(_b=0,_c=_a.length;_b<_c;_b++){arg=_a[_b];if(arg instanceof SplatNode){return this.compile_splat(o)}}args=(function(){_d=[];_e=this.args;for(_f=0,_g=_e.length;_f<_g;_f++){arg=_e[_f];_d.push(arg.compile(o))}return _d}).call(this).join(", ");if(this.is_super){return this.compile_super(args,o)}return""+(this.prefix())+(this.variable.compile(o))+"("+args+")"};CallNode.prototype.compile_super=function compile_super(args,o){var meth,methname;methname=o.scope.method.name;meth=o.scope.method.proto?""+(o.scope.method.proto)+".__superClass__."+methname:""+(methname)+".__superClass__.constructor";return""+(meth)+".call(this"+(args.length?", ":"")+args+")"};CallNode.prototype.compile_splat=function compile_splat(o){var meth,obj,temp;meth=this.variable.compile(o);obj=this.variable.source||"this";if(obj.match(/\(/)){temp=o.scope.free_variable();obj=temp;meth="("+temp+" = "+(this.variable.source)+")"+(this.variable.last)}return""+(this.prefix())+(meth)+".apply("+obj+", "+(this.compile_splat_arguments(o))+")"};return CallNode}).call(this);exports.CurryNode=(function(){CurryNode=function CurryNode(meth,args){this.children=flatten([(this.meth=meth),(this.context=args[0]),(this.args=(args.slice(1)||[]))]);this.compile_splat_arguments=(function(func,obj,args){return function(){return func.apply(obj,args.concat(Array.prototype.slice.call(arguments,0)))}}(SplatNode.compile_mixed_array,this,[this.args]));return this};__extends(CurryNode,CallNode);CurryNode.prototype.type="Curry";CurryNode.prototype.body="func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)))";CurryNode.prototype.arguments=function arguments(o){var _a,_b,_c,arg;_a=this.args;for(_b=0,_c=_a.length;_b<_c;_b++){arg=_a[_b];if(arg instanceof SplatNode){return this.compile_splat_arguments(o)}}return(new ArrayNode(this.args)).compile(o)};CurryNode.prototype.compile_node=function compile_node(o){var body,curried,curry;body=Expressions.wrap([literal(this.body)]);curried=new CodeNode([],body);curry=new CodeNode([literal("func"),literal("obj"),literal("args")],Expressions.wrap([curried]));return(new ParentheticalNode(new CallNode(curry,[this.meth,this.context,literal(this.arguments(o))]))).compile(o)};return CurryNode}).call(this);exports.ExtendsNode=(function(){ExtendsNode=function ExtendsNode(child,parent){this.children=[(this.child=child),(this.parent=parent)];return this};__extends(ExtendsNode,BaseNode);ExtendsNode.prototype.type="Extends";ExtendsNode.prototype.code="function(child, parent) {\n var ctor = function(){ };\n ctor.prototype = parent.prototype;\n child.__superClass__ = parent.prototype;\n child.prototype = new ctor();\n child.prototype.constructor = child;\n }";ExtendsNode.prototype.compile_node=function compile_node(o){var call,ref;o.scope.assign("__extends",this.code,true);ref=new ValueNode(literal("__extends"));call=new CallNode(ref,[this.child,this.parent]);return call.compile(o)};return ExtendsNode}).call(this);exports.AccessorNode=(function(){AccessorNode=function AccessorNode(name,tag){this.children=[(this.name=name)];this.prototype=tag==="prototype";this.soak_node=tag==="soak";this;return this};__extends(AccessorNode,BaseNode);AccessorNode.prototype.type="Accessor";AccessorNode.prototype.compile_node=function compile_node(o){var proto_part;proto_part=this.prototype?"prototype.":"";return"."+proto_part+(this.name.compile(o))};return AccessorNode}).call(this);exports.IndexNode=(function(){IndexNode=function IndexNode(index,tag){this.children=[(this.index=index)];this.soak_node=tag==="soak";return this};__extends(IndexNode,BaseNode);IndexNode.prototype.type="Index";IndexNode.prototype.compile_node=function compile_node(o){var idx;idx=this.index.compile(o);return"["+idx+"]"};return IndexNode}).call(this);exports.RangeNode=(function(){RangeNode=function RangeNode(from,to,exclusive){this.children=[(this.from=from),(this.to=to)];this.exclusive=!!exclusive;return this};__extends(RangeNode,BaseNode);RangeNode.prototype.type="Range";RangeNode.prototype.compile_variables=function compile_variables(o){var _a,_b,from,to;this.tab=o.indent;_a=[o.scope.free_variable(),o.scope.free_variable()];this.from_var=_a[0];this.to_var=_a[1];_b=[this.from.compile(o),this.to.compile(o)];from=_b[0];to=_b[1];return""+this.from_var+" = "+from+"; "+this.to_var+" = "+to+";\n"+this.tab};RangeNode.prototype.compile_node=function compile_node(o){var compare,equals,idx,incr,intro,step,vars;if(!(o.index)){return this.compile_array(o)}idx=del(o,"index");step=del(o,"step");vars=""+idx+" = "+this.from_var;step=step?step.compile(o):"1";equals=this.exclusive?"":"=";intro="("+this.from_var+" <= "+this.to_var+" ? "+idx;compare=""+intro+" <"+equals+" "+this.to_var+" : "+idx+" >"+equals+" "+this.to_var+")";incr=""+intro+" += "+step+" : "+idx+" -= "+step+")";return""+vars+"; "+compare+"; "+incr};RangeNode.prototype.compile_array=function compile_array(o){var arr,body,name;name=o.scope.free_variable();body=Expressions.wrap([literal(name)]);arr=Expressions.wrap([new ForNode(body,{source:(new ValueNode(this))},literal(name))]);return(new ParentheticalNode(new CallNode(new CodeNode([],arr.make_return())))).compile(o)};return RangeNode}).call(this);exports.SliceNode=(function(){SliceNode=function SliceNode(range){this.children=[(this.range=range)];this;return this};__extends(SliceNode,BaseNode);SliceNode.prototype.type="Slice";SliceNode.prototype.compile_node=function compile_node(o){var from,plus_part,to;from=this.range.from.compile(o);to=this.range.to.compile(o);plus_part=this.range.exclusive?"":" + 1";return".slice("+from+", "+to+plus_part+")"};return SliceNode}).call(this);exports.ObjectNode=(function(){ObjectNode=function ObjectNode(props){this.children=(this.objects=(this.properties=props||[]));return this};__extends(ObjectNode,BaseNode);ObjectNode.prototype.type="Object";ObjectNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,_e,_f,_g,i,indent,inner,join,last_noncom,non_comments,prop,props;o.indent=this.idt(1);non_comments=(function(){_a=[];_b=this.properties;for(_c=0,_d=_b.length;_c<_d;_c++){prop=_b[_c];!(prop instanceof CommentNode)?_a.push(prop):null}return _a}).call(this);last_noncom=non_comments[non_comments.length-1];props=(function(){_e=[];_f=this.properties;for(i=0,_g=_f.length;i<_g;i++){prop=_f[i];_e.push((function(){join=",\n";if((prop===last_noncom)||(prop instanceof CommentNode)){join="\n"}if(i===this.properties.length-1){join=""}indent=prop instanceof CommentNode?"":this.idt(1);return indent+prop.compile(o)+join}).call(this))}return _e}).call(this);props=props.join("");inner=props?"\n"+props+"\n"+this.idt():"";return"{"+inner+"}"};return ObjectNode}).call(this);exports.ArrayNode=(function(){ArrayNode=function ArrayNode(objects){this.children=(this.objects=objects||[]);this.compile_splat_literal=(function(func,obj,args){return function(){return func.apply(obj,args.concat(Array.prototype.slice.call(arguments,0)))}}(SplatNode.compile_mixed_array,this,[this.objects]));return this};__extends(ArrayNode,BaseNode);ArrayNode.prototype.type="Array";ArrayNode.prototype.compile_node=function compile_node(o){var _a,_b,code,ending,i,obj,objects;o.indent=this.idt(1);objects=[];_a=this.objects;for(i=0,_b=_a.length;i<_b;i++){obj=_a[i];code=obj.compile(o);if(obj instanceof SplatNode){return this.compile_splat_literal(this.objects,o)}else{if(obj instanceof CommentNode){objects.push("\n"+code+"\n"+o.indent)}else{if(i===this.objects.length-1){objects.push(code)}else{objects.push(""+code+", ")}}}}objects=objects.join("");ending=objects.indexOf("\n")>=0?"\n"+this.tab+"]":"]";return"["+objects+ending};return ArrayNode}).call(this);exports.ClassNode=(function(){ClassNode=function ClassNode(variable,parent,props){this.children=compact(flatten([(this.variable=variable),(this.parent=parent),(this.properties=props||[])]));this.returns=false;return this};__extends(ClassNode,BaseNode);ClassNode.prototype.type="Class";ClassNode.prototype.make_return=function make_return(){this.returns=true;return this};ClassNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,applied,construct,extension,func,prop,props,returns,val;extension=this.parent&&new ExtendsNode(this.variable,this.parent);constructor=null;props=new Expressions();o.top=true;_a=this.properties;for(_b=0,_c=_a.length;_b<_c;_b++){prop=_a[_b];if(prop.variable&&prop.variable.base.value==="constructor"){func=prop.value;func.body.push(new ReturnNode(literal("this")));constructor=new AssignNode(this.variable,func)}else{if(prop.variable){val=new ValueNode(this.variable,[new AccessorNode(prop.variable,"prototype")]);prop=new AssignNode(val,prop.value)}props.push(prop)}}if(!constructor){if(this.parent){applied=new ValueNode(this.parent,[new AccessorNode(literal("apply"))]);constructor=new AssignNode(this.variable,new CodeNode([],new Expressions([new CallNode(applied,[literal("this"),literal("arguments")])])))}else{constructor=new AssignNode(this.variable,new CodeNode())}}construct=this.idt()+constructor.compile(o)+";\n";props=props.empty()?"":props.compile(o)+"\n";extension=extension?this.idt()+extension.compile(o)+";\n":"";returns=this.returns?new ReturnNode(this.variable).compile(o):"";return""+construct+extension+props+returns};return ClassNode}).call(this);statement(ClassNode);exports.AssignNode=(function(){AssignNode=function AssignNode(variable,value,context){this.children=[(this.variable=variable),(this.value=value)];this.context=context;return this};__extends(AssignNode,BaseNode);AssignNode.prototype.type="Assign";AssignNode.prototype.PROTO_ASSIGN=/^(\S+)\.prototype/;AssignNode.prototype.LEADING_DOT=/^\.(prototype\.)?/;AssignNode.prototype.top_sensitive=function top_sensitive(){return true};AssignNode.prototype.is_value=function is_value(){return this.variable instanceof ValueNode};AssignNode.prototype.make_return=function make_return(){return new Expressions([this,new ReturnNode(this.variable)])};AssignNode.prototype.is_statement=function is_statement(){return this.is_value()&&(this.variable.is_array()||this.variable.is_object())};AssignNode.prototype.compile_node=function compile_node(o){var last,match,name,proto,stmt,top,val;top=del(o,"top");if(this.is_statement()){return this.compile_pattern_match(o)}if(this.is_value()&&this.variable.is_splice()){return this.compile_splice(o)}stmt=del(o,"as_statement");name=this.variable.compile(o);last=this.is_value()?this.variable.last.replace(this.LEADING_DOT,""):name;match=name.match(this.PROTO_ASSIGN);proto=match&&match[1];if(this.value instanceof CodeNode){if(last.match(IDENTIFIER)){this.value.name=last}if(proto){this.value.proto=proto}}val=this.value.compile(o);if(this.context==="object"){return""+name+": "+val}if(!(this.is_value()&&this.variable.has_properties())){o.scope.find(name)}val=""+name+" = "+val;if(stmt){return""+this.tab+val+";"}if(top){return val}else{return"("+val+")"}};AssignNode.prototype.compile_pattern_match=function compile_pattern_match(o){var _a,_b,_c,access_class,assigns,code,i,idx,obj,oindex,olength,splat,val,val_var,value;val_var=o.scope.free_variable();value=this.value.is_statement()?ClosureNode.wrap(this.value):this.value;assigns=[""+this.tab+val_var+" = "+(value.compile(o))+";"];o.top=true;o.as_statement=true;splat=false;_a=this.variable.base.objects;for(i=0,_b=_a.length;i<_b;i++){obj=_a[i];idx=i;if(this.variable.is_object()){_c=[obj.value,obj.variable.base];obj=_c[0];idx=_c[1]}access_class=this.variable.is_array()?IndexNode:AccessorNode;if(obj instanceof SplatNode&&!splat){val=literal(obj.compile_value(o,val_var,(oindex=this.variable.base.objects.indexOf(obj)),(olength=this.variable.base.objects.length)-oindex-1));splat=true}else{if(typeof idx!=="object"){idx=literal(splat?""+(val_var)+".length - "+(olength-idx):idx)}val=new ValueNode(literal(val_var),[new access_class(idx)])}assigns.push(new AssignNode(obj,val).compile(o))}code=assigns.join("\n");return code};AssignNode.prototype.compile_splice=function compile_splice(o){var from,l,name,plus,range,to,val;name=this.variable.compile(merge(o,{only_first:true}));l=this.variable.properties.length;range=this.variable.properties[l-1].range;plus=range.exclusive?"":" + 1";from=range.from.compile(o);to=range.to.compile(o)+" - "+from+plus;val=this.value.compile(o);return""+(name)+".splice.apply("+name+", ["+from+", "+to+"].concat("+val+"))"};return AssignNode}).call(this);exports.CodeNode=(function(){CodeNode=function CodeNode(params,body,tag){this.params=params||[];this.body=body||new Expressions();this.bound=tag==="boundfunc";return this};__extends(CodeNode,BaseNode);CodeNode.prototype.type="Code";CodeNode.prototype.compile_node=function compile_node(o){var _a,_b,_c,_d,_e,_f,_g,_h,_i,_j,code,func,i,inner,name_part,param,params,shared_scope,splat,top;shared_scope=del(o,"shared_scope");top=del(o,"top");o.scope=shared_scope||new Scope(o.scope,this.body,this);o.top=true;o.indent=this.idt(this.bound?2:1);del(o,"no_wrap");del(o,"globals");i=0;splat=undefined;params=[];_a=this.params;for(_b=0,_c=_a.length;_b<_c;_b++){param=_a[_b];if(param instanceof SplatNode&&!(typeof splat!=="undefined"&&splat!==null)){splat=param;splat.index=i;this.body.unshift(splat);splat.trailings=[]}else{if((typeof splat!=="undefined"&&splat!==null)){splat.trailings.push(param)}else{params.push(param)}}i+=1}params=(function(){_d=[];_e=params;for(_f=0,_g=_e.length;_f<_g;_f++){param=_e[_f];_d.push(param.compile(o))}return _d}).call(this);this.body.make_return();_h=params;for(_i=0,_j=_h.length;_i<_j;_i++){param=_h[_i];(o.scope.parameter(param))}code=this.body.expressions.length?"\n"+(this.body.compile_with_declarations(o))+"\n":"";name_part=this.name?" "+this.name:"";func="function"+(this.bound?"":name_part)+"("+(params.join(", "))+") {"+code+(this.idt(this.bound?1:0))+"}";if(top&&!this.bound){func="("+func+")"}if(!(this.bound)){return func}inner="(function"+name_part+"() {\n"+(this.idt(2))+"return __func.apply(__this, arguments);\n"+(this.idt(1))+"});";return"(function(__this) {\n"+(this.idt(1))+"var __func = "+func+";\n"+(this.idt(1))+"return "+inner+"\n"+this.tab+"})(this)"};CodeNode.prototype.top_sensitive=function top_sensitive(){return true};CodeNode.prototype.real_children=function real_children(){return flatten([this.params,this.body.expressions])};CodeNode.prototype.traverse=function traverse(block){var _a,_b,_c,_d,child;block(this);_a=[];_b=this.real_children();for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(child.traverse(block))}return _a};CodeNode.prototype.toString=function toString(idt){var _a,_b,_c,_d,child,children;idt=idt||"";children=(function(){_a=[];_b=this.real_children();for(_c=0,_d=_b.length;_c<_d;_c++){child=_b[_c];_a.push(child.toString(idt+TAB))}return _a}).call(this).join("");return"\n"+idt+children};return CodeNode}).call(this);exports.SplatNode=(function(){SplatNode=function SplatNode(name){if(!(name.compile)){name=literal(name)}this.children=[(this.name=name)];return this};__extends(SplatNode,BaseNode);SplatNode.prototype.type="Splat";SplatNode.prototype.compile_node=function compile_node(o){var _a;if((typeof(_a=this.index)!=="undefined"&&_a!==null)){return this.compile_param(o)}else{return this.name.compile(o)}};SplatNode.prototype.compile_param=function compile_param(o){var _a,_b,_c,i,name,trailing;name=this.name.compile(o);o.scope.find(name);i=0;_a=this.trailings;for(_b=0,_c=_a.length;_b<_c;_b++){trailing=_a[_b];o.scope.assign(trailing.compile(o),"arguments[arguments.length - "+this.trailings.length+" + "+i+"]");i+=1}return""+name+" = Array.prototype.slice.call(arguments, "+this.index+", arguments.length - "+(this.trailings.length)+")"};SplatNode.prototype.compile_value=function compile_value(o,name,index,trailings){if((typeof trailings!=="undefined"&&trailings!==null)){return"Array.prototype.slice.call("+name+", "+index+", "+(name)+".length - "+trailings+")"}else{return"Array.prototype.slice.call("+name+", "+index+")"}};return SplatNode}).call(this);SplatNode.compile_mixed_array=function compile_mixed_array(list,o){var _a,_b,_c,arg,args,code,i,prev;args=[];i=0;_a=list;for(_b=0,_c=_a.length;_b<_c;_b++){arg=_a[_b];code=arg.compile(o);if(!(arg instanceof SplatNode)){prev=args[i-1];if(i===1&&prev.substr(0,1)==="["&&prev.substr(prev.length-1,1)==="]"){args[i-1]=""+(prev.substr(0,prev.length-1))+", "+code+"]";continue}else{if(i>1&&prev.substr(0,9)===".concat(["&&prev.substr(prev.length-2,2)==="])"){args[i-1]=""+(prev.substr(0,prev.length-2))+", "+code+"])";continue}else{code="["+code+"]"}}}args.push(i===0?code:".concat("+code+")");i+=1}return args.join("")};exports.WhileNode=(function(){WhileNode=function WhileNode(condition,opts){this.children=[(this.condition=condition)];this.filter=opts&&opts.filter;return this};__extends(WhileNode,BaseNode);WhileNode.prototype.type="While";WhileNode.prototype.add_body=function add_body(body){this.children.push((this.body=body));return this};WhileNode.prototype.make_return=function make_return(){this.returns=true;return this};WhileNode.prototype.top_sensitive=function top_sensitive(){return true};WhileNode.prototype.compile_node=function compile_node(o){var cond,post,pre,rvar,set,top;top=del(o,"top")&&!this.returns;o.indent=this.idt(1);o.top=true;cond=this.condition.compile(o);set="";if(!top){rvar=o.scope.free_variable();set=""+this.tab+rvar+" = [];\n";if(this.body){this.body=PushNode.wrap(rvar,this.body)}}pre=""+set+(this.tab)+"while ("+cond+")";if(!this.body){return""+pre+" null;"+post}if(this.filter){this.body=Expressions.wrap([new IfNode(this.filter,this.body)])}this.returns?(post=new ReturnNode(literal(rvar)).compile(merge(o,{indent:this.idt()}))):(post="");return""+pre+" {\n"+(this.body.compile(o))+"\n"+this.tab+"}\n"+post};return WhileNode}).call(this);statement(WhileNode);exports.OpNode=(function(){OpNode=function OpNode(operator,first,second,flip){this.type+=" "+operator;this.children=compact([(this.first=first),(this.second=second)]);this.operator=this.CONVERSIONS[operator]||operator;this.flip=!!flip;return this};__extends(OpNode,BaseNode);OpNode.prototype.type="Op";OpNode.prototype.CONVERSIONS={"==":"===","!=":"!=="};OpNode.prototype.CHAINABLE=["<",">",">=","<=","===","!=="];OpNode.prototype.ASSIGNMENT=["||=","&&=","?="];OpNode.prototype.PREFIX_OPERATORS=["typeof","delete"];OpNode.prototype.is_unary=function is_unary(){return !this.second};OpNode.prototype.is_chainable=function is_chainable(){return this.CHAINABLE.indexOf(this.operator)>=0};OpNode.prototype.compile_node=function compile_node(o){o.operation=true;if(this.is_chainable()&&this.first.unwrap() instanceof OpNode&&this.first.unwrap().is_chainable()){return this.compile_chain(o)}if(this.ASSIGNMENT.indexOf(this.operator)>=0){return this.compile_assignment(o)}if(this.is_unary()){return this.compile_unary(o)}if(this.operator==="?"){return this.compile_existence(o)}return[this.first.compile(o),this.operator,this.second.compile(o)].join(" ")};OpNode.prototype.compile_chain=function compile_chain(o){var _a,_b,first,second,shared;shared=this.first.unwrap().second;if(shared instanceof CallNode){_a=shared.compile_reference(o);this.first.second=_a[0];shared=_a[1]}_b=[this.first.compile(o),this.second.compile(o),shared.compile(o)];first=_b[0];second=_b[1];shared=_b[2];return"("+first+") && ("+shared+" "+this.operator+" "+second+")"};OpNode.prototype.compile_assignment=function compile_assignment(o){var _a,first,second;_a=[this.first.compile(o),this.second.compile(o)];first=_a[0];second=_a[1];if(first.match(IDENTIFIER)){o.scope.find(first)}if(this.operator==="?="){return""+first+" = "+(ExistenceNode.compile_test(o,this.first))+" ? "+first+" : "+second}return""+first+" = "+first+" "+(this.operator.substr(0,2))+" "+second};OpNode.prototype.compile_existence=function compile_existence(o){var _a,first,second,test;_a=[this.first.compile(o),this.second.compile(o)];first=_a[0];second=_a[1];test=ExistenceNode.compile_test(o,this.first);return""+test+" ? "+first+" : "+second};OpNode.prototype.compile_unary=function compile_unary(o){var parts,space;space=this.PREFIX_OPERATORS.indexOf(this.operator)>=0?" ":"";parts=[this.operator,space,this.first.compile(o)];if(this.flip){parts=parts.reverse()}return parts.join("")};return OpNode}).call(this);exports.TryNode=(function(){TryNode=function TryNode(attempt,error,recovery,ensure){this.children=compact([(this.attempt=attempt),(this.recovery=recovery),(this.ensure=ensure)]);this.error=error;this;return this};__extends(TryNode,BaseNode);TryNode.prototype.type="Try";TryNode.prototype.make_return=function make_return(){if(this.attempt){this.attempt=this.attempt.make_return()}if(this.recovery){this.recovery=this.recovery.make_return()}return this};TryNode.prototype.compile_node=function compile_node(o){var attempt_part,catch_part,error_part,finally_part;o.indent=this.idt(1);o.top=true;attempt_part=this.attempt.compile(o);error_part=this.error?" ("+(this.error.compile(o))+") ":" ";catch_part=this.recovery?" catch"+error_part+"{\n"+(this.recovery.compile(o))+"\n"+this.tab+"}":"";finally_part=(this.ensure||"")&&" finally {\n"+this.ensure.compile(merge(o))+"\n"+this.tab+"}";return""+(this.tab)+"try {\n"+attempt_part+"\n"+this.tab+"}"+catch_part+finally_part};return TryNode}).call(this);statement(TryNode);exports.ThrowNode=(function(){ThrowNode=function ThrowNode(expression){this.children=[(this.expression=expression)];return this};__extends(ThrowNode,BaseNode);ThrowNode.prototype.type="Throw";ThrowNode.prototype.make_return=function make_return(){return this};ThrowNode.prototype.compile_node=function compile_node(o){return""+(this.tab)+"throw "+(this.expression.compile(o))+";"};return ThrowNode}).call(this);statement(ThrowNode);exports.ExistenceNode=(function(){ExistenceNode=function ExistenceNode(expression){this.children=[(this.expression=expression)];return this};__extends(ExistenceNode,BaseNode);ExistenceNode.prototype.type="Existence";ExistenceNode.prototype.compile_node=function compile_node(o){return ExistenceNode.compile_test(o,this.expression)};return ExistenceNode}).call(this);ExistenceNode.compile_test=function compile_test(o,variable){var _a,_b,_c,first,second;_a=[variable,variable];first=_a[0];second=_a[1];if(variable instanceof CallNode||(variable instanceof ValueNode&&variable.has_properties())){_b=variable.compile_reference(o);first=_b[0];second=_b[1]}_c=[first.compile(o),second.compile(o)];first=_c[0];second=_c[1];return"(typeof "+first+' !== "undefined" && '+second+" !== null)"};exports.ParentheticalNode=(function(){ParentheticalNode=function ParentheticalNode(expression){this.children=[(this.expression=expression)];return this};__extends(ParentheticalNode,BaseNode);ParentheticalNode.prototype.type="Paren";ParentheticalNode.prototype.is_statement=function is_statement(){return this.expression.is_statement()};ParentheticalNode.prototype.make_return=function make_return(){return this.expression.make_return()};ParentheticalNode.prototype.compile_node=function compile_node(o){var code,l;code=this.expression.compile(o);if(this.is_statement()){return code}l=code.length;if(code.substr(l-1,1)===";"){code=code.substr(o,l-1)}if(this.expression instanceof AssignNode){return code}else{return"("+code+")"}};return ParentheticalNode}).call(this);exports.ForNode=(function(){ForNode=function ForNode(body,source,name,index){var _a;this.body=body;this.name=name;this.index=index||null;this.source=source.source;this.filter=source.filter;this.step=source.step;this.object=!!source.object;if(this.object){_a=[this.index,this.name];this.name=_a[0];this.index=_a[1]}this.children=compact([this.body,this.source,this.filter]);this.returns=false;return this};__extends(ForNode,BaseNode);ForNode.prototype.type="For";ForNode.prototype.top_sensitive=function top_sensitive(){return true};ForNode.prototype.make_return=function make_return(){this.returns=true;return this};ForNode.prototype.compile_return_value=function compile_return_value(val,o){if(this.returns){return new ReturnNode(literal(val)).compile(o)}return val||""};ForNode.prototype.compile_node=function compile_node(o){var body,body_dent,close,for_part,index,index_var,ivar,lvar,name,range,return_result,rvar,scope,set_result,source,source_part,step_part,svar,top_level,var_part,vars;top_level=del(o,"top")&&!this.returns;range=this.source instanceof ValueNode&&this.source.base instanceof RangeNode&&!this.source.properties.length;source=range?this.source.base:this.source;scope=o.scope;name=this.name&&this.name.compile(o);index=this.index&&this.index.compile(o);if(name){scope.find(name)}if(index){scope.find(index)}body_dent=this.idt(1);if(!(top_level)){rvar=scope.free_variable()}svar=scope.free_variable();ivar=range?name:index||scope.free_variable();var_part="";body=Expressions.wrap([this.body]);if(range){index_var=scope.free_variable();source_part=source.compile_variables(o);for_part=source.compile(merge(o,{index:ivar,step:this.step}));for_part=""+index_var+" = 0, "+for_part+", "+index_var+"++"}else{index_var=null;source_part=""+svar+" = "+(this.source.compile(o))+";\n"+this.tab;if(name){var_part=""+body_dent+name+" = "+svar+"["+ivar+"];\n"}if(!this.object){lvar=scope.free_variable();step_part=this.step?""+ivar+" += "+(this.step.compile(o)):""+ivar+"++";for_part=""+ivar+" = 0, "+lvar+" = "+(svar)+".length; "+ivar+" < "+lvar+"; "+step_part}}set_result=rvar?this.idt()+rvar+" = []; ":this.idt();return_result=this.compile_return_value(rvar,o);if(top_level&&body.contains(function(n){return n instanceof CodeNode})){body=ClosureNode.wrap(body,true)}if(!(top_level)){body=PushNode.wrap(rvar,body)}this.filter?(body=Expressions.wrap([new IfNode(this.filter,body)])):null;if(this.object){o.scope.assign("__hasProp","Object.prototype.hasOwnProperty",true);for_part=""+ivar+" in "+svar+") { if (__hasProp.call("+svar+", "+ivar+")"}body=body.compile(merge(o,{indent:body_dent,top:true}));vars=range?name:""+name+", "+ivar;close=this.object?"}}\n":"}\n";return""+set_result+(source_part)+"for ("+for_part+") {\n"+var_part+body+"\n"+this.tab+close+return_result};return ForNode}).call(this);statement(ForNode);exports.IfNode=(function(){IfNode=function IfNode(condition,body,else_body,tags){this.condition=condition;this.body=body&&body.unwrap();this.else_body=else_body&&else_body.unwrap();this.children=compact(flatten([this.condition,this.body,this.else_body]));this.tags=tags||{};if(this.condition instanceof Array){this.multiple=true}if(this.tags.invert){this.condition=new OpNode("!",new ParentheticalNode(this.condition))}return this};__extends(IfNode,BaseNode);IfNode.prototype.type="If";IfNode.prototype.push=function push(else_body){var eb;eb=else_body.unwrap();this.else_body?this.else_body.push(eb):(this.else_body=eb);return this};IfNode.prototype.force_statement=function force_statement(){this.tags.statement=true;return this};IfNode.prototype.rewrite_condition=function rewrite_condition(expression){this.switcher=expression;return this};IfNode.prototype.rewrite_switch=function rewrite_switch(o){var _a,_b,_c,assigner,cond,i,variable;assigner=this.switcher;if(!(this.switcher.unwrap() instanceof LiteralNode)){variable=literal(o.scope.free_variable());assigner=new AssignNode(variable,this.switcher);this.switcher=variable}this.condition=(function(){if(this.multiple){_a=[];_b=this.condition;for(i=0,_c=_b.length;i<_c;i++){cond=_b[i];_a.push(new OpNode("==",(i===0?assigner:this.switcher),cond))}return _a}else{return new OpNode("==",assigner,this.condition)}}).call(this);if(this.is_chain()){this.else_body.rewrite_condition(this.switcher)}return this};IfNode.prototype.add_else=function add_else(exprs,statement){if(this.is_chain()){this.else_body.add_else(exprs,statement)}else{if(!(statement)){exprs=exprs.unwrap()}this.children.push((this.else_body=exprs))}return this};IfNode.prototype.is_chain=function is_chain(){return this.chain=this.chain||this.else_body&&this.else_body instanceof IfNode};IfNode.prototype.is_statement=function is_statement(){return this.statement=this.statement||!!(this.comment||this.tags.statement||this.body.is_statement()||(this.else_body&&this.else_body.is_statement()))};IfNode.prototype.compile_condition=function compile_condition(o){var _a,_b,_c,_d,cond;return(function(){_a=[];_b=flatten([this.condition]);for(_c=0,_d=_b.length;_c<_d;_c++){cond=_b[_c];_a.push(cond.compile(o))}return _a}).call(this).join(" || ")};IfNode.prototype.compile_node=function compile_node(o){if(this.is_statement()){return this.compile_statement(o)}else{return this.compile_ternary(o)}};IfNode.prototype.make_return=function make_return(){this.body=this.body&&this.body.make_return();this.else_body=this.else_body&&this.else_body.make_return();return this};IfNode.prototype.compile_statement=function compile_statement(o){var body,child,com_dent,cond_o,else_part,if_dent,if_part,prefix;if(this.switcher){this.rewrite_switch(o)}child=del(o,"chain_child");cond_o=merge(o);o.indent=this.idt(1);o.top=true;if_dent=child?"":this.idt();com_dent=child?this.idt():"";prefix=this.comment?""+(this.comment.compile(cond_o))+"\n"+com_dent:"";body=Expressions.wrap([this.body]).compile(o);if_part=""+prefix+(if_dent)+"if ("+(this.compile_condition(cond_o))+") {\n"+body+"\n"+this.tab+"}";if(!(this.else_body)){return if_part}else_part=this.is_chain()?" else "+this.else_body.compile(merge(o,{indent:this.idt(),chain_child:true})):" else {\n"+(Expressions.wrap([this.else_body]).compile(o))+"\n"+this.tab+"}";return""+if_part+else_part};IfNode.prototype.compile_ternary=function compile_ternary(o){var else_part,if_part;if_part=this.condition.compile(o)+" ? "+this.body.compile(o);else_part=this.else_body?this.else_body.compile(o):"null";return""+if_part+" : "+else_part};return IfNode}).call(this);PushNode=(exports.PushNode={wrap:function wrap(array,expressions){var expr;expr=expressions.unwrap();if(expr.is_pure_statement()||expr.contains_pure_statement()){return expressions}return Expressions.wrap([new CallNode(new ValueNode(literal(array),[new AccessorNode(literal("push"))]),[expr])])}});ClosureNode=(exports.ClosureNode={wrap:function wrap(expressions,statement){var call,func;if(expressions.contains_pure_statement()){return expressions}func=new ParentheticalNode(new CodeNode([],Expressions.wrap([expressions])));call=new CallNode(new ValueNode(func,[new AccessorNode(literal("call"))]),[literal("this")]);if(statement){return Expressions.wrap([call])}else{return call}}});TAB=" ";TRAILING_WHITESPACE=/\s+$/gm;IDENTIFIER=/^[a-zA-Z\$_](\w|\$)*$/;literal=function literal(name){return new LiteralNode(name)}})();(function(){var Lexer,compile,helpers,lexer,parser,path,process_scripts;if((typeof process!=="undefined"&&process!==null)){path=require("path");Lexer=require("./lexer").Lexer;parser=require("./parser").parser;helpers=require("./helpers").helpers;helpers.extend(global,require("./nodes"));require.registerExtension?require.registerExtension(".coffee",function(content){return compile(content)}):null}else{this.exports=(this.CoffeeScript={});Lexer=this.Lexer;parser=this.parser;helpers=this.helpers}exports.VERSION="0.5.6";lexer=new Lexer();exports.compile=(compile=function compile(code,options){options=options||{};try{return(parser.parse(lexer.tokenize(code))).compile(options)}catch(err){if(options.source){err.message="In "+(options.source)+", "+(err.message)}throw err}});exports.tokens=function tokens(code){return lexer.tokenize(code)};exports.nodes=function nodes(code){return parser.parse(lexer.tokenize(code))};exports.run=(function(code,options){var __dirname,__filename;module.filename=(__filename=options.source);__dirname=path.dirname(__filename);return eval(exports.compile(code,options))});exports.extend=function extend(func){return Lexer.extensions.push(func)};parser.lexer={lex:function lex(){var token;token=this.tokens[this.pos]||[""];this.pos+=1;this.yylineno=token[2];this.yytext=token[1];return token[0]},setInput:function setInput(tokens){this.tokens=tokens;this.pos=0;return this.pos},upcomingInput:function upcomingInput(){return""},showPosition:function showPosition(){return this.pos}};if((typeof document!=="undefined"&&document!==null)&&document.getElementsByTagName){process_scripts=function process_scripts(){var _a,_b,_c,_d,tag;_a=[];_b=document.getElementsByTagName("script");for(_c=0,_d=_b.length;_c<_d;_c++){tag=_b[_c];tag.type==="text/coffeescript"?_a.push(eval(exports.compile(tag.innerHTML))):null}return _a};if(window.addEventListener){window.addEventListener("load",process_scripts,false)}else{if(window.attachEvent){window.attachEvent("onload",process_scripts)}}}})(); \ No newline at end of file diff --git a/index.html b/index.html index 9e17c29606..6c20b5291b 100644 --- a/index.html +++ b/index.html @@ -32,7 +32,6 @@ Conditionals, Ternaries, and Conditional Assignment Aliases Splats... - Arguments are Arrays While Loops Comprehensions (Arrays, Objects, and Ranges) Array Slicing and Splicing with Ranges @@ -45,8 +44,8 @@ Switch/When/Else Try/Catch/Finally Chained Comparisons + String and RegExp Interpolation Multiline Strings and Heredocs - String Interpolation Cake, and Cakefiles "text/coffeescript" Script Tags Resources @@ -62,7 +61,7 @@
+alert reverse '.eeffoC yrT'

           
           
@@ -76,11 +75,12 @@
         Annotated Source
       
       
- The Grammar — src/grammar - The Lexer — src/lexer + Grammar Rules — src/grammar + Lexing Tokens — src/lexer The Rewriter — src/rewriter The Syntax Tree — src/nodes Lexical Scope — src/scope + Helpers & Utility Functions — src/helpers The CoffeeScript Module — src/coffee-script Cake & Cakefiles — src/cake "coffee" Command-Line Utility — src/command @@ -115,7 +115,7 @@

Latest Version: - 0.5.5 + 0.5.6

@@ -179,7 +179,7 @@

// Splats: race = function race(winner) { var runners; - runners = Array.prototype.slice.call(arguments, 1); + runners = Array.prototype.slice.call(arguments, 1, arguments.length - 0); return print(winner, runners); }; // Existence: @@ -220,7 +220,7 @@

// Splats: race = function race(winner) { var runners; - runners = Array.prototype.slice.call(arguments, 1); + runners = Array.prototype.slice.call(arguments, 1, arguments.length - 0); return print(winner, runners); }; // Existence: @@ -240,7 +240,7 @@

For a longer CoffeeScript example, check out - Underscore.coffee, a port + Underscore.coffee, a port of the Underscore.js library of helper functions. Underscore.coffee can pass the entire Underscore.js test suite. The CoffeeScript version is faster than the original for a number @@ -258,7 +258,7 @@

The CoffeeScript compiler is written in pure CoffeeScript, using a - small DSL + small DSL on top of the Jison parser generator, and is available as a Node.js utility. The core compiler however, does not depend on Node, and can be run in other server-side-JavaScript environments, @@ -268,11 +268,11 @@

To install, first make sure you have a working version of - Node.js version 0.1.31 or higher. + Node.js version 0.1.33 or higher. Then clone the CoffeeScript source repository from GitHub, or download the latest - release: 0.5.5. + release: 0.5.6. To install the CoffeeScript compiler system-wide under /usr/local, open the directory and run:

@@ -341,14 +341,14 @@

@@ -546,7 +546,8 @@

change_numbers = function change_numbers() { var new_num; new_num = -1; - return num = 10; + num = 10; + return num; }; new_num = change_numbers();
@@ -566,6 +568,13 @@

should not be able to change the value of the external variable of the same name, and therefore has a declaration of its own.

+

+ This behavior is effectively identical to Ruby's scope for local variables. + Because you don't have direct access to the var keyword, + it's impossible to shadow an outer variable on purpose, you may only refer + to it. So be careful that you're not reusing the name of an external + variable accidentally, if you're writing a deeply nested function. +

Although suppressed within this documentation for clarity, all CoffeeScript output is wrapped in an anonymous function: @@ -601,7 +610,7 @@

date: if friday then sue else jill -expensive ||= do_the_math() +expensive: or do_the_math()
var date, expensive, mood;
 if (singing) {
   mood = greatly_improved;
@@ -614,10 +623,9 @@ 

expensive = expensive || do_the_math();


- The conditional assignment operators are included: ||=, - which only assigns a value to a variable if the variable's current value - is falsy, and &&=, which only replaces the value of - truthy variables. + You can assign a variable to a half-expression to perform an operation + like Ruby's ||=, which only assigns a value to a variable + if the variable's current value is falsy.

@@ -712,10 +720,11 @@

gold = (silver = (the_field = "unknown")); award_medals = function award_medals(first, second) { var rest; - rest = Array.prototype.slice.call(arguments, 2); + rest = Array.prototype.slice.call(arguments, 2, arguments.length - 0); gold = first; silver = second; - return the_field = rest; + the_field = rest; + return the_field; }; contenders = ["Michael Phelps", "Liu Xiang", "Yao Ming", "Allyson Felix", "Shawn Johnson", "Roman Sebrle", "Guo Jingjing", "Tyson Gay", "Asafa Powell", "Usain Bolt"]; award_medals.apply(this, contenders); @@ -726,42 +735,17 @@

gold = (silver = (the_field = "unknown")); award_medals = function award_medals(first, second) { var rest; - rest = Array.prototype.slice.call(arguments, 2); + rest = Array.prototype.slice.call(arguments, 2, arguments.length - 0); gold = first; silver = second; - return the_field = rest; + the_field = rest; + return the_field; }; contenders = ["Michael Phelps", "Liu Xiang", "Yao Ming", "Allyson Felix", "Shawn Johnson", "Roman Sebrle", "Guo Jingjing", "Tyson Gay", "Asafa Powell", "Usain Bolt"]; award_medals.apply(this, contenders); alert("Gold: " + gold); alert("Silver: " + silver); alert("The Field: " + the_field); -;'>run
- -

- - Arguments are Arrays - If you reference the arguments object directly, it will be converted - into a real Array, making all of the - Array methods - available. -

-
backwards: ->
-  alert arguments.reverse()
-
-backwards "stairway", "to", "heaven"
-
var backwards;
-backwards = function backwards() {
-  arguments = Array.prototype.slice.call(arguments, 0);
-  return alert(arguments.reverse());
-};
-backwards("stairway", "to", "heaven");
-

@@ -995,7 +979,7 @@

numbers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
-numbers[3..6]: [-3, -4, -5, -6]
+numbers[3..6]: [-3, -4, -5, -6]
 
 
 
var numbers;
@@ -1030,7 +1014,11 @@ 

if (student.excellent_work) { return "A+"; } else if (student.okay_stuff) { - return student.tried_hard ? "B" : "B-"; + if (student.tried_hard) { + return "B"; + } else { + return "B-"; + } } else { return "C"; } @@ -1041,7 +1029,11 @@

if (student.excellent_work) { return "A+"; } else if (student.okay_stuff) { - return student.tried_hard ? "B" : "B-"; + if (student.tried_hard) { + return "B"; + } else { + return "B-"; + } } else { return "C"; } @@ -1059,9 +1051,9 @@

six: (one: 1) + (two: 2) + (three: 3)
 
var one, six, three, two;
-six = ((one = 1)) + ((two = 2)) + ((three = 3));
+six = (one = 1) + (two = 2) + (three = 3);
 

Things that would otherwise be statements in JavaScript, when used @@ -1298,7 +1290,7 @@

If structuring your prototypes classically isn't your cup of tea, CoffeeScript provides a couple of lower-level conveniences. The extends operator - helps with proper prototype setup, as seen above, :: gives you + helps with proper prototype setup, :: gives you quick access to an object's prototype, and super() is converted into a call against the immediate ancestor's method of the same name.

@@ -1416,6 +1408,29 @@

street = _c[0]; city = _c[1]; ;alert(poet + " — " + street);'>run: poet + " — " + street

+

+ Pattern matching can even be combined with splats. +

+
tag: "<impossible>"
+
+[open, contents..., close]: tag.split("")
+
+
+
+
+
var _a, close, contents, open, tag;
+tag = "<impossible>";
+_a = tag.split("");
+open = _a[0];
+contents = Array.prototype.slice.call(_a, 1, _a.length - 1);
+close = _a[_a.length - 1];
+

@@ -1428,7 +1443,7 @@

gives a good overview of the quirks.

- The fat arrow => can be used to both define a function, and to bind + The fat arrow => can be used to both define a function, and to bind it to the current value of this, right on the spot. This is helpful when using callback-based libraries like Prototype or jQuery, for creating iterator functions to pass to each, or event-handler functions @@ -1460,6 +1475,40 @@

have referred to the undefined "customer" property of the DOM element, and trying to call purchase() on it would have raised an exception.

+

+ If you have more custom needs for function binding, CoffeeScript includes + the <- bind operator, which works the same as ECMAScript 5 + and Prototype.js's Function#bind. The first argument is the this + value, and the remainder are curried arguments. In the example below, + we curry a jQuery request for a URL, and then execute the bound function + with the missing callback argument. +

+
url: "documentation/coffee/binding.coffee"
+
+get_source: jQuery.get <- jQuery, url
+
+get_source (response) -> alert response
+
var get_source, url;
+url = "documentation/coffee/binding.coffee";
+get_source = (function(func, obj, args) {
+  return function() {
+    return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)));
+  };
+}(jQuery.get, jQuery, [url]));
+get_source(function(response) {
+  return alert(response);
+});
+

@@ -1571,6 +1620,42 @@

healthy = (200 > cholesterol) && (cholesterol > 60); ;alert(healthy);'>run: healthy
+

+ + String and RegExp Interpolation + A version of ECMAScript Harmony's proposed string interpolation + is included in CoffeeScript. Simple variables can be included by marking + them with a dollar sign. +

+
author: "Wittgenstein"
+quote:  "A picture is a fact. -- $author"
+
var author, quote;
+author = "Wittgenstein";
+quote = "A picture is a fact. -- " + author;
+

+

+ And arbitrary expressions can be interpolated by using brackets ${ ... }
+ Interpolation works the same way within regular expressions. +

+
sentence: "${ 22 / 7 } is a decent approximation of π"
+
+sep:   "[.\\/\\- ]"
+dates: /\d+$sep\d+$sep\d+/g
+
+
+
var dates, sentence, sep;
+sentence = "" + (22 / 7) + " is a decent approximation of π";
+sep = "[.\\/\\- ]";
+dates = (new RegExp("\\d+" + sep + "\\d+" + sep + "\\d+", "g"));
+

+

Multiline Strings and Heredocs @@ -1611,37 +1696,11 @@

</strong> '''
var html;
-html = "<strong>\n  cup of coffeescript\n</strong>";
+html = '<strong>\n  cup of coffeescript\n</strong>';
 

- -

- - String Interpolation - A version of ECMAScript Harmony's proposed string interpolation - is included in CoffeeScript. Simple variables can be included by marking - them with a dollar sign. -

-
author: "Wittgenstein"
-quote:  "A picture is a fact. -- $author"
-
var author, quote;
-author = "Wittgenstein";
-quote = "A picture is a fact. -- " + author;
-

- And arbitrary expressions can be interpolated by using brackets ${ ... } + Double-quoted heredocs, like double-quoted strings, allow interpolation.

-
sentence: "${ 22 / 7 } is a decent approximation of π"
-
-
-
-
var sentence;
-sentence = (22 / 7) + " is a decent approximation of π";
-

@@ -1662,13 +1721,10 @@

function to invoke when the task is run. Here's a hypothetical task that uses the Node.js API.

-
process.mixin require 'assert'
-
-task 'test', 'run each of the unit tests', ->
+    
task 'test', 'run each of the unit tests', ->
   for test in test_files
     fs.readFile test, (err, code) -> eval coffee.compile code
-
process.mixin(require('assert'));
-task('test', 'run each of the unit tests', function() {
+
task('test', 'run each of the unit tests', function() {
   var _a, _b, _c, _d, test;
   _a = []; _b = test_files;
   for (_c = 0, _d = _b.length; _c < _d; _c++) {
@@ -1755,6 +1811,17 @@ 

Change Log

+

+ 0.5.6 + Interpolation can now be used within regular expressions and heredocs, as well as + strings. Added the <- bind operator. + Allowing assignment to half-expressions instead of special ||=-style + operators. The arguments object is no longer automatically converted into + an array. After requiring coffee-script, Node.js can now directly + load .coffee files, thanks to registerExtension. Multiple + splats can now be used in function calls, arrays, and pattern matching. +

+

0.5.5 String interpolation, contributed by diff --git a/lib/cake.js b/lib/cake.js index e8664d5497..058f00817a 100755 --- a/lib/cake.js +++ b/lib/cake.js @@ -1,5 +1,5 @@ (function(){ - var CoffeeScript, fs, no_such_task, oparse, options, optparse, path, print_tasks, switches, tasks; + var CoffeeScript, fs, helpers, no_such_task, oparse, options, optparse, path, print_tasks, switches, tasks; var __hasProp = Object.prototype.hasOwnProperty; // `cake` is a simplified version of [Make](http://www.gnu.org/software/make/) // ([Rake](http://rake.rubyforge.org/), [Jake](http://github.com/280north/jake)) @@ -10,23 +10,25 @@ // External dependencies. fs = require('fs'); path = require('path'); - optparse = require('optparse'); - CoffeeScript = require('coffee-script'); + helpers = require('./helpers').helpers; + optparse = require('./optparse'); + CoffeeScript = require('./coffee-script'); // Keep track of the list of defined tasks, the accepted options, and so on. tasks = {}; options = {}; switches = []; oparse = null; // Mixin the top-level Cake functions for Cakefiles to use directly. - process.mixin({ + helpers.extend(global, { // Define a Cake task with a short name, a sentence description, // and the function to run as the action itself. task: function task(name, description, action) { - return tasks[name] = { + tasks[name] = { name: name, description: description, action: action }; + return tasks[name]; }, // Define an option that the Cakefile accepts. The parsed options hash, // containing all of the command-line options passed, will be made available diff --git a/lib/coffee-script.js b/lib/coffee-script.js index 9415827aaa..068d1a23eb 100644 --- a/lib/coffee-script.js +++ b/lib/coffee-script.js @@ -1,5 +1,5 @@ (function(){ - var lexer, parser, path, process_scripts; + var Lexer, compile, helpers, lexer, parser, path, process_scripts; // CoffeeScript can be used both on the server, as a command-line compiler based // on Node.js/V8, or to run CoffeeScripts directly in the browser. This module // contains the main entry functions for tokenzing, parsing, and compiling source @@ -8,20 +8,28 @@ // execute all scripts present in `text/coffeescript` tags. // Set up dependencies correctly for both the server and the browser. if ((typeof process !== "undefined" && process !== null)) { - process.mixin(require('nodes')); path = require('path'); - lexer = new (require('lexer').Lexer)(); - parser = require('parser').parser; + Lexer = require('./lexer').Lexer; + parser = require('./parser').parser; + helpers = require('./helpers').helpers; + helpers.extend(global, require('./nodes')); + require.registerExtension ? require.registerExtension('.coffee', function(content) { + return compile(content); + }) : null; } else { - lexer = new Lexer(); - parser = exports.parser; this.exports = (this.CoffeeScript = {}); + Lexer = this.Lexer; + parser = this.parser; + helpers = this.helpers; } // The current CoffeeScript version number. - exports.VERSION = '0.5.5'; + exports.VERSION = '0.5.6'; + // Instantiate a Lexer for our use here. + lexer = new Lexer(); // Compile a string of CoffeeScript code to JavaScript, using the Coffee/Jison // compiler. - exports.compile = function compile(code, options) { + exports.compile = (compile = function compile(code, options) { + options = options || {}; try { return (parser.parse(lexer.tokenize(code))).compile(options); } catch (err) { @@ -30,7 +38,7 @@ } throw err; } - }; + }); // Tokenize a string of CoffeeScript code, and return the array of tokens. exports.tokens = function tokens(code) { return lexer.tokenize(code); @@ -43,11 +51,18 @@ }; // Compile and execute a string of CoffeeScript (on the server), correctly // setting `__filename`, `__dirname`, and relative `require()`. - exports.run = function run(code, options) { + exports.run = (function(code, options) { var __dirname, __filename; module.filename = (__filename = options.source); __dirname = path.dirname(__filename); return eval(exports.compile(code, options)); + }); + // Extend CoffeeScript with a custom language extension. It should hook in to + // the **Lexer** (as a peer of any of the lexer's tokenizing methods), and + // push a token on to the stack that contains a **Node** as the value (as a + // peer of the nodes in [nodes.coffee](nodes.html)). + exports.extend = function extend(func) { + return Lexer.extensions.push(func); }; // The real Lexer produces a generic stream of tokens. This object provides a // thin wrapper around it, compatible with the Jison API. We can then pass it @@ -63,7 +78,8 @@ }, setInput: function setInput(tokens) { this.tokens = tokens; - return this.pos = 0; + this.pos = 0; + return this.pos; }, upcomingInput: function upcomingInput() { return ""; @@ -82,9 +98,7 @@ _a = []; _b = document.getElementsByTagName('script'); for (_c = 0, _d = _b.length; _c < _d; _c++) { tag = _b[_c]; - if (tag.type === 'text/coffeescript') { - _a.push(eval(exports.compile(tag.innerHTML))); - } + tag.type === 'text/coffeescript' ? _a.push(eval(exports.compile(tag.innerHTML))) : null; } return _a; }; diff --git a/lib/command.js b/lib/command.js index 050ff05018..3365eb3b5e 100644 --- a/lib/command.js +++ b/lib/command.js @@ -8,10 +8,10 @@ // External dependencies. fs = require('fs'); path = require('path'); - optparse = require('optparse'); - CoffeeScript = require('coffee-script'); + optparse = require('./optparse'); + CoffeeScript = require('./coffee-script'); // The help banner that is printed when `coffee` is called without arguments. - BANNER = "coffee compiles CoffeeScript source files into JavaScript.\n\nUsage:\n coffee path/to/script.coffee"; + BANNER = 'coffee compiles CoffeeScript source files into JavaScript.\n\nUsage:\n coffee path/to/script.coffee'; // The list of all the valid option flags that `coffee` knows how to handle. SWITCHES = [['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-o', '--output [DIR]', 'set the directory for compiled JavaScript'], ['-w', '--watch', 'watch scripts for changes, and recompile'], ['-p', '--print', 'print the compiled JavaScript to stdout'], ['-l', '--lint', 'pipe the compiled JavaScript through JSLint'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-e', '--eval', 'compile a string from the command line'], ['--no-wrap', 'compile without the top-level function wrapper'], ['-t', '--tokens', 'print the tokens that the lexer produces'], ['-n', '--nodes', 'print the parse tree that Jison produces'], ['-v', '--version', 'display CoffeeScript version'], ['-h', '--help', 'display this help message']]; // Top-level objects shared by all the functions. @@ -31,7 +31,7 @@ return version(); } if (options.interactive) { - return require('repl'); + return require('./repl'); } if (options.stdio) { return compile_stdio(); @@ -202,7 +202,8 @@ o = (options = option_parser.parse(process.argv)); options.run = !(o.compile || o.print || o.lint); options.print = !!(o.print || (o.eval || o.stdio && o.compile)); - return sources = options.arguments.slice(2, options.arguments.length); + sources = options.arguments.slice(2, options.arguments.length); + return sources; }; // The compile-time options to pass to the CoffeeScript compiler. compile_options = function compile_options(source) { diff --git a/lib/grammar.js b/lib/grammar.js index a600ec2c3b..da36101cee 100644 --- a/lib/grammar.js +++ b/lib/grammar.js @@ -67,7 +67,7 @@ // CoffeeScript is the **Expression** -- you'll notice that there is no // "statement" nonterminal. Expressions serve as the building blocks // of many other rules, making them somewhat circular. - Expression: [o("Value"), o("Call"), o("Code"), o("Operation"), o("Assign"), o("If"), o("Try"), o("Throw"), o("Return"), o("While"), o("For"), o("Switch"), o("Extends"), o("Class"), o("Splat"), o("Existence"), o("Comment")], + Expression: [o("Value"), o("Call"), o("Curry"), o("Code"), o("Operation"), o("Assign"), o("If"), o("Try"), o("Throw"), o("Return"), o("While"), o("For"), o("Switch"), o("Extends"), o("Class"), o("Splat"), o("Existence"), o("Comment"), o("Extension")], // A an indented block of expressions. Note that the [Rewriter](rewriter.html) // will convert some postfix forms into blocks for us, by adjusting the // token stream. @@ -75,6 +75,8 @@ return $2; }), o("INDENT OUTDENT", function() { return new Expressions(); + }), o("TERMINATOR Comment", function() { + return Expressions.wrap([$2]); }) ], // A literal identifier, a variable name or property. @@ -211,6 +213,8 @@ return new AccessorNode($2); }), o("PROTOTYPE_ACCESS Identifier", function() { return new AccessorNode($2, 'prototype'); + }), o("::", function() { + return new AccessorNode(new LiteralNode('prototype')); }), o("SOAK_ACCESS Identifier", function() { return new AccessorNode($2, 'soak'); }), o("Index"), o("Slice", function() { @@ -268,6 +272,10 @@ return $2.new_instance(); }), o("Super") ], + Curry: [o("Value <- Arguments", function() { + return new CurryNode($1, $3); + }) + ], // Extending an object by setting its prototype chain to reference a parent // object. Extends: [o("Value EXTENDS Value", function() { @@ -340,7 +348,11 @@ // this to be separate from the **ArgList** for use in **Switch** blocks, where // having the newlines wouldn't make sense. SimpleArgs: [o("Expression"), o("SimpleArgs , Expression", function() { - return $1 instanceof Array ? $1.concat([$3]) : [$1].concat([$3]); + if ($1 instanceof Array) { + return $1.concat([$3]); + } else { + return [$1].concat([$3]); + } }) ], // The variants of *try/catch/finally* exception handling blocks. @@ -370,6 +382,12 @@ return new ParentheticalNode($2); }) ], + // A language extension to CoffeeScript from the outside. We simply pass + // it through unaltered. + Extension: [o("EXTENSION", function() { + return yytext; + }) + ], // The condition portion of a while loop. WhileSource: [o("WHILE Expression", function() { return new WhileNode($2); @@ -384,7 +402,7 @@ While: [o("WhileSource Block", function() { return $1.add_body($2); }), o("Expression WhileSource", function() { - return $2.add_body($1); + return $2.add_body(Expressions.wrap([$1])); }) ], // Array, object, and range comprehensions, at the most generic level. @@ -503,8 +521,6 @@ return new OpNode('+', $2); }), { prec: 'UPLUS' - }), o("NOT Expression", function() { - return new OpNode('not', $2); }), o("~ Expression", function() { return new OpNode('~', $2); }), o("-- Expression", function() { @@ -553,18 +569,10 @@ return new OpNode('==', $1, $3); }), o("Expression != Expression", function() { return new OpNode('!=', $1, $3); - }), o("Expression IS Expression", function() { - return new OpNode('is', $1, $3); - }), o("Expression ISNT Expression", function() { - return new OpNode('isnt', $1, $3); }), o("Expression && Expression", function() { return new OpNode('&&', $1, $3); }), o("Expression || Expression", function() { return new OpNode('||', $1, $3); - }), o("Expression AND Expression", function() { - return new OpNode('and', $1, $3); - }), o("Expression OR Expression", function() { - return new OpNode('or', $1, $3); }), o("Expression ? Expression", function() { return new OpNode('?', $1, $3); }), o("Expression -= Expression", function() { @@ -597,7 +605,7 @@ // 2 + (3 * 4) // And not: // (2 + 3) * 4 - operators = [["left", '?'], ["nonassoc", 'UMINUS', 'UPLUS', 'NOT', '!', '!!', '~', '++', '--'], ["left", '*', '/', '%'], ["left", '+', '-'], ["left", '<<', '>>', '>>>'], ["left", '&', '|', '^'], ["left", '<=', '<', '>', '>='], ["right", 'DELETE', 'INSTANCEOF', 'TYPEOF'], ["left", '==', '!=', 'IS', 'ISNT'], ["left", '&&', '||', 'AND', 'OR'], ["right", '-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?='], ["left", '.'], ["right", 'INDENT'], ["left", 'OUTDENT'], ["right", 'WHEN', 'LEADING_WHEN', 'IN', 'OF', 'BY', 'THROW'], ["right", 'FOR', 'NEW', 'SUPER', 'CLASS'], ["left", 'EXTENDS'], ["right", 'ASSIGN', 'RETURN'], ["right", '->', '=>', 'UNLESS', 'IF', 'ELSE', 'WHILE']]; + operators = [["left", '?'], ["nonassoc", 'UMINUS', 'UPLUS', '!', '!!', '~', '++', '--'], ["left", '*', '/', '%'], ["left", '+', '-'], ["left", '<<', '>>', '>>>'], ["left", '&', '|', '^'], ["left", '<=', '<', '>', '>='], ["right", 'DELETE', 'INSTANCEOF', 'TYPEOF'], ["left", '==', '!='], ["left", '&&', '||'], ["right", '-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?='], ["left", '.'], ["right", 'INDENT'], ["left", 'OUTDENT'], ["right", 'WHEN', 'LEADING_WHEN', 'IN', 'OF', 'BY', 'THROW'], ["right", 'FOR', 'NEW', 'SUPER', 'CLASS'], ["left", 'EXTENDS'], ["right", 'ASSIGN', 'RETURN'], ["right", '->', '=>', '<-', 'UNLESS', 'IF', 'ELSE', 'WHILE']]; // Wrapping Up // ----------- // Finally, now what we have our **grammar** and our **operators**, we can create diff --git a/lib/helpers.js b/lib/helpers.js new file mode 100644 index 0000000000..6a336e8d5d --- /dev/null +++ b/lib/helpers.js @@ -0,0 +1,143 @@ +(function(){ + var balanced_string, compact, count, del, extend, flatten, helpers, include, merge, starts; + var __hasProp = Object.prototype.hasOwnProperty; + // This file contains the common helper functions that we'd like to share among + // the **Lexer**, **Rewriter**, and the **Nodes**. Merge objects, flatten + // arrays, count characters, that sort of thing. + // Set up exported variables for both **Node.js** and the browser. + if (!((typeof process !== "undefined" && process !== null))) { + this.exports = this; + } + helpers = (exports.helpers = {}); + // Does a list include a value? + helpers.include = (include = function include(list, value) { + return list.indexOf(value) >= 0; + }); + // Peek at the beginning of a given string to see if it matches a sequence. + helpers.starts = (starts = function starts(string, literal, start) { + return string.substring(start, (start || 0) + literal.length) === literal; + }); + // Trim out all falsy values from an array. + helpers.compact = (compact = function compact(array) { + var _a, _b, _c, _d, item; + _a = []; _b = array; + for (_c = 0, _d = _b.length; _c < _d; _c++) { + item = _b[_c]; + item ? _a.push(item) : null; + } + return _a; + }); + // Count the number of occurences of a character in a string. + helpers.count = (count = function count(string, letter) { + var num, pos; + num = 0; + pos = string.indexOf(letter); + while (pos !== -1) { + num += 1; + pos = string.indexOf(letter, pos + 1); + } + return num; + }); + // Merge objects, returning a fresh copy with attributes from both sides. + // Used every time `BaseNode#compile` is called, to allow properties in the + // options hash to propagate down the tree without polluting other branches. + helpers.merge = (merge = function merge(options, overrides) { + var _a, _b, fresh, key, val; + fresh = {}; + _a = options; + for (key in _a) { if (__hasProp.call(_a, key)) { + val = _a[key]; + (fresh[key] = val); + }} + if (overrides) { + _b = overrides; + for (key in _b) { if (__hasProp.call(_b, key)) { + val = _b[key]; + (fresh[key] = val); + }} + } + return fresh; + }); + // Extend a source object with the properties of another object (shallow copy). + // We use this to simulate Node's deprecated `process.mixin` + helpers.extend = (extend = function extend(object, properties) { + var _a, _b, key, val; + _a = []; _b = properties; + for (key in _b) { if (__hasProp.call(_b, key)) { + val = _b[key]; + _a.push((object[key] = val)); + }} + return _a; + }); + // Return a completely flattened version of an array. Handy for getting a + // list of `children` from the nodes. + helpers.flatten = (flatten = function flatten(array) { + var _a, _b, _c, item, memo; + memo = []; + _a = array; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + item = _a[_b]; + item instanceof Array ? (memo = memo.concat(item)) : memo.push(item); + } + return memo; + }); + // Delete a key from an object, returning the value. Useful when a node is + // looking for a particular method in an options hash. + helpers.del = (del = function del(obj, key) { + var val; + val = obj[key]; + delete obj[key]; + return val; + }); + // Matches a balanced group such as a single or double-quoted string. Pass in + // a series of delimiters, all of which must be nested correctly within the + // contents of the string. This method allows us to have strings within + // interpolations within strings, ad infinitum. + helpers.balanced_string = (balanced_string = function balanced_string(str, delimited, options) { + var _a, _b, _c, _d, close, i, levels, open, pair, slash; + options = options || {}; + slash = delimited[0][0] === '/'; + levels = []; + i = 0; + while (i < str.length) { + if (levels.length && starts(str, '\\', i)) { + i += 1; + } else { + _a = delimited; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + pair = _a[_b]; + _d = pair; + open = _d[0]; + close = _d[1]; + if (levels.length && starts(str, close, i) && levels[levels.length - 1] === pair) { + levels.pop(); + i += close.length - 1; + if (!(levels.length)) { + i += 1; + } + break; + } else if (starts(str, open, i)) { + levels.push(pair); + i += open.length - 1; + break; + } + } + } + if (!levels.length || slash && starts(str, '\n', i)) { + break; + } + i += 1; + } + if (levels.length) { + if (slash) { + return false; + } + throw new Error("SyntaxError: Unterminated " + (levels.pop()[0]) + " starting on line " + (this.line + 1)); + } + if (!i) { + return false; + } else { + return str.substring(0, i); + } + }); +})(); diff --git a/lib/lexer.js b/lib/lexer.js index fab26120be..ccf8cac147 100644 --- a/lib/lexer.js +++ b/lib/lexer.js @@ -1,5 +1,5 @@ (function(){ - var ACCESSORS, ASSIGNMENT, BEFORE_WHEN, CALLABLE, CODE, COFFEE_KEYWORDS, COMMENT, COMMENT_CLEANER, HEREDOC, HEREDOC_INDENT, IDENTIFIER, INTERPOLATION, JS_CLEANER, JS_FORBIDDEN, JS_KEYWORDS, KEYWORDS, LAST_DENT, LAST_DENTS, Lexer, MULTILINER, MULTI_DENT, NOT_REGEX, NO_NEWLINE, NUMBER, OPERATOR, REGEX, RESERVED, Rewriter, STRING_NEWLINES, WHITESPACE, compact, count, include, starts; + var ACCESSORS, ASSIGNMENT, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_KEYWORDS, COMMENT, COMMENT_CLEANER, CONVERSIONS, HALF_ASSIGNMENTS, HEREDOC, HEREDOC_INDENT, IDENTIFIER, INTERPOLATION, JS_CLEANER, JS_FORBIDDEN, JS_KEYWORDS, KEYWORDS, LAST_DENT, LAST_DENTS, LINE_BREAK, Lexer, MULTILINER, MULTI_DENT, NOT_REGEX, NO_NEWLINE, NUMBER, OPERATOR, REGEX_ESCAPE, REGEX_FLAGS, REGEX_INTERPOLATION, REGEX_START, RESERVED, Rewriter, STRING_NEWLINES, WHITESPACE, balanced_string, compact, count, helpers, include, starts; // The CoffeeScript Lexer. Uses a series of token-matching regexes to attempt // matches against the beginning of the source code. When a match is found, // a token is produced, we consume the match, and start again. Tokens are in the @@ -9,10 +9,18 @@ // Set up the Lexer for both Node.js and the browser, depending on where we are. if ((typeof process !== "undefined" && process !== null)) { Rewriter = require('./rewriter').Rewriter; + helpers = require('./helpers').helpers; } else { this.exports = this; Rewriter = this.Rewriter; + helpers = this.helpers; } + // Import the helpers we need. + include = helpers.include; + count = helpers.count; + starts = helpers.starts; + compact = helpers.compact; + balanced_string = helpers.balanced_string; // The Lexer Class // --------------- // The Lexer class reads a stream of CoffeeScript and divvys it up into tagged @@ -32,6 +40,7 @@ // unless explicitly asked not to. Lexer.prototype.tokenize = function tokenize(code, options) { var o; + code = code.replace(/(\r|\s+$)/g, ''); o = options || {}; this.code = code; // The remainder of the source code. @@ -59,6 +68,9 @@ // short-circuiting if any of them succeed. Their order determines precedence: // `@literal_token` is the fallback catch-all. Lexer.prototype.extract_next_token = function extract_next_token() { + if (this.extension_token()) { + return null; + } if (this.identifier_token()) { return null; } @@ -90,6 +102,19 @@ }; // Tokenizers // ---------- + // Language extensions get the highest priority, first chance to tag tokens + // as something else. + Lexer.prototype.extension_token = function extension_token() { + var _a, _b, _c, extension; + _a = Lexer.extensions; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + extension = _a[_b]; + if (extension.call(this)) { + return true; + } + } + return false; + }; // Matches identifying literals: variables, keywords, method names, etc. // Check to ensure that JavaScript reserved words aren't being used as // identifiers. Because CoffeeScript reserves a handful of keywords that are @@ -97,29 +122,38 @@ // referenced as property names here, so you can still do `jQuery.is()` even // though `is` means `===` otherwise. Lexer.prototype.identifier_token = function identifier_token() { - var id, tag; - if (!((id = this.match(IDENTIFIER, 1)))) { + var accessed, id, tag; + if (!(id = this.match(IDENTIFIER, 1))) { return false; } this.name_access_type(); + accessed = include(ACCESSORS, this.tag(0)); tag = 'IDENTIFIER'; - if (include(KEYWORDS, id) && !(include(ACCESSORS, this.tag(0)) && !this.prev().spaced)) { + if (!accessed && include(KEYWORDS, id)) { tag = id.toUpperCase(); } if (include(RESERVED, id)) { this.identifier_error(id); } - if (tag === 'WHEN' && include(BEFORE_WHEN, this.tag())) { + if (tag === 'WHEN' && include(LINE_BREAK, this.tag())) { tag = 'LEADING_WHEN'; } - this.token(tag, id); this.i += id.length; + if (!accessed) { + if (include(COFFEE_ALIASES, id)) { + tag = (id = CONVERSIONS[id]); + } + if (this.prev() && this.prev()[0] === 'ASSIGN' && include(HALF_ASSIGNMENTS, tag)) { + return this.tag_half_assignment(tag); + } + } + this.token(tag, id); return true; }; // Matches numbers, including decimals, hex, and exponential notation. Lexer.prototype.number_token = function number_token() { var number; - if (!((number = this.match(NUMBER, 1)))) { + if (!(number = this.match(NUMBER, 1))) { return false; } this.token('NUMBER', number); @@ -133,11 +167,7 @@ if (!(starts(this.chunk, '"') || starts(this.chunk, "'"))) { return false; } - string = this.balanced_token(['"', '"'], ['${', '}']); - if (!(string)) { - string = this.balanced_token(["'", "'"]); - } - if (!(string)) { + if (!(string = this.balanced_token(['"', '"'], ['${', '}']) || this.balanced_token(["'", "'"]))) { return false; } this.interpolate_string(string.replace(STRING_NEWLINES, " \\\n")); @@ -148,12 +178,13 @@ // Matches heredocs, adjusting indentation to the correct level, as heredocs // preserve whitespace, but ignore indentation to the left. Lexer.prototype.heredoc_token = function heredoc_token() { - var doc, match; - if (!((match = this.chunk.match(HEREDOC)))) { + var doc, match, quote; + if (!(match = this.chunk.match(HEREDOC))) { return false; } - doc = this.sanitize_heredoc(match[2] || match[4]); - this.token('STRING', "\"" + doc + "\""); + quote = match[1].substr(0, 1); + doc = this.sanitize_heredoc(match[2] || match[4], quote); + this.interpolate_string("" + quote + doc + quote); this.line += count(match[1], "\n"); this.i += match[1].length; return true; @@ -164,7 +195,7 @@ if (!(starts(this.chunk, '`'))) { return false; } - if (!((script = this.balanced_token(['`', '`'])))) { + if (!(script = this.balanced_token(['`', '`']))) { return false; } this.token('JS', script.replace(JS_CLEANER, '')); @@ -173,16 +204,31 @@ }; // Matches regular expression literals. Lexing regular expressions is difficult // to distinguish from division, so we borrow some basic heuristics from - // JavaScript and Ruby. + // JavaScript and Ruby, borrow slash balancing from `@balanced_token`, and + // borrow interpolation from `@interpolate_string`. Lexer.prototype.regex_token = function regex_token() { - var regex; - if (!((regex = this.match(REGEX, 1)))) { + var flags, regex, str; + if (!(this.chunk.match(REGEX_START))) { return false; } if (include(NOT_REGEX, this.tag())) { return false; } - this.token('REGEX', regex); + if (!(regex = this.balanced_token(['/', '/']))) { + return false; + } + regex += (flags = this.chunk.substr(regex.length).match(REGEX_FLAGS)); + if (regex.match(REGEX_INTERPOLATION)) { + str = regex.substring(1).split('/')[0]; + str = str.replace(REGEX_ESCAPE, function(escaped) { + return '\\' + escaped; + }); + this.tokens = this.tokens.concat([['(', '('], ['NEW', 'new'], ['IDENTIFIER', 'RegExp'], ['CALL_START', '(']]); + this.interpolate_string("\"" + str + "\"", true); + this.tokens = this.tokens.concat([[',', ','], ['STRING', "\"" + flags + "\""], [')', ')'], [')', ')']]); + } else { + this.token('REGEX', regex); + } this.i += regex.length; return true; }; @@ -190,20 +236,25 @@ // balanced (ie. strings, JS literals). Lexer.prototype.balanced_token = function balanced_token() { var delimited; - delimited = Array.prototype.slice.call(arguments, 0); - return this.balanced_string.apply(this, [this.chunk].concat(delimited)); + delimited = Array.prototype.slice.call(arguments, 0, arguments.length - 0); + return balanced_string(this.chunk, delimited); }; // Matches and conumes comments. We pass through comments into JavaScript, // so they're treated as real tokens, like any other part of the language. Lexer.prototype.comment_token = function comment_token() { - var comment, lines; - if (!((comment = this.match(COMMENT, 1)))) { + var comment, i, lines; + if (!(comment = this.match(COMMENT, 1))) { return false; } this.line += (comment.match(MULTILINER) || []).length; - lines = comment.replace(COMMENT_CLEANER, '').split(MULTILINER); - this.token('COMMENT', compact(lines)); - this.token('TERMINATOR', "\n"); + lines = compact(comment.replace(COMMENT_CLEANER, '').split(MULTILINER)); + i = this.tokens.length - 1; + if (this.unfinished()) { + while (this.tokens[i] && !include(LINE_BREAK, this.tokens[i][0])) { + i -= 1; + } + } + this.tokens.splice(i + 1, 0, ['COMMENT', lines, this.line], ['TERMINATOR', '\n', this.line]); this.i += comment.length; return true; }; @@ -217,7 +268,7 @@ // can close multiple indents, so we need to know how far in we happen to be. Lexer.prototype.line_token = function line_token() { var diff, indent, next_character, no_newlines, prev, size; - if (!((indent = this.match(MULTI_DENT, 1)))) { + if (!(indent = this.match(MULTI_DENT, 1))) { return false; } this.line += indent.match(MULTILINER).length; @@ -225,7 +276,7 @@ prev = this.prev(2); size = indent.match(LAST_DENTS).reverse()[0].match(LAST_DENT)[1].length; next_character = this.chunk.match(MULTI_DENT)[4]; - no_newlines = next_character === '.' || (this.value() && this.value().match(NO_NEWLINE) && prev && (prev[0] !== '.') && !this.value().match(CODE)); + no_newlines = next_character === '.' || this.unfinished(); if (size === this.indent) { if (no_newlines) { return this.suppress_newlines(); @@ -262,7 +313,7 @@ // as being "spaced", because there are some cases where it makes a difference. Lexer.prototype.whitespace_token = function whitespace_token() { var prev, space; - if (!((space = this.match(WHITESPACE, 1)))) { + if (!(space = this.match(WHITESPACE, 1))) { return false; } prev = this.prev(); @@ -293,14 +344,15 @@ // here. `;` and newlines are both treated as a `TERMINATOR`, we distinguish // parentheses that indicate a method call from regular parentheses, and so on. Lexer.prototype.literal_token = function literal_token() { - var match, not_spaced, tag, value; + var match, prev_spaced, space, tag, value; match = this.chunk.match(OPERATOR); value = match && match[1]; + space = match && match[2]; if (value && value.match(CODE)) { this.tag_parameters(); } value = value || this.chunk.substr(0, 1); - not_spaced = !this.prev() || !this.prev().spaced; + prev_spaced = this.prev() && this.prev().spaced; tag = value; if (value.match(ASSIGNMENT)) { tag = 'ASSIGN'; @@ -309,14 +361,14 @@ } } else if (value === ';') { tag = 'TERMINATOR'; - } else if (value === '[' && this.tag() === '?' && not_spaced) { + } else if (value === '[' && this.tag() === '?' && !prev_spaced) { tag = 'SOAKED_INDEX_START'; this.soaked_index = true; this.tokens.pop(); } else if (value === ']' && this.soaked_index) { tag = 'SOAKED_INDEX_END'; this.soaked_index = false; - } else if (include(CALLABLE, this.tag()) && not_spaced) { + } else if (include(CALLABLE, this.tag()) && !prev_spaced) { if (value === '(') { tag = 'CALL_START'; } @@ -324,8 +376,11 @@ tag = 'INDEX_START'; } } - this.token(tag, value); this.i += value.length; + if (space && prev_spaced && this.prev()[0] === 'ASSIGN' && include(HALF_ASSIGNMENTS, tag)) { + return this.tag_half_assignment(tag); + } + this.token(tag, value); return true; }; // Token Manipulators @@ -347,10 +402,17 @@ }; // Sanitize a heredoc by escaping internal double quotes and erasing all // external indentation on the left-hand side. - Lexer.prototype.sanitize_heredoc = function sanitize_heredoc(doc) { + Lexer.prototype.sanitize_heredoc = function sanitize_heredoc(doc, quote) { var indent; indent = (doc.match(HEREDOC_INDENT) || ['']).sort()[0]; - return doc.replace(new RegExp("^" + indent, 'gm'), '').replace(MULTILINER, "\\n").replace(/"/g, '\\"'); + return doc.replace(new RegExp("^" + indent, 'gm'), '').replace(MULTILINER, "\\n").replace(new RegExp(quote, 'g'), '\\"'); + }; + // Tag a half assignment. + Lexer.prototype.tag_half_assignment = function tag_half_assignment(tag) { + var last; + last = this.tokens.pop(); + this.tokens.push(["" + tag + "=", "" + tag + "=", last[2]]); + return true; }; // A source of ambiguity in our grammar used to be parameter lists in function // definitions versus argument lists in function calls. Walk backwards, tagging @@ -391,51 +453,6 @@ Lexer.prototype.assignment_error = function assignment_error() { throw new Error("SyntaxError: Reserved word \"" + (this.value()) + "\" on line " + (this.line + 1) + " can't be assigned"); }; - // Matches a balanced group such as a single or double-quoted string. Pass in - // a series of delimiters, all of which must be nested correctly within the - // contents of the string. This method allows us to have strings within - // interpolations within strings etc... - Lexer.prototype.balanced_string = function balanced_string(str) { - var _a, _b, _c, _d, close, delimited, i, levels, open, pair; - delimited = Array.prototype.slice.call(arguments, 1); - levels = []; - i = 0; - while (i < str.length) { - _a = delimited; - for (_b = 0, _c = _a.length; _b < _c; _b++) { - pair = _a[_b]; - _d = pair; - open = _d[0]; - close = _d[1]; - if (levels.length && starts(str, '\\', i)) { - i += 1; - break; - } else if (levels.length && starts(str, close, i) && levels[levels.length - 1] === pair) { - levels.pop(); - i += close.length - 1; - if (!(levels.length)) { - i += 1; - } - break; - } else if (starts(str, open, i)) { - levels.push(pair); - i += open.length - 1; - break; - } - } - if (!(levels.length)) { - break; - } - i += 1; - } - if (levels.length) { - throw new Error("SyntaxError: Unterminated " + (levels.pop()[0]) + " starting on line " + (this.line + 1)); - } - if (i === 0) { - return false; - } - return str.substring(0, i); - }; // Expand variables and expressions inside double-quoted strings using // [ECMA Harmony's interpolation syntax](http://wiki.ecmascript.org/doku.php?id=strawman:string_interpolation) // for substitution of bare variables as well as arbitrary expressions. @@ -444,8 +461,8 @@ // If it encounters an interpolation, this method will recursively create a // new Lexer, tokenize the interpolated contents, and merge them into the // token stream. - Lexer.prototype.interpolate_string = function interpolate_string(str) { - var _a, _b, _c, _d, _e, each, expr, group, i, inner, interp, lexer, match, nested, pi, quote, tokens; + Lexer.prototype.interpolate_string = function interpolate_string(str, escape_quotes) { + var _a, _b, _c, _d, _e, escaped, expr, group, i, inner, interp, lexer, match, nested, pi, quote, tag, token, tokens, value; if (str.length < 3 || !starts(str, '"')) { return this.token('STRING', str); } else { @@ -466,14 +483,14 @@ interp = "this." + (interp.substring(1)); } if (pi < i) { - tokens.push(['STRING', quote + (str.substring(pi, i)) + quote]); + tokens.push(['STRING', "" + quote + (str.substring(pi, i)) + quote]); } tokens.push(['IDENTIFIER', interp]); i += group.length - 1; pi = i + 1; - } else if (((expr = this.balanced_string(str.substring(i), ['${', '}'])))) { + } else if ((expr = balanced_string(str.substring(i), [['${', '}']]))) { if (pi < i) { - tokens.push(['STRING', quote + (str.substring(pi, i)) + quote]); + tokens.push(['STRING', "" + quote + (str.substring(pi, i)) + quote]); } inner = expr.substring(2, expr.length - 1); if (inner.length) { @@ -484,7 +501,7 @@ nested.pop(); tokens.push(['TOKENS', nested]); } else { - tokens.push(['STRING', quote + quote]); + tokens.push(['STRING', "" + quote + quote]); } i += expr.length - 1; pi = i + 1; @@ -492,19 +509,30 @@ i += 1; } if (pi < i && pi < str.length - 1) { - tokens.push(['STRING', quote + (str.substring(pi, i)) + quote]); + tokens.push(['STRING', "" + quote + (str.substring(pi, i)) + quote]); } - _c = []; _d = tokens; - for (i = 0, _e = _d.length; i < _e; i++) { - each = _d[i]; - _c.push((function() { - each[0] === 'TOKENS' ? (this.tokens = this.tokens.concat(each[1])) : this.token(each[0], each[1]); - if (i < tokens.length - 1) { - return this.token('+', '+'); - } - }).call(this)); + if (!(tokens[0][0] === 'STRING')) { + tokens.unshift(['STRING', '""']); } - return _c; + _c = tokens; + for (i = 0, _d = _c.length; i < _d; i++) { + token = _c[i]; + _e = token; + tag = _e[0]; + value = _e[1]; + if (tag === 'TOKENS') { + this.tokens = this.tokens.concat(value); + } else if (tag === 'STRING' && escape_quotes) { + escaped = value.substring(1, value.length - 1).replace(/"/g, '\\"'); + this.token(tag, "\"" + escaped + "\""); + } else { + this.token(tag, value); + } + if (i < tokens.length - 1) { + this.token('+', '+'); + } + } + return tokens; } }; // Helpers @@ -516,7 +544,7 @@ // Peek at a tag in the current token stream. Lexer.prototype.tag = function tag(index, tag) { var tok; - if (!((tok = this.prev(index)))) { + if (!(tok = this.prev(index))) { return null; } if ((typeof tag !== "undefined" && tag !== null)) { @@ -527,7 +555,7 @@ // Peek at a value in the current token stream. Lexer.prototype.value = function value(index, val) { var tok; - if (!((tok = this.prev(index)))) { + if (!(tok = this.prev(index))) { return null; } if ((typeof val !== "undefined" && val !== null)) { @@ -543,20 +571,33 @@ // match if successful, and `false` otherwise. Lexer.prototype.match = function match(regex, index) { var m; - if (!((m = this.chunk.match(regex)))) { + if (!(m = this.chunk.match(regex))) { + return false; + } + if (m) { + return m[index]; + } else { return false; } - return m ? m[index] : false; + }; + // Are we in the midst of an unfinished expression? + Lexer.prototype.unfinished = function unfinished() { + var prev; + prev = this.prev(2); + return this.value() && this.value().match && this.value().match(NO_NEWLINE) && prev && (prev[0] !== '.') && !this.value().match(CODE); }; return Lexer; }).call(this); + // There are no exensions to the core lexer by default. + Lexer.extensions = []; // Constants // --------- // Keywords that CoffeeScript shares in common with JavaScript. JS_KEYWORDS = ["if", "else", "true", "false", "new", "return", "try", "catch", "finally", "throw", "break", "continue", "for", "in", "while", "delete", "instanceof", "typeof", "switch", "super", "extends", "class"]; // CoffeeScript-only keywords, which we're more relaxed about allowing. They can't // be used standalone, but you can reference them as an attached property. - COFFEE_KEYWORDS = ["then", "unless", "yes", "no", "on", "off", "and", "or", "is", "isnt", "not", "of", "by", "where", "when"]; + COFFEE_ALIASES = ["and", "or", "is", "isnt", "not"]; + COFFEE_KEYWORDS = COFFEE_ALIASES.concat(["then", "unless", "yes", "no", "on", "off", "of", "by", "where", "when"]); // The combined list of keywords is the superset that gets passed verbatim to // the parser. KEYWORDS = JS_KEYWORDS.concat(COFFEE_KEYWORDS); @@ -568,19 +609,23 @@ // be used as identifiers or properties. JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED); // Token matching regexes. - IDENTIFIER = /^([a-zA-Z$_](\w|\$)*)/; + IDENTIFIER = /^([a-zA-Z\$_](\w|\$)*)/; NUMBER = /^(\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?)))\b/i; HEREDOC = /^("{6}|'{6}|"{3}\n?([\s\S]*?)\n?([ \t]*)"{3}|'{3}\n?([\s\S]*?)\n?([ \t]*)'{3})/; INTERPOLATION = /^\$([a-zA-Z_@]\w*(\.\w+)*)/; - OPERATOR = /^([+\*&|\/\-%=<>:!?]+)/; + OPERATOR = /^([+\*&|\/\-%=<>:!?]+)([ \t]*)/; WHITESPACE = /^([ \t]+)/; COMMENT = /^(((\n?[ \t]*)?#[^\n]*)+)/; CODE = /^((-|=)>)/; - REGEX = /^(\/(\S.*?)?([^\\]|\\\\)\/[imgy]{0,4})/; MULTI_DENT = /^((\n([ \t]*))+)(\.)?/; LAST_DENTS = /\n([ \t]*)/g; LAST_DENT = /\n([ \t]*)/; ASSIGNMENT = /^(:|=)$/; + // Regex-matching-regexes. + REGEX_START = /^\/[^\/ ]/; + REGEX_INTERPOLATION = /([^\\]\$[a-zA-Z_@]|[^\\]\$\{.*[^\\]\})/; + REGEX_FLAGS = /^[imgy]{0,4}/; + REGEX_ESCAPE = /\\[^\$]/g; // Token cleaning regexes. JS_CLEANER = /(^`|`$)/g; MULTILINER = /\n/g; @@ -603,38 +648,15 @@ // Tokens that, when immediately preceding a `WHEN`, indicate that the `WHEN` // occurs at the start of a line. We disambiguate these from trailing whens to // avoid an ambiguity in the grammar. - BEFORE_WHEN = ['INDENT', 'OUTDENT', 'TERMINATOR']; - // Utility Functions - // ----------------- - // Does a list include a value? - include = function include(list, value) { - return list.indexOf(value) >= 0; - }; - // Peek at the beginning of a given string to see if it matches a sequence. - starts = function starts(string, literal, start) { - return string.substring(start, (start || 0) + literal.length) === literal; - }; - // Trim out all falsy values from an array. - compact = function compact(array) { - var _a, _b, _c, _d, item; - _a = []; _b = array; - for (_c = 0, _d = _b.length; _c < _d; _c++) { - item = _b[_c]; - if (item) { - _a.push(item); - } - } - return _a; - }; - // Count the number of occurences of a character in a string. - count = function count(string, letter) { - var num, pos; - num = 0; - pos = string.indexOf(letter); - while (pos !== -1) { - num += 1; - pos = string.indexOf(letter, pos + 1); - } - return num; + LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR']; + // Half-assignments... + HALF_ASSIGNMENTS = ['-', '+', '/', '*', '%', '||', '&&', '?']; + // Conversions from CoffeeScript operators into JavaScript ones. + CONVERSIONS = { + 'and': '&&', + 'or': '||', + 'is': '==', + 'isnt': '!=', + 'not': '!' }; })(); diff --git a/lib/nodes.js b/lib/nodes.js index 3ea376a64f..a0a4fc2f7b 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -1,19 +1,31 @@ (function(){ - var AccessorNode, ArrayNode, AssignNode, BaseNode, CallNode, ClassNode, ClosureNode, CodeNode, CommentNode, ExistenceNode, Expressions, ExtendsNode, ForNode, IDENTIFIER, IfNode, IndexNode, LiteralNode, ObjectNode, OpNode, ParentheticalNode, PushNode, RangeNode, ReturnNode, SliceNode, SplatNode, TAB, TRAILING_WHITESPACE, ThrowNode, TryNode, ValueNode, WhileNode, compact, del, flatten, literal, merge, statement; + var AccessorNode, ArrayNode, AssignNode, BaseNode, CallNode, ClassNode, ClosureNode, CodeNode, CommentNode, CurryNode, ExistenceNode, Expressions, ExtendsNode, ForNode, IDENTIFIER, IfNode, IndexNode, LiteralNode, ObjectNode, OpNode, ParentheticalNode, PushNode, RangeNode, ReturnNode, Scope, SliceNode, SplatNode, TAB, TRAILING_WHITESPACE, ThrowNode, TryNode, ValueNode, WhileNode, compact, del, flatten, helpers, literal, merge, statement; var __extends = function(child, parent) { var ctor = function(){ }; ctor.prototype = parent.prototype; child.__superClass__ = parent.prototype; child.prototype = new ctor(); child.prototype.constructor = child; - }, __hasProp = Object.prototype.hasOwnProperty; + }; // `nodes.coffee` contains all of the node classes for the syntax tree. Most // nodes are created as the result of actions in the [grammar](grammar.html), // but some are created by other nodes as a method of code generation. To convert // the syntax tree into a string of JavaScript code, call `compile()` on the root. // Set up for both **Node.js** and the browser, by // including the [Scope](scope.html) class. - (typeof process !== "undefined" && process !== null) ? process.mixin(require('scope')) : (this.exports = this); + if ((typeof process !== "undefined" && process !== null)) { + Scope = require('./scope').Scope; + helpers = require('./helpers').helpers; + } else { + this.exports = this; + helpers = this.helpers; + Scope = this.Scope; + } + // Import the helpers we need. + compact = helpers.compact; + flatten = helpers.flatten; + merge = helpers.merge; + del = helpers.del; // Helper function that marks a node as a JavaScript *statement*, or as a // *pure_statement*. Statements must be wrapped in a closure when used as an // expression, and nodes tagged as *pure_statement* cannot be closure-wrapped @@ -23,9 +35,10 @@ return true; }; if (only) { - return ((klass.prototype.is_pure_statement = function is_pure_statement() { + klass.prototype.is_pure_statement = function is_pure_statement() { return true; - })); + }; + return klass.prototype.is_pure_statement; } }; //### BaseNode @@ -53,14 +66,16 @@ var closure, top; this.options = merge(o || {}); this.tab = o.indent; - if (!(this.operation_sensitive())) { + if (!(this instanceof ValueNode)) { del(this.options, 'operation'); } top = this.top_sensitive() ? this.options.top : del(this.options, 'top'); - closure = this.is_statement() && !this.is_pure_statement() && !top && !this.options.returns && !(this instanceof CommentNode) && !this.contains(function(node) { - return node.is_pure_statement(); - }); - return closure ? this.compile_closure(this.options) : this.compile_node(this.options); + closure = this.is_statement() && !this.is_pure_statement() && !top && !this.options.as_statement && !(this instanceof CommentNode) && !this.contains_pure_statement(); + if (closure) { + return this.compile_closure(this.options); + } else { + return this.compile_node(this.options); + } }; // Statements converted into expressions via closure-wrapping share a scope // object with their parent closure, to preserve the expected lexical scope. @@ -84,10 +99,16 @@ idt = this.tab || ''; num = (tabs || 0) + 1; while (num -= 1) { -idt += TAB + idt += TAB; } return idt; }; + // Construct a node that returns the current node's result. + // Note that this is overridden for smarter behavior for + // many statement nodes (eg IfNode, ForNode)... + BaseNode.prototype.make_return = function make_return() { + return new ReturnNode(this); + }; // Does this node, or any of its children, contain a node of a certain kind? // Recursively traverses down the *children* of the nodes, yielding to a block // and returning true when the block finds a match. `contains` does not cross @@ -106,6 +127,13 @@ idt += TAB } return false; }; + // Convenience for the most common use of contains. Does the node contain + // a pure statement? + BaseNode.prototype.contains_pure_statement = function contains_pure_statement() { + return this.is_pure_statement() || this.contains(function(n) { + return n.is_pure_statement(); + }); + }; // Perform an in-order traversal of the AST. Crosses scope boundaries. BaseNode.prototype.traverse = function traverse(block) { var _a, _b, _c, _d, node; @@ -150,9 +178,6 @@ idt += TAB BaseNode.prototype.top_sensitive = function top_sensitive() { return false; }; - BaseNode.prototype.operation_sensitive = function operation_sensitive() { - return false; - }; return BaseNode; }).call(this); //### Expressions @@ -179,23 +204,45 @@ idt += TAB // If this Expressions consists of just a single node, unwrap it by pulling // it back out. Expressions.prototype.unwrap = function unwrap() { - return this.expressions.length === 1 ? this.expressions[0] : this; + if (this.expressions.length === 1) { + return this.expressions[0]; + } else { + return this; + } }; // Is this an empty block of code? Expressions.prototype.empty = function empty() { return this.expressions.length === 0; }; - // Is the given node the last one in this block of expressions? - Expressions.prototype.is_last = function is_last(node) { - var l, last_index; - l = this.expressions.length; - last_index = this.expressions[l - 1] instanceof CommentNode ? 2 : 1; - return node === this.expressions[l - last_index]; + // Make a copy of this node. + Expressions.prototype.copy = function copy() { + return new Expressions(this.children.slice()); + }; + // An Expressions node does not return its entire body, rather it + // ensures that the final expression is returned. + Expressions.prototype.make_return = function make_return() { + var idx, last; + idx = this.expressions.length - 1; + last = this.expressions[idx]; + if (last instanceof CommentNode) { + last = this.expressions[idx -= 1]; + } + if (!last || last instanceof ReturnNode) { + return this; + } + if (!(last.contains_pure_statement())) { + this.expressions[idx] = last.make_return(); + } + return this; }; // An **Expressions** is the only node that can serve as the root. Expressions.prototype.compile = function compile(o) { o = o || {}; - return o.scope ? Expressions.__superClass__.compile.call(this, o) : this.compile_root(o); + if (o.scope) { + return Expressions.__superClass__.compile.call(this, o); + } else { + return this.compile_root(o); + } }; Expressions.prototype.compile_node = function compile_node(o) { var _a, _b, _c, _d, node; @@ -216,24 +263,22 @@ idt += TAB o.scope = new Scope(null, this, null); code = o.globals ? this.compile_node(o) : this.compile_with_declarations(o); code = code.replace(TRAILING_WHITESPACE, ''); - return o.no_wrap ? code : "(function(){\n" + code + "\n})();\n"; + if (o.no_wrap) { + return code; + } else { + return "(function(){\n" + code + "\n})();\n"; + } }; // Compile the expressions body for the contents of a function, with // declarations of all inner variables pushed up to the top. Expressions.prototype.compile_with_declarations = function compile_with_declarations(o) { - var args, code; + var code; code = this.compile_node(o); - args = this.contains(function(node) { - return node instanceof ValueNode && node.is_arguments(); - }); - if (args) { - code = (this.tab) + "arguments = Array.prototype.slice.call(arguments, 0);\n" + code; - } if (o.scope.has_assignments(this)) { - code = (this.tab) + "var " + (o.scope.compiled_assignments()) + ";\n" + code; + code = "" + (this.tab) + "var " + (o.scope.compiled_assignments()) + ";\n" + code; } if (o.scope.has_declarations(this)) { - code = (this.tab) + "var " + (o.scope.compiled_declarations()) + ";\n" + code; + code = "" + (this.tab) + "var " + (o.scope.compiled_declarations()) + ";\n" + code; } return code; }; @@ -241,21 +286,16 @@ idt += TAB // return the result, and it's an expression, simply return it. If it's a // statement, ask the statement to do so. Expressions.prototype.compile_expression = function compile_expression(node, o) { - var returns, stmt; + var compiled_node; this.tab = o.indent; - stmt = node.is_statement(); - returns = del(o, 'returns') && this.is_last(node) && !node.is_pure_statement(); - if (!(returns)) { - return (stmt ? '' : this.idt()) + node.compile(merge(o, { - top: true - })) + (stmt ? '' : ';'); - } + compiled_node = node.compile(merge(o, { + top: true + })); if (node.is_statement()) { - return node.compile(merge(o, { - returns: true - })); + return compiled_node; + } else { + return "" + (this.idt()) + compiled_node + ";"; } - return (this.tab) + "return " + (node.compile(o)) + ";"; }; return Expressions; }).call(this); @@ -289,7 +329,7 @@ idt += TAB var end, idt; idt = this.is_statement() ? this.idt() : ''; end = this.is_statement() ? ';' : ''; - return idt + this.value + end; + return "" + idt + this.value + end; }; LiteralNode.prototype.toString = function toString(idt) { return " \"" + this.value + "\""; @@ -308,11 +348,9 @@ idt += TAB ReturnNode.prototype.type = 'Return'; ReturnNode.prototype.compile_node = function compile_node(o) { if (this.expression.is_statement()) { - return this.expression.compile(merge(o, { - returns: true - })); + o.as_statement = true; } - return (this.tab) + "return " + (this.expression.compile(o)) + ";"; + return "" + (this.tab) + "return " + (this.expression.compile(o)) + ";"; }; return ReturnNode; }).call(this); @@ -335,9 +373,6 @@ idt += TAB this.children.push(prop); return this; }; - ValueNode.prototype.operation_sensitive = function operation_sensitive() { - return true; - }; ValueNode.prototype.has_properties = function has_properties() { return !!this.properties.length; }; @@ -351,13 +386,21 @@ idt += TAB ValueNode.prototype.is_splice = function is_splice() { return this.has_properties() && this.properties[this.properties.length - 1] instanceof SliceNode; }; - ValueNode.prototype.is_arguments = function is_arguments() { - return this.base.value === 'arguments'; + ValueNode.prototype.make_return = function make_return() { + if (this.has_properties()) { + return ValueNode.__superClass__.make_return.call(this); + } else { + return this.base.make_return(); + } }; // The value can be unwrapped as its inner node, if there are no attached // properties. ValueNode.prototype.unwrap = function unwrap() { - return this.properties.length ? this : this.base; + if (this.properties.length) { + return this; + } else { + return this.base; + } }; // Values are considered to be statements if their base is a statement. ValueNode.prototype.is_statement = function is_statement() { @@ -386,7 +429,7 @@ idt += TAB soaked = true; if (this.base instanceof CallNode && prop === props[0]) { temp = o.scope.free_variable(); - complete = "(" + temp + " = " + complete + ")" + this.SOAK + ((baseline = temp + prop.compile(o))); + complete = "(" + temp + " = " + complete + ")" + this.SOAK + (baseline = temp + prop.compile(o)); } else { complete = complete + this.SOAK + (baseline += prop.compile(o)); } @@ -397,7 +440,11 @@ idt += TAB this.last = part; } } - return op && soaked ? "(" + complete + ")" : complete; + if (op && soaked) { + return "(" + complete + ")"; + } else { + return complete; + } }; return ValueNode; }).call(this); @@ -412,8 +459,11 @@ idt += TAB }; __extends(CommentNode, BaseNode); CommentNode.prototype.type = 'Comment'; + CommentNode.prototype.make_return = function make_return() { + return this; + }; CommentNode.prototype.compile_node = function compile_node(o) { - return this.tab + "//" + this.lines.join("\n" + this.tab + "//"); + return "" + this.tab + "//" + this.lines.join("\n" + this.tab + "//"); }; return CommentNode; }).call(this); @@ -423,54 +473,66 @@ idt += TAB // calls against the prototype's function of the same name. exports.CallNode = (function() { CallNode = function CallNode(variable, args) { - this.children = flatten([(this.variable = variable), (this.args = (args || []))]); - this.prefix = ''; + this.is_new = false; + this.is_super = variable === 'super'; + this.variable = this.is_super ? null : variable; + this.children = compact(flatten([this.variable, (this.args = (args || []))])); + this.compile_splat_arguments = (function(func, obj, args) { + return function() { + return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0))); + }; + }(SplatNode.compile_mixed_array, this, [this.args])); return this; }; __extends(CallNode, BaseNode); CallNode.prototype.type = 'Call'; // Tag this invocation as creating a new instance. CallNode.prototype.new_instance = function new_instance() { - this.prefix = 'new '; + this.is_new = true; return this; }; - // Add an argument to the call's arugment list. - CallNode.prototype.push = function push(arg) { - this.args.push(arg); - this.children.push(arg); - return this; + CallNode.prototype.prefix = function prefix() { + if (this.is_new) { + return 'new '; + } else { + return ''; + } }; // Compile a vanilla function call. CallNode.prototype.compile_node = function compile_node(o) { - var _a, _b, _c, _d, arg, args; - if (this.args[this.args.length - 1] instanceof SplatNode) { - return this.compile_splat(o); + var _a, _b, _c, _d, _e, _f, _g, arg, args; + _a = this.args; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + arg = _a[_b]; + if (arg instanceof SplatNode) { + return this.compile_splat(o); + } } args = (function() { - _a = []; _b = this.args; - for (_c = 0, _d = _b.length; _c < _d; _c++) { - arg = _b[_c]; - _a.push(arg.compile(o)); + _d = []; _e = this.args; + for (_f = 0, _g = _e.length; _f < _g; _f++) { + arg = _e[_f]; + _d.push(arg.compile(o)); } - return _a; + return _d; }).call(this).join(', '); - if (this.variable === 'super') { + if (this.is_super) { return this.compile_super(args, o); } - return this.prefix + (this.variable.compile(o)) + "(" + args + ")"; + return "" + (this.prefix()) + (this.variable.compile(o)) + "(" + args + ")"; }; // `super()` is converted into a call against the superclass's implementation // of the current function. CallNode.prototype.compile_super = function compile_super(args, o) { var meth, methname; methname = o.scope.method.name; - meth = o.scope.method.proto ? (o.scope.method.proto) + ".__superClass__." + methname : (methname) + ".__superClass__.constructor"; - return (meth) + ".call(this" + (args.length ? ', ' : '') + args + ")"; + meth = o.scope.method.proto ? "" + (o.scope.method.proto) + ".__superClass__." + methname : "" + (methname) + ".__superClass__.constructor"; + return "" + (meth) + ".call(this" + (args.length ? ', ' : '') + args + ")"; }; // If you call a function with a splat, it's converted into a JavaScript - // `.apply()` call to allow the variable-length arguments. + // `.apply()` call to allow an array of arguments to be passed. CallNode.prototype.compile_splat = function compile_splat(o) { - var _a, _b, _c, arg, args, code, i, meth, obj, temp; + var meth, obj, temp; meth = this.variable.compile(o); obj = this.variable.source || 'this'; if (obj.match(/\(/)) { @@ -478,22 +540,47 @@ idt += TAB obj = temp; meth = "(" + temp + " = " + (this.variable.source) + ")" + (this.variable.last); } - args = (function() { - _a = []; _b = this.args; - for (i = 0, _c = _b.length; i < _c; i++) { - arg = _b[i]; - _a.push((function() { - code = arg.compile(o); - code = arg instanceof SplatNode ? code : "[" + code + "]"; - return i === 0 ? code : ".concat(" + code + ")"; - }).call(this)); - } - return _a; - }).call(this); - return this.prefix + (meth) + ".apply(" + obj + ", " + (args.join('')) + ")"; + return "" + (this.prefix()) + (meth) + ".apply(" + obj + ", " + (this.compile_splat_arguments(o)) + ")"; }; return CallNode; }).call(this); + //### CurryNode + // Binds a context object and a list of arguments to a function, + // returning the bound function. After ECMAScript 5, Prototype.js, and + // Underscore's `bind` functions. + exports.CurryNode = (function() { + CurryNode = function CurryNode(meth, args) { + this.children = flatten([(this.meth = meth), (this.context = args[0]), (this.args = (args.slice(1) || []))]); + this.compile_splat_arguments = (function(func, obj, args) { + return function() { + return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0))); + }; + }(SplatNode.compile_mixed_array, this, [this.args])); + return this; + }; + __extends(CurryNode, CallNode); + CurryNode.prototype.type = 'Curry'; + CurryNode.prototype.body = 'func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)))'; + CurryNode.prototype.arguments = function arguments(o) { + var _a, _b, _c, arg; + _a = this.args; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + arg = _a[_b]; + if (arg instanceof SplatNode) { + return this.compile_splat_arguments(o); + } + } + return (new ArrayNode(this.args)).compile(o); + }; + CurryNode.prototype.compile_node = function compile_node(o) { + var body, curried, curry; + body = Expressions.wrap([literal(this.body)]); + curried = new CodeNode([], body); + curry = new CodeNode([literal('func'), literal('obj'), literal('args')], Expressions.wrap([curried])); + return (new ParentheticalNode(new CallNode(curry, [this.meth, this.context, literal(this.arguments(o))]))).compile(o); + }; + return CurryNode; + }).call(this); //### ExtendsNode // Node to extend an object's prototype with an ancestor object. // After `goog.inherits` from the @@ -505,7 +592,7 @@ idt += TAB }; __extends(ExtendsNode, BaseNode); ExtendsNode.prototype.type = 'Extends'; - ExtendsNode.prototype.code = "function(child, parent) {\n var ctor = function(){ };\n ctor.prototype = parent.prototype;\n child.__superClass__ = parent.prototype;\n child.prototype = new ctor();\n child.prototype.constructor = child;\n }"; + ExtendsNode.prototype.code = 'function(child, parent) {\n var ctor = function(){ };\n ctor.prototype = parent.prototype;\n child.__superClass__ = parent.prototype;\n child.prototype = new ctor();\n child.prototype.constructor = child;\n }'; // Hooks one constructor into another's prototype chain. ExtendsNode.prototype.compile_node = function compile_node(o) { var call, ref; @@ -530,12 +617,14 @@ idt += TAB __extends(AccessorNode, BaseNode); AccessorNode.prototype.type = 'Accessor'; AccessorNode.prototype.compile_node = function compile_node(o) { - return '.' + (this.prototype ? 'prototype.' : '') + this.name.compile(o); + var proto_part; + proto_part = this.prototype ? 'prototype.' : ''; + return "." + proto_part + (this.name.compile(o)); }; return AccessorNode; }).call(this); //### IndexNode - // An indexed accessor into an array or object. + // A `[ ... ]` indexed accessor into an array or object. exports.IndexNode = (function() { IndexNode = function IndexNode(index, tag) { this.children = [(this.index = index)]; @@ -573,7 +662,7 @@ idt += TAB _b = [this.from.compile(o), this.to.compile(o)]; from = _b[0]; to = _b[1]; - return this.from_var + " = " + from + "; " + this.to_var + " = " + to + ";\n" + this.tab; + return "" + this.from_var + " = " + from + "; " + this.to_var + " = " + to + ";\n" + this.tab; }; // When compiled normally, the range returns the contents of the *for loop* // needed to iterate over the values in the range. Used by comprehensions. @@ -584,13 +673,13 @@ idt += TAB } idx = del(o, 'index'); step = del(o, 'step'); - vars = idx + " = " + this.from_var; + vars = "" + idx + " = " + this.from_var; step = step ? step.compile(o) : '1'; equals = this.exclusive ? '' : '='; intro = "(" + this.from_var + " <= " + this.to_var + " ? " + idx; - compare = intro + " <" + equals + " " + this.to_var + " : " + idx + " >" + equals + " " + this.to_var + ")"; - incr = intro + " += " + step + " : " + idx + " -= " + step + ")"; - return vars + "; " + compare + "; " + incr; + compare = "" + intro + " <" + equals + " " + this.to_var + " : " + idx + " >" + equals + " " + this.to_var + ")"; + incr = "" + intro + " += " + step + " : " + idx + " -= " + step + ")"; + return "" + vars + "; " + compare + "; " + incr; }; // When used as a value, expand the range into the equivalent array. In the // future, the code this generates should probably be cleaned up by handwriting @@ -603,7 +692,7 @@ idt += TAB source: (new ValueNode(this)) }, literal(name)) ]); - return (new ParentheticalNode(new CallNode(new CodeNode([], arr)))).compile(o); + return (new ParentheticalNode(new CallNode(new CodeNode([], arr.make_return())))).compile(o); }; return RangeNode; }).call(this); @@ -648,9 +737,7 @@ idt += TAB _a = []; _b = this.properties; for (_c = 0, _d = _b.length; _c < _d; _c++) { prop = _b[_c]; - if (!(prop instanceof CommentNode)) { - _a.push(prop); - } + !(prop instanceof CommentNode) ? _a.push(prop) : null; } return _a; }).call(this); @@ -684,30 +771,33 @@ idt += TAB exports.ArrayNode = (function() { ArrayNode = function ArrayNode(objects) { this.children = (this.objects = objects || []); + this.compile_splat_literal = (function(func, obj, args) { + return function() { + return func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0))); + }; + }(SplatNode.compile_mixed_array, this, [this.objects])); return this; }; __extends(ArrayNode, BaseNode); ArrayNode.prototype.type = 'Array'; ArrayNode.prototype.compile_node = function compile_node(o) { - var _a, _b, _c, code, ending, i, obj, objects; + var _a, _b, code, ending, i, obj, objects; o.indent = this.idt(1); - objects = (function() { - _a = []; _b = this.objects; - for (i = 0, _c = _b.length; i < _c; i++) { - obj = _b[i]; - _a.push((function() { - code = obj.compile(o); - if (obj instanceof CommentNode) { - return "\n" + code + "\n" + o.indent; - } else if (i === this.objects.length - 1) { - return code; - } else { - return code + ", "; - } - }).call(this)); + objects = []; + _a = this.objects; + for (i = 0, _b = _a.length; i < _b; i++) { + obj = _a[i]; + code = obj.compile(o); + if (obj instanceof SplatNode) { + return this.compile_splat_literal(this.objects, o); + } else if (obj instanceof CommentNode) { + objects.push("\n" + code + "\n" + o.indent); + } else if (i === this.objects.length - 1) { + objects.push(code); + } else { + objects.push("" + code + ", "); } - return _a; - }).call(this); + } objects = objects.join(''); ending = objects.indexOf('\n') >= 0 ? "\n" + this.tab + "]" : ']'; return "[" + objects + ending; @@ -719,22 +809,26 @@ idt += TAB exports.ClassNode = (function() { ClassNode = function ClassNode(variable, parent, props) { this.children = compact(flatten([(this.variable = variable), (this.parent = parent), (this.properties = props || [])])); + this.returns = false; return this; }; __extends(ClassNode, BaseNode); ClassNode.prototype.type = 'Class'; // Initialize a **ClassNode** with its name, an optional superclass, and a // list of prototype property assignments. + ClassNode.prototype.make_return = function make_return() { + this.returns = true; + return this; + }; // Instead of generating the JavaScript string directly, we build up the // equivalent syntax tree and compile that, in pieces. You can see the // constructor, property assignments, and inheritance getting built out below. ClassNode.prototype.compile_node = function compile_node(o) { - var _a, _b, _c, applied, construct, extension, func, prop, props, ret, returns, val; + var _a, _b, _c, applied, construct, extension, func, prop, props, returns, val; extension = this.parent && new ExtendsNode(this.variable, this.parent); constructor = null; props = new Expressions(); o.top = true; - ret = del(o, 'returns'); _a = this.properties; for (_b = 0, _c = _a.length; _b < _c; _b++) { prop = _a[_b]; @@ -761,38 +855,12 @@ idt += TAB construct = this.idt() + constructor.compile(o) + ';\n'; props = props.empty() ? '' : props.compile(o) + '\n'; extension = extension ? this.idt() + extension.compile(o) + ';\n' : ''; - returns = ret ? '\n' + this.idt() + 'return ' + this.variable.compile(o) + ';' : ''; - return construct + extension + props + returns; + returns = this.returns ? new ReturnNode(this.variable).compile(o) : ''; + return "" + construct + extension + props + returns; }; return ClassNode; }).call(this); statement(ClassNode); - //### PushNode - // A faux-node that is never created by the grammar, but is used during - // code generation to generate a quick `array.push(value)` tree of nodes. - // Helpful for recording the result arrays from comprehensions. - PushNode = (exports.PushNode = { - wrap: function wrap(array, expressions) { - var expr; - expr = expressions.unwrap(); - if (expr.is_pure_statement() || expr.contains(function(n) { - return n.is_pure_statement(); - })) { - return expressions; - } - return Expressions.wrap([new CallNode(new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr])]); - } - }); - //### ClosureNode - // A faux-node used to wrap an expressions body in a closure. - ClosureNode = (exports.ClosureNode = { - wrap: function wrap(expressions, statement) { - var call, func; - func = new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions]))); - call = new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')]); - return statement ? Expressions.wrap([call]) : call; - } - }); //### AssignNode // The **AssignNode** is used to assign a local variable to value, or to set the // property of an object -- including within object literals. @@ -813,6 +881,9 @@ idt += TAB AssignNode.prototype.is_value = function is_value() { return this.variable instanceof ValueNode; }; + AssignNode.prototype.make_return = function make_return() { + return new Expressions([this, new ReturnNode(this.variable)]); + }; AssignNode.prototype.is_statement = function is_statement() { return this.is_value() && (this.variable.is_array() || this.variable.is_object()); }; @@ -844,34 +915,33 @@ idt += TAB } val = this.value.compile(o); if (this.context === 'object') { - return name + ": " + val; + return "" + name + ": " + val; } if (!(this.is_value() && this.variable.has_properties())) { o.scope.find(name); } - val = name + " = " + val; + val = "" + name + " = " + val; if (stmt) { - return this.tab + val + ";"; - } - if (!top || o.returns) { - val = "(" + val + ")"; + return "" + this.tab + val + ";"; } - if (o.returns) { - val = (this.tab) + "return " + val; + if (top) { + return val; + } else { + return "(" + val + ")"; } - return val; }; // Brief implementation of recursive pattern matching, when assigning array or // object literals to a value. Peeks at their properties to assign inner names. // See the [ECMAScript Harmony Wiki](http://wiki.ecmascript.org/doku.php?id=harmony:destructuring) // for details. AssignNode.prototype.compile_pattern_match = function compile_pattern_match(o) { - var _a, _b, _c, access_class, assigns, code, i, idx, obj, val, val_var, value; + var _a, _b, _c, access_class, assigns, code, i, idx, obj, oindex, olength, splat, val, val_var, value; val_var = o.scope.free_variable(); value = this.value.is_statement() ? ClosureNode.wrap(this.value) : this.value; - assigns = [this.tab + val_var + " = " + (value.compile(o)) + ";"]; + assigns = ["" + this.tab + val_var + " = " + (value.compile(o)) + ";"]; o.top = true; o.as_statement = true; + splat = false; _a = this.variable.base.objects; for (i = 0, _b = _a.length; i < _b; i++) { obj = _a[i]; @@ -882,20 +952,18 @@ idt += TAB idx = _c[1]; } access_class = this.variable.is_array() ? IndexNode : AccessorNode; - if (obj instanceof SplatNode) { - val = literal(obj.compile_value(o, val_var, this.variable.base.objects.indexOf(obj))); + if (obj instanceof SplatNode && !splat) { + val = literal(obj.compile_value(o, val_var, (oindex = this.variable.base.objects.indexOf(obj)), (olength = this.variable.base.objects.length) - oindex - 1)); + splat = true; } else { - if (!(typeof idx === 'object')) { - idx = literal(idx); + if (typeof idx !== 'object') { + idx = literal(splat ? "" + (val_var) + ".length - " + (olength - idx) : idx); } val = new ValueNode(literal(val_var), [new access_class(idx)]); } assigns.push(new AssignNode(obj, val).compile(o)); } code = assigns.join("\n"); - if (o.returns) { - code += "\n" + (this.tab) + "return " + (this.variable.compile(o)) + ";"; - } return code; }; // Compile the assignment from an array splice literal, using JavaScript's @@ -911,7 +979,7 @@ idt += TAB from = range.from.compile(o); to = range.to.compile(o) + ' - ' + from + plus; val = this.value.compile(o); - return (name) + ".splice.apply(" + name + ", [" + from + ", " + to + "].concat(" + val + "))"; + return "" + (name) + ".splice.apply(" + name + ", [" + from + ", " + to + "].concat(" + val + "))"; }; return AssignNode; }).call(this); @@ -934,31 +1002,44 @@ idt += TAB // arrow, generates a wrapper that saves the current value of `this` through // a closure. CodeNode.prototype.compile_node = function compile_node(o) { - var _a, _b, _c, _d, _e, _f, _g, code, func, inner, name_part, param, params, shared_scope, splat, top; + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, code, func, i, inner, name_part, param, params, shared_scope, splat, top; shared_scope = del(o, 'shared_scope'); top = del(o, 'top'); o.scope = shared_scope || new Scope(o.scope, this.body, this); - o.returns = true; o.top = true; o.indent = this.idt(this.bound ? 2 : 1); del(o, 'no_wrap'); del(o, 'globals'); - if (this.params[this.params.length - 1] instanceof SplatNode) { - splat = this.params.pop(); - splat.index = this.params.length; - this.body.unshift(splat); + i = 0; + splat = undefined; + params = []; + _a = this.params; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + param = _a[_b]; + if (param instanceof SplatNode && !(typeof splat !== "undefined" && splat !== null)) { + splat = param; + splat.index = i; + this.body.unshift(splat); + splat.trailings = []; + } else if ((typeof splat !== "undefined" && splat !== null)) { + splat.trailings.push(param); + } else { + params.push(param); + } + i += 1; } params = (function() { - _a = []; _b = this.params; - for (_c = 0, _d = _b.length; _c < _d; _c++) { - param = _b[_c]; - _a.push(param.compile(o)); + _d = []; _e = params; + for (_f = 0, _g = _e.length; _f < _g; _f++) { + param = _e[_f]; + _d.push(param.compile(o)); } - return _a; + return _d; }).call(this); - _e = params; - for (_f = 0, _g = _e.length; _f < _g; _f++) { - param = _e[_f]; + this.body.make_return(); + _h = params; + for (_i = 0, _j = _h.length; _i < _j; _i++) { + param = _h[_i]; (o.scope.parameter(param)); } code = this.body.expressions.length ? "\n" + (this.body.compile_with_declarations(o)) + "\n" : ''; @@ -988,7 +1069,7 @@ idt += TAB _a = []; _b = this.real_children(); for (_c = 0, _d = _b.length; _c < _d; _c++) { child = _b[_c]; - _a.push(block(child)); + _a.push(child.traverse(block)); } return _a; }; @@ -1022,23 +1103,65 @@ idt += TAB SplatNode.prototype.type = 'Splat'; SplatNode.prototype.compile_node = function compile_node(o) { var _a; - return (typeof (_a = this.index) !== "undefined" && _a !== null) ? this.compile_param(o) : this.name.compile(o); + if ((typeof (_a = this.index) !== "undefined" && _a !== null)) { + return this.compile_param(o); + } else { + return this.name.compile(o); + } }; // Compiling a parameter splat means recovering the parameters that succeed // the splat in the parameter list, by slicing the arguments object. SplatNode.prototype.compile_param = function compile_param(o) { - var name; + var _a, _b, _c, i, name, trailing; name = this.name.compile(o); o.scope.find(name); - return name + " = Array.prototype.slice.call(arguments, " + this.index + ")"; + i = 0; + _a = this.trailings; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + trailing = _a[_b]; + o.scope.assign(trailing.compile(o), "arguments[arguments.length - " + this.trailings.length + " + " + i + "]"); + i += 1; + } + return "" + name + " = Array.prototype.slice.call(arguments, " + this.index + ", arguments.length - " + (this.trailings.length) + ")"; }; // A compiling a splat as a destructuring assignment means slicing arguments // from the right-hand-side's corresponding array. - SplatNode.prototype.compile_value = function compile_value(o, name, index) { - return "Array.prototype.slice.call(" + name + ", " + index + ")"; + SplatNode.prototype.compile_value = function compile_value(o, name, index, trailings) { + if ((typeof trailings !== "undefined" && trailings !== null)) { + return "Array.prototype.slice.call(" + name + ", " + index + ", " + (name) + ".length - " + trailings + ")"; + } else { + return "Array.prototype.slice.call(" + name + ", " + index + ")"; + } }; return SplatNode; }).call(this); + // Utility function that converts arbitrary number of elements, mixed with + // splats, to a proper array + SplatNode.compile_mixed_array = function compile_mixed_array(list, o) { + var _a, _b, _c, arg, args, code, i, prev; + args = []; + i = 0; + _a = list; + for (_b = 0, _c = _a.length; _b < _c; _b++) { + arg = _a[_b]; + code = arg.compile(o); + if (!(arg instanceof SplatNode)) { + prev = args[i - 1]; + if (i === 1 && prev.substr(0, 1) === '[' && prev.substr(prev.length - 1, 1) === ']') { + args[i - 1] = "" + (prev.substr(0, prev.length - 1)) + ", " + code + "]"; + continue; + } else if (i > 1 && prev.substr(0, 9) === '.concat([' && prev.substr(prev.length - 2, 2) === '])') { + args[i - 1] = "" + (prev.substr(0, prev.length - 2)) + ", " + code + "])"; + continue; + } else { + code = "[" + code + "]"; + } + } + args.push(i === 0 ? code : ".concat(" + code + ")"); + i += 1; + } + return args.join(''); + }; //### WhileNode // A while loop, the only sort of low-level loop exposed by CoffeeScript. From // it, all other loops can be manufactured. Useful in cases where you need more @@ -1055,6 +1178,10 @@ idt += TAB this.children.push((this.body = body)); return this; }; + WhileNode.prototype.make_return = function make_return() { + this.returns = true; + return this; + }; WhileNode.prototype.top_sensitive = function top_sensitive() { return true; }; @@ -1062,29 +1189,30 @@ idt += TAB // *while* can be used as a part of a larger expression -- while loops may // return an array containing the computed result of each iteration. WhileNode.prototype.compile_node = function compile_node(o) { - var cond, post, pre, returns, rvar, set, top; - returns = del(o, 'returns'); - top = del(o, 'top') && !returns; + var cond, post, pre, rvar, set, top; + top = del(o, 'top') && !this.returns; o.indent = this.idt(1); o.top = true; cond = this.condition.compile(o); set = ''; if (!top) { rvar = o.scope.free_variable(); - set = this.tab + rvar + " = [];\n"; + set = "" + this.tab + rvar + " = [];\n"; if (this.body) { this.body = PushNode.wrap(rvar, this.body); } } - post = returns ? "\n" + (this.tab) + "return " + rvar + ";" : ''; - pre = set + (this.tab) + "while (" + cond + ")"; + pre = "" + set + (this.tab) + "while (" + cond + ")"; if (!this.body) { - return pre + " null;" + post; + return "" + pre + " null;" + post; } if (this.filter) { this.body = Expressions.wrap([new IfNode(this.filter, this.body)]); } - return pre + " {\n" + (this.body.compile(o)) + "\n" + this.tab + "}" + post; + this.returns ? (post = new ReturnNode(literal(rvar)).compile(merge(o, { + indent: this.idt() + }))) : (post = ''); + return "" + pre + " {\n" + (this.body.compile(o)) + "\n" + this.tab + "}\n" + post; }; return WhileNode; }).call(this); @@ -1105,12 +1233,7 @@ idt += TAB // The map of conversions from CoffeeScript to JavaScript symbols. OpNode.prototype.CONVERSIONS = { '==': '===', - '!=': '!==', - 'and': '&&', - 'or': '||', - 'is': '===', - 'isnt': '!==', - 'not': '!' + '!=': '!==' }; // The list of operators for which we perform // [Python-style comparison chaining](http://docs.python.org/reference/expressions.html#notin). @@ -1171,9 +1294,9 @@ idt += TAB o.scope.find(first); } if (this.operator === '?=') { - return first + " = " + (ExistenceNode.compile_test(o, this.first)) + " ? " + first + " : " + second; + return "" + first + " = " + (ExistenceNode.compile_test(o, this.first)) + " ? " + first + " : " + second; } - return first + " = " + first + " " + (this.operator.substr(0, 2)) + " " + second; + return "" + first + " = " + first + " " + (this.operator.substr(0, 2)) + " " + second; }; // If this is an existence operator, we delegate to `ExistenceNode.compile_test` // to give us the safe references for the variables. @@ -1183,7 +1306,7 @@ idt += TAB first = _a[0]; second = _a[1]; test = ExistenceNode.compile_test(o, this.first); - return test + " ? " + first + " : " + second; + return "" + test + " ? " + first + " : " + second; }; // Compile a unary **OpNode**. OpNode.prototype.compile_unary = function compile_unary(o) { @@ -1208,6 +1331,15 @@ idt += TAB }; __extends(TryNode, BaseNode); TryNode.prototype.type = 'Try'; + TryNode.prototype.make_return = function make_return() { + if (this.attempt) { + this.attempt = this.attempt.make_return(); + } + if (this.recovery) { + this.recovery = this.recovery.make_return(); + } + return this; + }; // Compilation is more or less as you would expect -- the *finally* clause // is optional, the *catch* is not. TryNode.prototype.compile_node = function compile_node(o) { @@ -1216,11 +1348,9 @@ idt += TAB o.top = true; attempt_part = this.attempt.compile(o); error_part = this.error ? " (" + (this.error.compile(o)) + ") " : ' '; - catch_part = ((this.recovery || '') && ' catch') + error_part + "{\n" + (this.recovery.compile(o)) + "\n" + this.tab + "}"; - finally_part = (this.ensure || '') && ' finally {\n' + this.ensure.compile(merge(o, { - returns: null - })) + "\n" + this.tab + "}"; - return (this.tab) + "try {\n" + attempt_part + "\n" + this.tab + "}" + catch_part + finally_part; + catch_part = this.recovery ? " catch" + error_part + "{\n" + (this.recovery.compile(o)) + "\n" + this.tab + "}" : ''; + finally_part = (this.ensure || '') && ' finally {\n' + this.ensure.compile(merge(o)) + "\n" + this.tab + "}"; + return "" + (this.tab) + "try {\n" + attempt_part + "\n" + this.tab + "}" + catch_part + finally_part; }; return TryNode; }).call(this); @@ -1234,8 +1364,12 @@ idt += TAB }; __extends(ThrowNode, BaseNode); ThrowNode.prototype.type = 'Throw'; + // A **ThrowNode** is already a return, of sorts... + ThrowNode.prototype.make_return = function make_return() { + return this; + }; ThrowNode.prototype.compile_node = function compile_node(o) { - return (this.tab) + "throw " + (this.expression.compile(o)) + ";"; + return "" + (this.tab) + "throw " + (this.expression.compile(o)) + ";"; }; return ThrowNode; }).call(this); @@ -1289,6 +1423,9 @@ idt += TAB ParentheticalNode.prototype.is_statement = function is_statement() { return this.expression.is_statement(); }; + ParentheticalNode.prototype.make_return = function make_return() { + return this.expression.make_return(); + }; ParentheticalNode.prototype.compile_node = function compile_node(o) { var code, l; code = this.expression.compile(o); @@ -1299,7 +1436,11 @@ idt += TAB if (code.substr(l - 1, 1) === ';') { code = code.substr(o, l - 1); } - return "(" + code + ")"; + if (this.expression instanceof AssignNode) { + return code; + } else { + return "(" + code + ")"; + } }; return ParentheticalNode; }).call(this); @@ -1326,6 +1467,7 @@ idt += TAB this.index = _a[1]; } this.children = compact([this.body, this.source, this.filter]); + this.returns = false; return this; }; __extends(ForNode, BaseNode); @@ -1333,20 +1475,34 @@ idt += TAB ForNode.prototype.top_sensitive = function top_sensitive() { return true; }; + ForNode.prototype.make_return = function make_return() { + this.returns = true; + return this; + }; + ForNode.prototype.compile_return_value = function compile_return_value(val, o) { + if (this.returns) { + return new ReturnNode(literal(val)).compile(o); + } + return val || ''; + }; // Welcome to the hairiest method in all of CoffeeScript. Handles the inner // loop, filtering, stepping, and result saving for array, object, and range // comprehensions. Some of the generated code can be shared in common, and // some cannot. ForNode.prototype.compile_node = function compile_node(o) { - var body, body_dent, close, for_part, index, index_found, index_var, ivar, lvar, name, name_found, range, return_result, rvar, scope, set_result, source, source_part, step_part, svar, top_level, var_part, vars; - top_level = del(o, 'top') && !o.returns; + var body, body_dent, close, for_part, index, index_var, ivar, lvar, name, range, return_result, rvar, scope, set_result, source, source_part, step_part, svar, top_level, var_part, vars; + top_level = del(o, 'top') && !this.returns; range = this.source instanceof ValueNode && this.source.base instanceof RangeNode && !this.source.properties.length; source = range ? this.source.base : this.source; scope = o.scope; name = this.name && this.name.compile(o); index = this.index && this.index.compile(o); - name_found = name && scope.find(name); - index_found = index && scope.find(index); + if (name) { + scope.find(name); + } + if (index) { + scope.find(index); + } body_dent = this.idt(1); if (!(top_level)) { rvar = scope.free_variable(); @@ -1362,22 +1518,22 @@ idt += TAB index: ivar, step: this.step })); - for_part = index_var + " = 0, " + for_part + ", " + index_var + "++"; + for_part = "" + index_var + " = 0, " + for_part + ", " + index_var + "++"; } else { index_var = null; - source_part = svar + " = " + (this.source.compile(o)) + ";\n" + this.tab; + source_part = "" + svar + " = " + (this.source.compile(o)) + ";\n" + this.tab; if (name) { - var_part = body_dent + name + " = " + svar + "[" + ivar + "];\n"; + var_part = "" + body_dent + name + " = " + svar + "[" + ivar + "];\n"; } if (!this.object) { lvar = scope.free_variable(); - step_part = this.step ? ivar + " += " + (this.step.compile(o)) : ivar + "++"; - for_part = ivar + " = 0, " + lvar + " = " + (svar) + ".length; " + ivar + " < " + lvar + "; " + step_part; + step_part = this.step ? "" + ivar + " += " + (this.step.compile(o)) : "" + ivar + "++"; + for_part = "" + ivar + " = 0, " + lvar + " = " + (svar) + ".length; " + ivar + " < " + lvar + "; " + step_part; } } set_result = rvar ? this.idt() + rvar + ' = []; ' : this.idt(); - return_result = rvar || ''; - if (top_level && this.contains(function(n) { + return_result = this.compile_return_value(rvar, o); + if (top_level && body.contains(function(n) { return n instanceof CodeNode; })) { body = ClosureNode.wrap(body, true); @@ -1385,31 +1541,18 @@ idt += TAB if (!(top_level)) { body = PushNode.wrap(rvar, body); } - if (o.returns) { - return_result = 'return ' + return_result; - del(o, 'returns'); - if (this.filter) { - body = new IfNode(this.filter, body, null, { - statement: true - }); - } - } else if (this.filter) { - body = Expressions.wrap([new IfNode(this.filter, body)]); - } + this.filter ? (body = Expressions.wrap([new IfNode(this.filter, body)])) : null; if (this.object) { o.scope.assign('__hasProp', 'Object.prototype.hasOwnProperty', true); - for_part = ivar + " in " + svar + ") { if (__hasProp.call(" + svar + ", " + ivar + ")"; - } - if (!(top_level)) { - return_result = "\n" + this.tab + return_result + ";"; + for_part = "" + ivar + " in " + svar + ") { if (__hasProp.call(" + svar + ", " + ivar + ")"; } body = body.compile(merge(o, { indent: body_dent, top: true })); - vars = range ? name : name + ", " + ivar; + vars = range ? name : "" + name + ", " + ivar; close = this.object ? '}}\n' : '}\n'; - return set_result + (source_part) + "for (" + for_part + ") {\n" + var_part + body + "\n" + this.tab + close + this.tab + return_result; + return "" + set_result + (source_part) + "for (" + for_part + ") {\n" + var_part + body + "\n" + this.tab + close + return_result; }; return ForNode; }).call(this); @@ -1424,7 +1567,7 @@ idt += TAB this.condition = condition; this.body = body && body.unwrap(); this.else_body = else_body && else_body.unwrap(); - this.children = compact([this.condition, this.body, this.else_body]); + this.children = compact(flatten([this.condition, this.body, this.else_body])); this.tags = tags || {}; if (this.condition instanceof Array) { this.multiple = true; @@ -1469,11 +1612,11 @@ idt += TAB _a = []; _b = this.condition; for (i = 0, _c = _b.length; i < _c; i++) { cond = _b[i]; - _a.push(new OpNode('is', (i === 0 ? assigner : this.switcher), cond)); + _a.push(new OpNode('==', (i === 0 ? assigner : this.switcher), cond)); } return _a; } else { - return new OpNode('is', assigner, this.condition); + return new OpNode('==', assigner, this.condition); } }).call(this); if (this.is_chain()) { @@ -1514,7 +1657,16 @@ idt += TAB }).call(this).join(' || '); }; IfNode.prototype.compile_node = function compile_node(o) { - return this.is_statement() ? this.compile_statement(o) : this.compile_ternary(o); + if (this.is_statement()) { + return this.compile_statement(o); + } else { + return this.compile_ternary(o); + } + }; + IfNode.prototype.make_return = function make_return() { + this.body = this.body && this.body.make_return(); + this.else_body = this.else_body && this.else_body.make_return(); + return this; }; // Compile the **IfNode** as a regular *if-else* statement. Flattened chains // force inner *else* bodies into statement form. @@ -1525,14 +1677,13 @@ idt += TAB } child = del(o, 'chain_child'); cond_o = merge(o); - del(cond_o, 'returns'); o.indent = this.idt(1); o.top = true; if_dent = child ? '' : this.idt(); com_dent = child ? this.idt() : ''; - prefix = this.comment ? (this.comment.compile(cond_o)) + "\n" + com_dent : ''; + prefix = this.comment ? "" + (this.comment.compile(cond_o)) + "\n" + com_dent : ''; body = Expressions.wrap([this.body]).compile(o); - if_part = prefix + (if_dent) + "if (" + (this.compile_condition(cond_o)) + ") {\n" + body + "\n" + this.tab + "}"; + if_part = "" + prefix + (if_dent) + "if (" + (this.compile_condition(cond_o)) + ") {\n" + body + "\n" + this.tab + "}"; if (!(this.else_body)) { return if_part; } @@ -1540,17 +1691,53 @@ idt += TAB indent: this.idt(), chain_child: true })) : " else {\n" + (Expressions.wrap([this.else_body]).compile(o)) + "\n" + this.tab + "}"; - return if_part + else_part; + return "" + if_part + else_part; }; // Compile the IfNode as a ternary operator. IfNode.prototype.compile_ternary = function compile_ternary(o) { var else_part, if_part; if_part = this.condition.compile(o) + ' ? ' + this.body.compile(o); else_part = this.else_body ? this.else_body.compile(o) : 'null'; - return if_part + " : " + else_part; + return "" + if_part + " : " + else_part; }; return IfNode; }).call(this); + // Faux-Nodes + // ---------- + //### PushNode + // Faux-nodes are never created by the grammar, but are used during code + // generation to generate other combinations of nodes. The **PushNode** creates + // the tree for `array.push(value)`, which is helpful for recording the result + // arrays from comprehensions. + PushNode = (exports.PushNode = { + wrap: function wrap(array, expressions) { + var expr; + expr = expressions.unwrap(); + if (expr.is_pure_statement() || expr.contains_pure_statement()) { + return expressions; + } + return Expressions.wrap([new CallNode(new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr])]); + } + }); + //### ClosureNode + // A faux-node used to wrap an expressions body in a closure. + ClosureNode = (exports.ClosureNode = { + // Wrap the expressions body, unless it contains a pure statement, + // in which case, no dice. + wrap: function wrap(expressions, statement) { + var call, func; + if (expressions.contains_pure_statement()) { + return expressions; + } + func = new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions]))); + call = new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')]); + if (statement) { + return Expressions.wrap([call]); + } else { + return call; + } + } + }); // Constants // --------- // Tabs are two spaces for pretty printing. @@ -1559,61 +1746,9 @@ idt += TAB // with Git. TRAILING_WHITESPACE = /\s+$/gm; // Keep this identifier regex in sync with the Lexer. - IDENTIFIER = /^[a-zA-Z$_](\w|\$)*$/; + IDENTIFIER = /^[a-zA-Z\$_](\w|\$)*$/; // Utility Functions // ----------------- - // Merge objects, returning a fresh copy with attributes from both sides. - // Used every time `compile` is called, to allow properties in the options hash - // to propagate down the tree without polluting other branches. - merge = function merge(options, overrides) { - var _a, _b, fresh, key, val; - fresh = {}; - _a = options; - for (key in _a) { if (__hasProp.call(_a, key)) { - val = _a[key]; - ((fresh[key] = val)); - }} - if (overrides) { - _b = overrides; - for (key in _b) { if (__hasProp.call(_b, key)) { - val = _b[key]; - ((fresh[key] = val)); - }} - } - return fresh; - }; - // Trim out all falsy values from an array. - compact = function compact(array) { - var _a, _b, _c, _d, item; - _a = []; _b = array; - for (_c = 0, _d = _b.length; _c < _d; _c++) { - item = _b[_c]; - if (item) { - _a.push(item); - } - } - return _a; - }; - // Return a completely flattened version of an array. Handy for getting a - // list of `children`. - flatten = function flatten(array) { - var _a, _b, _c, item, memo; - memo = []; - _a = array; - for (_b = 0, _c = _a.length; _b < _c; _b++) { - item = _a[_b]; - item instanceof Array ? (memo = memo.concat(item)) : memo.push(item); - } - return memo; - }; - // Delete a key from an object, returning the value. Useful when a node is - // looking for a particular method in an options hash. - del = function del(obj, key) { - var val; - val = obj[key]; - delete obj[key]; - return val; - }; // Handy helper for a generating LiteralNode. literal = function literal(name) { return new LiteralNode(name); diff --git a/lib/optparse.js b/lib/optparse.js index 4095b88532..ce136e103d 100755 --- a/lib/optparse.js +++ b/lib/optparse.js @@ -20,7 +20,6 @@ // flag. Instead, you're responsible for interpreting the options object. OptionParser.prototype.parse = function parse(args) { var _a, _b, _c, arg, is_option, matched_rule, options, rule; - arguments = Array.prototype.slice.call(arguments, 0); options = { arguments: [] }; @@ -52,7 +51,7 @@ var _a, _b, _c, _d, _e, _f, _g, _h, i, let_part, lines, rule, spaces; lines = ['Available options:']; if (this.banner) { - lines.unshift(this.banner + "\n"); + lines.unshift("" + this.banner + "\n"); } _a = this.rules; for (_b = 0, _c = _a.length; _b < _c; _b++) { diff --git a/lib/parser.js b/lib/parser.js index 65012b0f80..0e4f6249eb 100755 --- a/lib/parser.js +++ b/lib/parser.js @@ -2,9 +2,9 @@ var parser = (function(){ var parser = {trace: function trace() { }, yy: {}, -symbols_: {"Root":2,"TERMINATOR":3,"Expressions":4,"Block":5,"Expression":6,"Value":7,"Call":8,"Code":9,"Operation":10,"Assign":11,"If":12,"Try":13,"Throw":14,"Return":15,"While":16,"For":17,"Switch":18,"Extends":19,"Class":20,"Splat":21,"Existence":22,"Comment":23,"INDENT":24,"OUTDENT":25,"Identifier":26,"IDENTIFIER":27,"AlphaNumeric":28,"NUMBER":29,"STRING":30,"Literal":31,"JS":32,"REGEX":33,"BREAK":34,"CONTINUE":35,"TRUE":36,"FALSE":37,"YES":38,"NO":39,"ON":40,"OFF":41,"ASSIGN":42,"AssignObj":43,"RETURN":44,"COMMENT":45,"?":46,"PARAM_START":47,"ParamList":48,"PARAM_END":49,"FuncGlyph":50,"->":51,"=>":52,"Param":53,",":54,"PARAM":55,".":56,"Array":57,"Object":58,"Parenthetical":59,"Range":60,"This":61,"Accessor":62,"Invocation":63,"PROPERTY_ACCESS":64,"PROTOTYPE_ACCESS":65,"SOAK_ACCESS":66,"Index":67,"Slice":68,"INDEX_START":69,"INDEX_END":70,"SOAKED_INDEX_START":71,"SOAKED_INDEX_END":72,"{":73,"AssignList":74,"}":75,"IndentedAssignList":76,"CLASS":77,"EXTENDS":78,"NEW":79,"Super":80,"Arguments":81,"CALL_START":82,"ArgList":83,"CALL_END":84,"SUPER":85,"@":86,"[":87,"]":88,"SimpleArgs":89,"TRY":90,"Catch":91,"FINALLY":92,"CATCH":93,"THROW":94,"(":95,")":96,"WhileSource":97,"WHILE":98,"WHEN":99,"FOR":100,"ForVariables":101,"ForSource":102,"IN":103,"OF":104,"BY":105,"SWITCH":106,"Whens":107,"ELSE":108,"When":109,"LEADING_WHEN":110,"IfStart":111,"IF":112,"ElsIf":113,"IfBlock":114,"UNLESS":115,"!":116,"!!":117,"-":118,"+":119,"NOT":120,"~":121,"--":122,"++":123,"DELETE":124,"TYPEOF":125,"*":126,"/":127,"%":128,"<<":129,">>":130,">>>":131,"&":132,"|":133,"^":134,"<=":135,"<":136,">":137,">=":138,"==":139,"!=":140,"IS":141,"ISNT":142,"&&":143,"||":144,"AND":145,"OR":146,"-=":147,"+=":148,"/=":149,"*=":150,"%=":151,"||=":152,"&&=":153,"?=":154,"INSTANCEOF":155,"$accept":0,"$end":1}, -terminals_: {"3":"TERMINATOR","24":"INDENT","25":"OUTDENT","27":"IDENTIFIER","29":"NUMBER","30":"STRING","32":"JS","33":"REGEX","34":"BREAK","35":"CONTINUE","36":"TRUE","37":"FALSE","38":"YES","39":"NO","40":"ON","41":"OFF","42":"ASSIGN","44":"RETURN","45":"COMMENT","46":"?","47":"PARAM_START","49":"PARAM_END","51":"->","52":"=>","54":",","55":"PARAM","56":".","64":"PROPERTY_ACCESS","65":"PROTOTYPE_ACCESS","66":"SOAK_ACCESS","69":"INDEX_START","70":"INDEX_END","71":"SOAKED_INDEX_START","72":"SOAKED_INDEX_END","73":"{","75":"}","77":"CLASS","78":"EXTENDS","79":"NEW","82":"CALL_START","84":"CALL_END","85":"SUPER","86":"@","87":"[","88":"]","90":"TRY","92":"FINALLY","93":"CATCH","94":"THROW","95":"(","96":")","98":"WHILE","99":"WHEN","100":"FOR","103":"IN","104":"OF","105":"BY","106":"SWITCH","108":"ELSE","110":"LEADING_WHEN","112":"IF","115":"UNLESS","116":"!","117":"!!","118":"-","119":"+","120":"NOT","121":"~","122":"--","123":"++","124":"DELETE","125":"TYPEOF","126":"*","127":"/","128":"%","129":"<<","130":">>","131":">>>","132":"&","133":"|","134":"^","135":"<=","136":"<","137":">","138":">=","139":"==","140":"!=","141":"IS","142":"ISNT","143":"&&","144":"||","145":"AND","146":"OR","147":"-=","148":"+=","149":"/=","150":"*=","151":"%=","152":"||=","153":"&&=","154":"?=","155":"INSTANCEOF"}, -productions_: [0,[2,0],[2,1],[2,1],[2,2],[4,1],[4,3],[4,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[5,3],[5,2],[26,1],[28,1],[28,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[31,1],[11,3],[43,3],[43,3],[43,1],[15,2],[15,1],[23,1],[22,2],[9,5],[9,2],[50,1],[50,1],[48,0],[48,1],[48,3],[53,1],[53,4],[21,4],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,2],[7,2],[62,2],[62,2],[62,2],[62,1],[62,1],[67,3],[67,3],[58,3],[58,3],[20,2],[20,4],[20,3],[20,5],[74,0],[74,1],[74,3],[74,3],[74,4],[76,3],[8,1],[8,2],[8,1],[19,3],[63,2],[63,2],[81,3],[80,4],[61,1],[61,2],[60,6],[60,7],[68,6],[68,7],[57,3],[83,0],[83,1],[83,2],[83,3],[83,3],[83,4],[83,4],[83,2],[89,1],[89,3],[13,3],[13,4],[13,5],[91,3],[14,2],[59,3],[97,2],[97,4],[16,2],[16,2],[17,4],[17,4],[101,1],[101,3],[102,2],[102,2],[102,3],[102,3],[18,5],[18,7],[107,1],[107,2],[109,3],[109,4],[109,3],[111,3],[111,2],[114,1],[114,3],[113,4],[12,1],[12,3],[12,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,3]], +symbols_: {"Root":2,"TERMINATOR":3,"Expressions":4,"Block":5,"Expression":6,"Value":7,"Call":8,"Curry":9,"Code":10,"Operation":11,"Assign":12,"If":13,"Try":14,"Throw":15,"Return":16,"While":17,"For":18,"Switch":19,"Extends":20,"Class":21,"Splat":22,"Existence":23,"Comment":24,"Extension":25,"INDENT":26,"OUTDENT":27,"Identifier":28,"IDENTIFIER":29,"AlphaNumeric":30,"NUMBER":31,"STRING":32,"Literal":33,"JS":34,"REGEX":35,"BREAK":36,"CONTINUE":37,"TRUE":38,"FALSE":39,"YES":40,"NO":41,"ON":42,"OFF":43,"ASSIGN":44,"AssignObj":45,"RETURN":46,"COMMENT":47,"?":48,"PARAM_START":49,"ParamList":50,"PARAM_END":51,"FuncGlyph":52,"->":53,"=>":54,"Param":55,",":56,"PARAM":57,".":58,"Array":59,"Object":60,"Parenthetical":61,"Range":62,"This":63,"Accessor":64,"Invocation":65,"PROPERTY_ACCESS":66,"PROTOTYPE_ACCESS":67,"::":68,"SOAK_ACCESS":69,"Index":70,"Slice":71,"INDEX_START":72,"INDEX_END":73,"SOAKED_INDEX_START":74,"SOAKED_INDEX_END":75,"{":76,"AssignList":77,"}":78,"IndentedAssignList":79,"CLASS":80,"EXTENDS":81,"NEW":82,"Super":83,"<-":84,"Arguments":85,"CALL_START":86,"ArgList":87,"CALL_END":88,"SUPER":89,"@":90,"[":91,"]":92,"SimpleArgs":93,"TRY":94,"Catch":95,"FINALLY":96,"CATCH":97,"THROW":98,"(":99,")":100,"EXTENSION":101,"WhileSource":102,"WHILE":103,"WHEN":104,"FOR":105,"ForVariables":106,"ForSource":107,"IN":108,"OF":109,"BY":110,"SWITCH":111,"Whens":112,"ELSE":113,"When":114,"LEADING_WHEN":115,"IfStart":116,"IF":117,"ElsIf":118,"IfBlock":119,"UNLESS":120,"!":121,"!!":122,"-":123,"+":124,"~":125,"--":126,"++":127,"DELETE":128,"TYPEOF":129,"*":130,"/":131,"%":132,"<<":133,">>":134,">>>":135,"&":136,"|":137,"^":138,"<=":139,"<":140,">":141,">=":142,"==":143,"!=":144,"&&":145,"||":146,"-=":147,"+=":148,"/=":149,"*=":150,"%=":151,"||=":152,"&&=":153,"?=":154,"INSTANCEOF":155,"$accept":0,"$end":1}, +terminals_: {"3":"TERMINATOR","26":"INDENT","27":"OUTDENT","29":"IDENTIFIER","31":"NUMBER","32":"STRING","34":"JS","35":"REGEX","36":"BREAK","37":"CONTINUE","38":"TRUE","39":"FALSE","40":"YES","41":"NO","42":"ON","43":"OFF","44":"ASSIGN","46":"RETURN","47":"COMMENT","48":"?","49":"PARAM_START","51":"PARAM_END","53":"->","54":"=>","56":",","57":"PARAM","58":".","66":"PROPERTY_ACCESS","67":"PROTOTYPE_ACCESS","68":"::","69":"SOAK_ACCESS","72":"INDEX_START","73":"INDEX_END","74":"SOAKED_INDEX_START","75":"SOAKED_INDEX_END","76":"{","78":"}","80":"CLASS","81":"EXTENDS","82":"NEW","84":"<-","86":"CALL_START","88":"CALL_END","89":"SUPER","90":"@","91":"[","92":"]","94":"TRY","96":"FINALLY","97":"CATCH","98":"THROW","99":"(","100":")","101":"EXTENSION","103":"WHILE","104":"WHEN","105":"FOR","108":"IN","109":"OF","110":"BY","111":"SWITCH","113":"ELSE","115":"LEADING_WHEN","117":"IF","120":"UNLESS","121":"!","122":"!!","123":"-","124":"+","125":"~","126":"--","127":"++","128":"DELETE","129":"TYPEOF","130":"*","131":"/","132":"%","133":"<<","134":">>","135":">>>","136":"&","137":"|","138":"^","139":"<=","140":"<","141":">","142":">=","143":"==","144":"!=","145":"&&","146":"||","147":"-=","148":"+=","149":"/=","150":"*=","151":"%=","152":"||=","153":"&&=","154":"?=","155":"INSTANCEOF"}, +productions_: [0,[2,0],[2,1],[2,1],[2,2],[4,1],[4,3],[4,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[5,3],[5,2],[5,2],[28,1],[30,1],[30,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[12,3],[45,3],[45,3],[45,1],[16,2],[16,1],[24,1],[23,2],[10,5],[10,2],[52,1],[52,1],[50,0],[50,1],[50,3],[55,1],[55,4],[22,4],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,2],[7,2],[64,2],[64,2],[64,1],[64,2],[64,1],[64,1],[70,3],[70,3],[60,3],[60,3],[21,2],[21,4],[21,3],[21,5],[77,0],[77,1],[77,3],[77,3],[77,4],[79,3],[8,1],[8,2],[8,1],[9,3],[20,3],[65,2],[65,2],[85,3],[83,4],[63,1],[63,2],[62,6],[62,7],[71,6],[71,7],[59,3],[87,0],[87,1],[87,2],[87,3],[87,3],[87,4],[87,4],[87,2],[93,1],[93,3],[14,3],[14,4],[14,5],[95,3],[15,2],[61,3],[25,1],[102,2],[102,4],[17,2],[17,2],[18,4],[18,4],[106,1],[106,3],[107,2],[107,2],[107,3],[107,3],[19,5],[19,7],[112,1],[112,2],[114,3],[114,4],[114,3],[116,3],[116,2],[119,1],[119,3],[118,4],[13,1],[13,3],[13,3],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,2],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3],[11,3]], performAction: function anonymous(yytext,yyleng,yylineno,yy) { var $$ = arguments[5],$0=arguments[5].length; @@ -57,79 +57,79 @@ case 23:this.$ = $$[$0-1+1-1]; break; case 24:this.$ = $$[$0-1+1-1]; break; -case 25:this.$ = $$[$0-3+2-1]; +case 25:this.$ = $$[$0-1+1-1]; break; -case 26:this.$ = new Expressions(); +case 26:this.$ = $$[$0-1+1-1]; break; -case 27:this.$ = new LiteralNode(yytext); +case 27:this.$ = $$[$0-3+2-1]; break; -case 28:this.$ = new LiteralNode(yytext); +case 28:this.$ = new Expressions(); break; -case 29:this.$ = new LiteralNode(yytext); +case 29:this.$ = Expressions.wrap([$$[$0-2+2-1]]); break; -case 30:this.$ = $$[$0-1+1-1]; +case 30:this.$ = new LiteralNode(yytext); break; case 31:this.$ = new LiteralNode(yytext); break; case 32:this.$ = new LiteralNode(yytext); break; -case 33:this.$ = new LiteralNode(yytext); +case 33:this.$ = $$[$0-1+1-1]; break; case 34:this.$ = new LiteralNode(yytext); break; -case 35:this.$ = new LiteralNode(true); +case 35:this.$ = new LiteralNode(yytext); break; -case 36:this.$ = new LiteralNode(false); +case 36:this.$ = new LiteralNode(yytext); break; -case 37:this.$ = new LiteralNode(true); +case 37:this.$ = new LiteralNode(yytext); break; -case 38:this.$ = new LiteralNode(false); +case 38:this.$ = new LiteralNode(true); break; -case 39:this.$ = new LiteralNode(true); +case 39:this.$ = new LiteralNode(false); break; -case 40:this.$ = new LiteralNode(false); +case 40:this.$ = new LiteralNode(true); break; -case 41:this.$ = new AssignNode($$[$0-3+1-1], $$[$0-3+3-1]); +case 41:this.$ = new LiteralNode(false); break; -case 42:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object'); +case 42:this.$ = new LiteralNode(true); break; -case 43:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object'); +case 43:this.$ = new LiteralNode(false); break; -case 44:this.$ = $$[$0-1+1-1]; +case 44:this.$ = new AssignNode($$[$0-3+1-1], $$[$0-3+3-1]); break; -case 45:this.$ = new ReturnNode($$[$0-2+2-1]); +case 45:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object'); break; -case 46:this.$ = new ReturnNode(new ValueNode(new LiteralNode('null'))); +case 46:this.$ = new AssignNode(new ValueNode($$[$0-3+1-1]), $$[$0-3+3-1], 'object'); break; -case 47:this.$ = new CommentNode(yytext); +case 47:this.$ = $$[$0-1+1-1]; break; -case 48:this.$ = new ExistenceNode($$[$0-2+1-1]); +case 48:this.$ = new ReturnNode($$[$0-2+2-1]); break; -case 49:this.$ = new CodeNode($$[$0-5+2-1], $$[$0-5+5-1], $$[$0-5+4-1]); +case 49:this.$ = new ReturnNode(new ValueNode(new LiteralNode('null'))); break; -case 50:this.$ = new CodeNode([], $$[$0-2+2-1], $$[$0-2+1-1]); +case 50:this.$ = new CommentNode(yytext); break; -case 51:this.$ = 'func'; +case 51:this.$ = new ExistenceNode($$[$0-2+1-1]); break; -case 52:this.$ = 'boundfunc'; +case 52:this.$ = new CodeNode($$[$0-5+2-1], $$[$0-5+5-1], $$[$0-5+4-1]); break; -case 53:this.$ = []; +case 53:this.$ = new CodeNode([], $$[$0-2+2-1], $$[$0-2+1-1]); break; -case 54:this.$ = [$$[$0-1+1-1]]; +case 54:this.$ = 'func'; break; -case 55:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); +case 55:this.$ = 'boundfunc'; break; -case 56:this.$ = new LiteralNode(yytext); +case 56:this.$ = []; break; -case 57:this.$ = new SplatNode($$[$0-4+1-1]); +case 57:this.$ = [$$[$0-1+1-1]]; break; -case 58:this.$ = new SplatNode($$[$0-4+1-1]); +case 58:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); break; -case 59:this.$ = new ValueNode($$[$0-1+1-1]); +case 59:this.$ = new LiteralNode(yytext); break; -case 60:this.$ = new ValueNode($$[$0-1+1-1]); +case 60:this.$ = new SplatNode($$[$0-4+1-1]); break; -case 61:this.$ = new ValueNode($$[$0-1+1-1]); +case 61:this.$ = new SplatNode($$[$0-4+1-1]); break; case 62:this.$ = new ValueNode($$[$0-1+1-1]); break; @@ -137,286 +137,294 @@ case 63:this.$ = new ValueNode($$[$0-1+1-1]); break; case 64:this.$ = new ValueNode($$[$0-1+1-1]); break; -case 65:this.$ = $$[$0-1+1-1]; +case 65:this.$ = new ValueNode($$[$0-1+1-1]); break; -case 66:this.$ = $$[$0-2+1-1].push($$[$0-2+2-1]); +case 66:this.$ = new ValueNode($$[$0-1+1-1]); break; -case 67:this.$ = new ValueNode($$[$0-2+1-1], [$$[$0-2+2-1]]); +case 67:this.$ = new ValueNode($$[$0-1+1-1]); break; -case 68:this.$ = new AccessorNode($$[$0-2+2-1]); +case 68:this.$ = $$[$0-1+1-1]; break; -case 69:this.$ = new AccessorNode($$[$0-2+2-1], 'prototype'); +case 69:this.$ = $$[$0-2+1-1].push($$[$0-2+2-1]); break; -case 70:this.$ = new AccessorNode($$[$0-2+2-1], 'soak'); +case 70:this.$ = new ValueNode($$[$0-2+1-1], [$$[$0-2+2-1]]); break; -case 71:this.$ = $$[$0-1+1-1]; +case 71:this.$ = new AccessorNode($$[$0-2+2-1]); break; -case 72:this.$ = new SliceNode($$[$0-1+1-1]); +case 72:this.$ = new AccessorNode($$[$0-2+2-1], 'prototype'); break; -case 73:this.$ = new IndexNode($$[$0-3+2-1]); +case 73:this.$ = new AccessorNode(new LiteralNode('prototype')); break; -case 74:this.$ = new IndexNode($$[$0-3+2-1], 'soak'); +case 74:this.$ = new AccessorNode($$[$0-2+2-1], 'soak'); break; -case 75:this.$ = new ObjectNode($$[$0-3+2-1]); +case 75:this.$ = $$[$0-1+1-1]; break; -case 76:this.$ = new ObjectNode($$[$0-3+2-1]); +case 76:this.$ = new SliceNode($$[$0-1+1-1]); break; -case 77:this.$ = new ClassNode($$[$0-2+2-1]); +case 77:this.$ = new IndexNode($$[$0-3+2-1]); break; -case 78:this.$ = new ClassNode($$[$0-4+2-1], $$[$0-4+4-1]); +case 78:this.$ = new IndexNode($$[$0-3+2-1], 'soak'); break; -case 79:this.$ = new ClassNode($$[$0-3+2-1], null, $$[$0-3+3-1]); +case 79:this.$ = new ObjectNode($$[$0-3+2-1]); break; -case 80:this.$ = new ClassNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+5-1]); +case 80:this.$ = new ObjectNode($$[$0-3+2-1]); break; -case 81:this.$ = []; +case 81:this.$ = new ClassNode($$[$0-2+2-1]); break; -case 82:this.$ = [$$[$0-1+1-1]]; +case 82:this.$ = new ClassNode($$[$0-4+2-1], $$[$0-4+4-1]); break; -case 83:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); +case 83:this.$ = new ClassNode($$[$0-3+2-1], null, $$[$0-3+3-1]); break; -case 84:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); +case 84:this.$ = new ClassNode($$[$0-5+2-1], $$[$0-5+4-1], $$[$0-5+5-1]); break; -case 85:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); +case 85:this.$ = []; break; -case 86:this.$ = $$[$0-3+2-1]; +case 86:this.$ = [$$[$0-1+1-1]]; break; -case 87:this.$ = $$[$0-1+1-1]; +case 87:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); break; -case 88:this.$ = $$[$0-2+2-1].new_instance(); +case 88:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); break; -case 89:this.$ = $$[$0-1+1-1]; +case 89:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); break; -case 90:this.$ = new ExtendsNode($$[$0-3+1-1], $$[$0-3+3-1]); +case 90:this.$ = $$[$0-3+2-1]; break; -case 91:this.$ = new CallNode($$[$0-2+1-1], $$[$0-2+2-1]); +case 91:this.$ = $$[$0-1+1-1]; break; -case 92:this.$ = new CallNode($$[$0-2+1-1], $$[$0-2+2-1]); +case 92:this.$ = $$[$0-2+2-1].new_instance(); break; -case 93:this.$ = $$[$0-3+2-1]; +case 93:this.$ = $$[$0-1+1-1]; break; -case 94:this.$ = new CallNode('super', $$[$0-4+3-1]); +case 94:this.$ = new CurryNode($$[$0-3+1-1], $$[$0-3+3-1]); break; -case 95:this.$ = new ValueNode(new LiteralNode('this')); +case 95:this.$ = new ExtendsNode($$[$0-3+1-1], $$[$0-3+3-1]); break; -case 96:this.$ = new ValueNode(new LiteralNode('this'), [new AccessorNode($$[$0-2+2-1])]); +case 96:this.$ = new CallNode($$[$0-2+1-1], $$[$0-2+2-1]); break; -case 97:this.$ = new RangeNode($$[$0-6+2-1], $$[$0-6+5-1]); +case 97:this.$ = new CallNode($$[$0-2+1-1], $$[$0-2+2-1]); break; -case 98:this.$ = new RangeNode($$[$0-7+2-1], $$[$0-7+6-1], true); +case 98:this.$ = $$[$0-3+2-1]; break; -case 99:this.$ = new RangeNode($$[$0-6+2-1], $$[$0-6+5-1]); +case 99:this.$ = new CallNode('super', $$[$0-4+3-1]); break; -case 100:this.$ = new RangeNode($$[$0-7+2-1], $$[$0-7+6-1], true); +case 100:this.$ = new ValueNode(new LiteralNode('this')); break; -case 101:this.$ = new ArrayNode($$[$0-3+2-1]); +case 101:this.$ = new ValueNode(new LiteralNode('this'), [new AccessorNode($$[$0-2+2-1])]); break; -case 102:this.$ = []; +case 102:this.$ = new RangeNode($$[$0-6+2-1], $$[$0-6+5-1]); break; -case 103:this.$ = [$$[$0-1+1-1]]; +case 103:this.$ = new RangeNode($$[$0-7+2-1], $$[$0-7+6-1], true); break; -case 104:this.$ = [$$[$0-2+2-1]]; +case 104:this.$ = new RangeNode($$[$0-6+2-1], $$[$0-6+5-1]); break; -case 105:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); +case 105:this.$ = new RangeNode($$[$0-7+2-1], $$[$0-7+6-1], true); break; -case 106:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); +case 106:this.$ = new ArrayNode($$[$0-3+2-1]); break; -case 107:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); +case 107:this.$ = []; break; -case 108:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); +case 108:this.$ = [$$[$0-1+1-1]]; break; -case 109:this.$ = $$[$0-2+1-1]; +case 109:this.$ = [$$[$0-2+2-1]]; break; -case 110:this.$ = $$[$0-1+1-1]; +case 110:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); break; -case 111:this.$ = $$[$0-3+1-1] instanceof Array ? $$[$0-3+1-1].concat([$$[$0-3+3-1]]) : [$$[$0-3+1-1]].concat([$$[$0-3+3-1]]); +case 111:this.$ = $$[$0-3+1-1].concat([$$[$0-3+3-1]]); break; -case 112:this.$ = new TryNode($$[$0-3+2-1], $$[$0-3+3-1][0], $$[$0-3+3-1][1]); +case 112:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); break; -case 113:this.$ = new TryNode($$[$0-4+2-1], null, null, $$[$0-4+4-1]); +case 113:this.$ = $$[$0-4+1-1].concat([$$[$0-4+4-1]]); break; -case 114:this.$ = new TryNode($$[$0-5+2-1], $$[$0-5+3-1][0], $$[$0-5+3-1][1], $$[$0-5+5-1]); +case 114:this.$ = $$[$0-2+1-1]; break; -case 115:this.$ = [$$[$0-3+2-1], $$[$0-3+3-1]]; +case 115:this.$ = $$[$0-1+1-1]; break; -case 116:this.$ = new ThrowNode($$[$0-2+2-1]); +case 116:this.$ = (function () { + if ($$[$0-3+1-1] instanceof Array) { + return $$[$0-3+1-1].concat([$$[$0-3+3-1]]); + } else { + return [$$[$0-3+1-1]].concat([$$[$0-3+3-1]]); + } + }()); +break; +case 117:this.$ = new TryNode($$[$0-3+2-1], $$[$0-3+3-1][0], $$[$0-3+3-1][1]); +break; +case 118:this.$ = new TryNode($$[$0-4+2-1], null, null, $$[$0-4+4-1]); +break; +case 119:this.$ = new TryNode($$[$0-5+2-1], $$[$0-5+3-1][0], $$[$0-5+3-1][1], $$[$0-5+5-1]); +break; +case 120:this.$ = [$$[$0-3+2-1], $$[$0-3+3-1]]; +break; +case 121:this.$ = new ThrowNode($$[$0-2+2-1]); break; -case 117:this.$ = new ParentheticalNode($$[$0-3+2-1]); +case 122:this.$ = new ParentheticalNode($$[$0-3+2-1]); break; -case 118:this.$ = new WhileNode($$[$0-2+2-1]); +case 123:this.$ = yytext; break; -case 119:this.$ = new WhileNode($$[$0-4+2-1], { +case 124:this.$ = new WhileNode($$[$0-2+2-1]); +break; +case 125:this.$ = new WhileNode($$[$0-4+2-1], { filter: $$[$0-4+4-1] }); break; -case 120:this.$ = $$[$0-2+1-1].add_body($$[$0-2+2-1]); +case 126:this.$ = $$[$0-2+1-1].add_body($$[$0-2+2-1]); break; -case 121:this.$ = $$[$0-2+2-1].add_body($$[$0-2+1-1]); +case 127:this.$ = $$[$0-2+2-1].add_body(Expressions.wrap([$$[$0-2+1-1]])); break; -case 122:this.$ = new ForNode($$[$0-4+1-1], $$[$0-4+4-1], $$[$0-4+3-1][0], $$[$0-4+3-1][1]); +case 128:this.$ = new ForNode($$[$0-4+1-1], $$[$0-4+4-1], $$[$0-4+3-1][0], $$[$0-4+3-1][1]); break; -case 123:this.$ = new ForNode($$[$0-4+4-1], $$[$0-4+3-1], $$[$0-4+2-1][0], $$[$0-4+2-1][1]); +case 129:this.$ = new ForNode($$[$0-4+4-1], $$[$0-4+3-1], $$[$0-4+2-1][0], $$[$0-4+2-1][1]); break; -case 124:this.$ = [$$[$0-1+1-1]]; +case 130:this.$ = [$$[$0-1+1-1]]; break; -case 125:this.$ = [$$[$0-3+1-1], $$[$0-3+3-1]]; +case 131:this.$ = [$$[$0-3+1-1], $$[$0-3+3-1]]; break; -case 126:this.$ = { +case 132:this.$ = { source: $$[$0-2+2-1] }; break; -case 127:this.$ = { +case 133:this.$ = { source: $$[$0-2+2-1], object: true }; break; -case 128:this.$ = (function () { +case 134:this.$ = (function () { $$[$0-3+1-1].filter = $$[$0-3+3-1]; return $$[$0-3+1-1]; }()); break; -case 129:this.$ = (function () { +case 135:this.$ = (function () { $$[$0-3+1-1].step = $$[$0-3+3-1]; return $$[$0-3+1-1]; }()); break; -case 130:this.$ = $$[$0-5+4-1].rewrite_condition($$[$0-5+2-1]); +case 136:this.$ = $$[$0-5+4-1].rewrite_condition($$[$0-5+2-1]); break; -case 131:this.$ = $$[$0-7+4-1].rewrite_condition($$[$0-7+2-1]).add_else($$[$0-7+6-1], true); +case 137:this.$ = $$[$0-7+4-1].rewrite_condition($$[$0-7+2-1]).add_else($$[$0-7+6-1], true); break; -case 132:this.$ = $$[$0-1+1-1]; +case 138:this.$ = $$[$0-1+1-1]; break; -case 133:this.$ = $$[$0-2+1-1].push($$[$0-2+2-1]); +case 139:this.$ = $$[$0-2+1-1].push($$[$0-2+2-1]); break; -case 134:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1], null, { +case 140:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1], null, { statement: true }); break; -case 135:this.$ = new IfNode($$[$0-4+2-1], $$[$0-4+3-1], null, { +case 141:this.$ = new IfNode($$[$0-4+2-1], $$[$0-4+3-1], null, { statement: true }); break; -case 136:this.$ = (function () { +case 142:this.$ = (function () { $$[$0-3+3-1].comment = $$[$0-3+1-1]; return $$[$0-3+3-1]; }()); break; -case 137:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1]); +case 143:this.$ = new IfNode($$[$0-3+2-1], $$[$0-3+3-1]); break; -case 138:this.$ = $$[$0-2+1-1].add_else($$[$0-2+2-1]); +case 144:this.$ = $$[$0-2+1-1].add_else($$[$0-2+2-1]); break; -case 139:this.$ = $$[$0-1+1-1]; +case 145:this.$ = $$[$0-1+1-1]; break; -case 140:this.$ = $$[$0-3+1-1].add_else($$[$0-3+3-1]); +case 146:this.$ = $$[$0-3+1-1].add_else($$[$0-3+3-1]); break; -case 141:this.$ = (new IfNode($$[$0-4+3-1], $$[$0-4+4-1])).force_statement(); +case 147:this.$ = (new IfNode($$[$0-4+3-1], $$[$0-4+4-1])).force_statement(); break; -case 142:this.$ = $$[$0-1+1-1]; +case 148:this.$ = $$[$0-1+1-1]; break; -case 143:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), null, { +case 149:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), null, { statement: true }); break; -case 144:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), null, { +case 150:this.$ = new IfNode($$[$0-3+3-1], Expressions.wrap([$$[$0-3+1-1]]), null, { statement: true, invert: true }); break; -case 145:this.$ = new OpNode('!', $$[$0-2+2-1]); -break; -case 146:this.$ = new OpNode('!!', $$[$0-2+2-1]); -break; -case 147:this.$ = new OpNode('-', $$[$0-2+2-1]); -break; -case 148:this.$ = new OpNode('+', $$[$0-2+2-1]); -break; -case 149:this.$ = new OpNode('not', $$[$0-2+2-1]); -break; -case 150:this.$ = new OpNode('~', $$[$0-2+2-1]); +case 151:this.$ = new OpNode('!', $$[$0-2+2-1]); break; -case 151:this.$ = new OpNode('--', $$[$0-2+2-1]); +case 152:this.$ = new OpNode('!!', $$[$0-2+2-1]); break; -case 152:this.$ = new OpNode('++', $$[$0-2+2-1]); +case 153:this.$ = new OpNode('-', $$[$0-2+2-1]); break; -case 153:this.$ = new OpNode('delete', $$[$0-2+2-1]); +case 154:this.$ = new OpNode('+', $$[$0-2+2-1]); break; -case 154:this.$ = new OpNode('typeof', $$[$0-2+2-1]); +case 155:this.$ = new OpNode('~', $$[$0-2+2-1]); break; -case 155:this.$ = new OpNode('--', $$[$0-2+1-1], null, true); +case 156:this.$ = new OpNode('--', $$[$0-2+2-1]); break; -case 156:this.$ = new OpNode('++', $$[$0-2+1-1], null, true); +case 157:this.$ = new OpNode('++', $$[$0-2+2-1]); break; -case 157:this.$ = new OpNode('*', $$[$0-3+1-1], $$[$0-3+3-1]); +case 158:this.$ = new OpNode('delete', $$[$0-2+2-1]); break; -case 158:this.$ = new OpNode('/', $$[$0-3+1-1], $$[$0-3+3-1]); +case 159:this.$ = new OpNode('typeof', $$[$0-2+2-1]); break; -case 159:this.$ = new OpNode('%', $$[$0-3+1-1], $$[$0-3+3-1]); +case 160:this.$ = new OpNode('--', $$[$0-2+1-1], null, true); break; -case 160:this.$ = new OpNode('+', $$[$0-3+1-1], $$[$0-3+3-1]); +case 161:this.$ = new OpNode('++', $$[$0-2+1-1], null, true); break; -case 161:this.$ = new OpNode('-', $$[$0-3+1-1], $$[$0-3+3-1]); +case 162:this.$ = new OpNode('*', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 162:this.$ = new OpNode('<<', $$[$0-3+1-1], $$[$0-3+3-1]); +case 163:this.$ = new OpNode('/', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 163:this.$ = new OpNode('>>', $$[$0-3+1-1], $$[$0-3+3-1]); +case 164:this.$ = new OpNode('%', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 164:this.$ = new OpNode('>>>', $$[$0-3+1-1], $$[$0-3+3-1]); +case 165:this.$ = new OpNode('+', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 165:this.$ = new OpNode('&', $$[$0-3+1-1], $$[$0-3+3-1]); +case 166:this.$ = new OpNode('-', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 166:this.$ = new OpNode('|', $$[$0-3+1-1], $$[$0-3+3-1]); +case 167:this.$ = new OpNode('<<', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 167:this.$ = new OpNode('^', $$[$0-3+1-1], $$[$0-3+3-1]); +case 168:this.$ = new OpNode('>>', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 168:this.$ = new OpNode('<=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 169:this.$ = new OpNode('>>>', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 169:this.$ = new OpNode('<', $$[$0-3+1-1], $$[$0-3+3-1]); +case 170:this.$ = new OpNode('&', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 170:this.$ = new OpNode('>', $$[$0-3+1-1], $$[$0-3+3-1]); +case 171:this.$ = new OpNode('|', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 171:this.$ = new OpNode('>=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 172:this.$ = new OpNode('^', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 172:this.$ = new OpNode('==', $$[$0-3+1-1], $$[$0-3+3-1]); +case 173:this.$ = new OpNode('<=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 173:this.$ = new OpNode('!=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 174:this.$ = new OpNode('<', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 174:this.$ = new OpNode('is', $$[$0-3+1-1], $$[$0-3+3-1]); +case 175:this.$ = new OpNode('>', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 175:this.$ = new OpNode('isnt', $$[$0-3+1-1], $$[$0-3+3-1]); +case 176:this.$ = new OpNode('>=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 176:this.$ = new OpNode('&&', $$[$0-3+1-1], $$[$0-3+3-1]); +case 177:this.$ = new OpNode('==', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 177:this.$ = new OpNode('||', $$[$0-3+1-1], $$[$0-3+3-1]); +case 178:this.$ = new OpNode('!=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 178:this.$ = new OpNode('and', $$[$0-3+1-1], $$[$0-3+3-1]); +case 179:this.$ = new OpNode('&&', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 179:this.$ = new OpNode('or', $$[$0-3+1-1], $$[$0-3+3-1]); +case 180:this.$ = new OpNode('||', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 180:this.$ = new OpNode('?', $$[$0-3+1-1], $$[$0-3+3-1]); +case 181:this.$ = new OpNode('?', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 181:this.$ = new OpNode('-=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 182:this.$ = new OpNode('-=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 182:this.$ = new OpNode('+=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 183:this.$ = new OpNode('+=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 183:this.$ = new OpNode('/=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 184:this.$ = new OpNode('/=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 184:this.$ = new OpNode('*=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 185:this.$ = new OpNode('*=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 185:this.$ = new OpNode('%=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 186:this.$ = new OpNode('%=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 186:this.$ = new OpNode('||=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 187:this.$ = new OpNode('||=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 187:this.$ = new OpNode('&&=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 188:this.$ = new OpNode('&&=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 188:this.$ = new OpNode('?=', $$[$0-3+1-1], $$[$0-3+3-1]); +case 189:this.$ = new OpNode('?=', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 189:this.$ = new OpNode('instanceof', $$[$0-3+1-1], $$[$0-3+3-1]); +case 190:this.$ = new OpNode('instanceof', $$[$0-3+1-1], $$[$0-3+3-1]); break; -case 190:this.$ = new OpNode('in', $$[$0-3+1-1], $$[$0-3+3-1]); +case 191:this.$ = new OpNode('in', $$[$0-3+1-1], $$[$0-3+3-1]); break; } }, -table: [{"1":[2,1],"2":1,"3":[1,2],"4":3,"5":4,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,6],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[3]},{"1":[2,2]},{"1":[2,3],"3":[1,79]},{"3":[1,80]},{"1":[2,5],"3":[2,5],"25":[2,5],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"4":122,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[1,123],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,8],"3":[2,8],"24":[2,8],"25":[2,8],"42":[1,125],"46":[2,8],"54":[2,8],"56":[2,8],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,8],"71":[1,135],"72":[2,8],"75":[2,8],"78":[1,126],"81":127,"82":[1,133],"84":[2,8],"88":[2,8],"96":[2,8],"98":[2,8],"99":[2,8],"100":[2,8],"103":[2,8],"105":[2,8],"112":[2,8],"115":[2,8],"118":[2,8],"119":[2,8],"122":[2,8],"123":[2,8],"126":[2,8],"127":[2,8],"128":[2,8],"129":[2,8],"130":[2,8],"131":[2,8],"132":[2,8],"133":[2,8],"134":[2,8],"135":[2,8],"136":[2,8],"137":[2,8],"138":[2,8],"139":[2,8],"140":[2,8],"141":[2,8],"142":[2,8],"143":[2,8],"144":[2,8],"145":[2,8],"146":[2,8],"147":[2,8],"148":[2,8],"149":[2,8],"150":[2,8],"151":[2,8],"152":[2,8],"153":[2,8],"154":[2,8],"155":[2,8]},{"1":[2,9],"3":[2,9],"24":[2,9],"25":[2,9],"46":[2,9],"54":[2,9],"56":[2,9],"70":[2,9],"72":[2,9],"75":[2,9],"84":[2,9],"88":[2,9],"96":[2,9],"98":[2,9],"99":[2,9],"100":[2,9],"103":[2,9],"105":[2,9],"112":[2,9],"115":[2,9],"118":[2,9],"119":[2,9],"122":[2,9],"123":[2,9],"126":[2,9],"127":[2,9],"128":[2,9],"129":[2,9],"130":[2,9],"131":[2,9],"132":[2,9],"133":[2,9],"134":[2,9],"135":[2,9],"136":[2,9],"137":[2,9],"138":[2,9],"139":[2,9],"140":[2,9],"141":[2,9],"142":[2,9],"143":[2,9],"144":[2,9],"145":[2,9],"146":[2,9],"147":[2,9],"148":[2,9],"149":[2,9],"150":[2,9],"151":[2,9],"152":[2,9],"153":[2,9],"154":[2,9],"155":[2,9]},{"1":[2,10],"3":[2,10],"24":[2,10],"25":[2,10],"46":[2,10],"54":[2,10],"56":[2,10],"70":[2,10],"72":[2,10],"75":[2,10],"84":[2,10],"88":[2,10],"96":[2,10],"98":[2,10],"99":[2,10],"100":[2,10],"103":[2,10],"105":[2,10],"112":[2,10],"115":[2,10],"118":[2,10],"119":[2,10],"122":[2,10],"123":[2,10],"126":[2,10],"127":[2,10],"128":[2,10],"129":[2,10],"130":[2,10],"131":[2,10],"132":[2,10],"133":[2,10],"134":[2,10],"135":[2,10],"136":[2,10],"137":[2,10],"138":[2,10],"139":[2,10],"140":[2,10],"141":[2,10],"142":[2,10],"143":[2,10],"144":[2,10],"145":[2,10],"146":[2,10],"147":[2,10],"148":[2,10],"149":[2,10],"150":[2,10],"151":[2,10],"152":[2,10],"153":[2,10],"154":[2,10],"155":[2,10]},{"1":[2,11],"3":[2,11],"24":[2,11],"25":[2,11],"46":[2,11],"54":[2,11],"56":[2,11],"70":[2,11],"72":[2,11],"75":[2,11],"84":[2,11],"88":[2,11],"96":[2,11],"98":[2,11],"99":[2,11],"100":[2,11],"103":[2,11],"105":[2,11],"112":[2,11],"115":[2,11],"118":[2,11],"119":[2,11],"122":[2,11],"123":[2,11],"126":[2,11],"127":[2,11],"128":[2,11],"129":[2,11],"130":[2,11],"131":[2,11],"132":[2,11],"133":[2,11],"134":[2,11],"135":[2,11],"136":[2,11],"137":[2,11],"138":[2,11],"139":[2,11],"140":[2,11],"141":[2,11],"142":[2,11],"143":[2,11],"144":[2,11],"145":[2,11],"146":[2,11],"147":[2,11],"148":[2,11],"149":[2,11],"150":[2,11],"151":[2,11],"152":[2,11],"153":[2,11],"154":[2,11],"155":[2,11]},{"1":[2,12],"3":[2,12],"24":[2,12],"25":[2,12],"46":[2,12],"54":[2,12],"56":[2,12],"70":[2,12],"72":[2,12],"75":[2,12],"84":[2,12],"88":[2,12],"96":[2,12],"98":[2,12],"99":[2,12],"100":[2,12],"103":[2,12],"105":[2,12],"112":[2,12],"115":[2,12],"118":[2,12],"119":[2,12],"122":[2,12],"123":[2,12],"126":[2,12],"127":[2,12],"128":[2,12],"129":[2,12],"130":[2,12],"131":[2,12],"132":[2,12],"133":[2,12],"134":[2,12],"135":[2,12],"136":[2,12],"137":[2,12],"138":[2,12],"139":[2,12],"140":[2,12],"141":[2,12],"142":[2,12],"143":[2,12],"144":[2,12],"145":[2,12],"146":[2,12],"147":[2,12],"148":[2,12],"149":[2,12],"150":[2,12],"151":[2,12],"152":[2,12],"153":[2,12],"154":[2,12],"155":[2,12]},{"1":[2,13],"3":[2,13],"24":[2,13],"25":[2,13],"46":[2,13],"54":[2,13],"56":[2,13],"70":[2,13],"72":[2,13],"75":[2,13],"84":[2,13],"88":[2,13],"96":[2,13],"98":[2,13],"99":[2,13],"100":[2,13],"103":[2,13],"105":[2,13],"112":[2,13],"115":[2,13],"118":[2,13],"119":[2,13],"122":[2,13],"123":[2,13],"126":[2,13],"127":[2,13],"128":[2,13],"129":[2,13],"130":[2,13],"131":[2,13],"132":[2,13],"133":[2,13],"134":[2,13],"135":[2,13],"136":[2,13],"137":[2,13],"138":[2,13],"139":[2,13],"140":[2,13],"141":[2,13],"142":[2,13],"143":[2,13],"144":[2,13],"145":[2,13],"146":[2,13],"147":[2,13],"148":[2,13],"149":[2,13],"150":[2,13],"151":[2,13],"152":[2,13],"153":[2,13],"154":[2,13],"155":[2,13]},{"1":[2,14],"3":[2,14],"24":[2,14],"25":[2,14],"46":[2,14],"54":[2,14],"56":[2,14],"70":[2,14],"72":[2,14],"75":[2,14],"84":[2,14],"88":[2,14],"96":[2,14],"98":[2,14],"99":[2,14],"100":[2,14],"103":[2,14],"105":[2,14],"112":[2,14],"115":[2,14],"118":[2,14],"119":[2,14],"122":[2,14],"123":[2,14],"126":[2,14],"127":[2,14],"128":[2,14],"129":[2,14],"130":[2,14],"131":[2,14],"132":[2,14],"133":[2,14],"134":[2,14],"135":[2,14],"136":[2,14],"137":[2,14],"138":[2,14],"139":[2,14],"140":[2,14],"141":[2,14],"142":[2,14],"143":[2,14],"144":[2,14],"145":[2,14],"146":[2,14],"147":[2,14],"148":[2,14],"149":[2,14],"150":[2,14],"151":[2,14],"152":[2,14],"153":[2,14],"154":[2,14],"155":[2,14]},{"1":[2,15],"3":[2,15],"24":[2,15],"25":[2,15],"46":[2,15],"54":[2,15],"56":[2,15],"70":[2,15],"72":[2,15],"75":[2,15],"84":[2,15],"88":[2,15],"96":[2,15],"98":[2,15],"99":[2,15],"100":[2,15],"103":[2,15],"105":[2,15],"112":[2,15],"115":[2,15],"118":[2,15],"119":[2,15],"122":[2,15],"123":[2,15],"126":[2,15],"127":[2,15],"128":[2,15],"129":[2,15],"130":[2,15],"131":[2,15],"132":[2,15],"133":[2,15],"134":[2,15],"135":[2,15],"136":[2,15],"137":[2,15],"138":[2,15],"139":[2,15],"140":[2,15],"141":[2,15],"142":[2,15],"143":[2,15],"144":[2,15],"145":[2,15],"146":[2,15],"147":[2,15],"148":[2,15],"149":[2,15],"150":[2,15],"151":[2,15],"152":[2,15],"153":[2,15],"154":[2,15],"155":[2,15]},{"1":[2,16],"3":[2,16],"24":[2,16],"25":[2,16],"46":[2,16],"54":[2,16],"56":[2,16],"70":[2,16],"72":[2,16],"75":[2,16],"84":[2,16],"88":[2,16],"96":[2,16],"98":[2,16],"99":[2,16],"100":[2,16],"103":[2,16],"105":[2,16],"112":[2,16],"115":[2,16],"118":[2,16],"119":[2,16],"122":[2,16],"123":[2,16],"126":[2,16],"127":[2,16],"128":[2,16],"129":[2,16],"130":[2,16],"131":[2,16],"132":[2,16],"133":[2,16],"134":[2,16],"135":[2,16],"136":[2,16],"137":[2,16],"138":[2,16],"139":[2,16],"140":[2,16],"141":[2,16],"142":[2,16],"143":[2,16],"144":[2,16],"145":[2,16],"146":[2,16],"147":[2,16],"148":[2,16],"149":[2,16],"150":[2,16],"151":[2,16],"152":[2,16],"153":[2,16],"154":[2,16],"155":[2,16]},{"1":[2,17],"3":[2,17],"24":[2,17],"25":[2,17],"46":[2,17],"54":[2,17],"56":[2,17],"70":[2,17],"72":[2,17],"75":[2,17],"84":[2,17],"88":[2,17],"96":[2,17],"98":[2,17],"99":[2,17],"100":[2,17],"103":[2,17],"105":[2,17],"112":[2,17],"115":[2,17],"118":[2,17],"119":[2,17],"122":[2,17],"123":[2,17],"126":[2,17],"127":[2,17],"128":[2,17],"129":[2,17],"130":[2,17],"131":[2,17],"132":[2,17],"133":[2,17],"134":[2,17],"135":[2,17],"136":[2,17],"137":[2,17],"138":[2,17],"139":[2,17],"140":[2,17],"141":[2,17],"142":[2,17],"143":[2,17],"144":[2,17],"145":[2,17],"146":[2,17],"147":[2,17],"148":[2,17],"149":[2,17],"150":[2,17],"151":[2,17],"152":[2,17],"153":[2,17],"154":[2,17],"155":[2,17]},{"1":[2,18],"3":[2,18],"24":[2,18],"25":[2,18],"46":[2,18],"54":[2,18],"56":[2,18],"70":[2,18],"72":[2,18],"75":[2,18],"84":[2,18],"88":[2,18],"96":[2,18],"98":[2,18],"99":[2,18],"100":[2,18],"103":[2,18],"105":[2,18],"112":[2,18],"115":[2,18],"118":[2,18],"119":[2,18],"122":[2,18],"123":[2,18],"126":[2,18],"127":[2,18],"128":[2,18],"129":[2,18],"130":[2,18],"131":[2,18],"132":[2,18],"133":[2,18],"134":[2,18],"135":[2,18],"136":[2,18],"137":[2,18],"138":[2,18],"139":[2,18],"140":[2,18],"141":[2,18],"142":[2,18],"143":[2,18],"144":[2,18],"145":[2,18],"146":[2,18],"147":[2,18],"148":[2,18],"149":[2,18],"150":[2,18],"151":[2,18],"152":[2,18],"153":[2,18],"154":[2,18],"155":[2,18]},{"1":[2,19],"3":[2,19],"24":[2,19],"25":[2,19],"46":[2,19],"54":[2,19],"56":[2,19],"70":[2,19],"72":[2,19],"75":[2,19],"84":[2,19],"88":[2,19],"96":[2,19],"98":[2,19],"99":[2,19],"100":[2,19],"103":[2,19],"105":[2,19],"112":[2,19],"115":[2,19],"118":[2,19],"119":[2,19],"122":[2,19],"123":[2,19],"126":[2,19],"127":[2,19],"128":[2,19],"129":[2,19],"130":[2,19],"131":[2,19],"132":[2,19],"133":[2,19],"134":[2,19],"135":[2,19],"136":[2,19],"137":[2,19],"138":[2,19],"139":[2,19],"140":[2,19],"141":[2,19],"142":[2,19],"143":[2,19],"144":[2,19],"145":[2,19],"146":[2,19],"147":[2,19],"148":[2,19],"149":[2,19],"150":[2,19],"151":[2,19],"152":[2,19],"153":[2,19],"154":[2,19],"155":[2,19]},{"1":[2,20],"3":[2,20],"24":[2,20],"25":[2,20],"46":[2,20],"54":[2,20],"56":[2,20],"70":[2,20],"72":[2,20],"75":[2,20],"84":[2,20],"88":[2,20],"96":[2,20],"98":[2,20],"99":[2,20],"100":[2,20],"103":[2,20],"105":[2,20],"112":[2,20],"115":[2,20],"118":[2,20],"119":[2,20],"122":[2,20],"123":[2,20],"126":[2,20],"127":[2,20],"128":[2,20],"129":[2,20],"130":[2,20],"131":[2,20],"132":[2,20],"133":[2,20],"134":[2,20],"135":[2,20],"136":[2,20],"137":[2,20],"138":[2,20],"139":[2,20],"140":[2,20],"141":[2,20],"142":[2,20],"143":[2,20],"144":[2,20],"145":[2,20],"146":[2,20],"147":[2,20],"148":[2,20],"149":[2,20],"150":[2,20],"151":[2,20],"152":[2,20],"153":[2,20],"154":[2,20],"155":[2,20]},{"1":[2,21],"3":[2,21],"24":[2,21],"25":[2,21],"46":[2,21],"54":[2,21],"56":[2,21],"70":[2,21],"72":[2,21],"75":[2,21],"84":[2,21],"88":[2,21],"96":[2,21],"98":[2,21],"99":[2,21],"100":[2,21],"103":[2,21],"105":[2,21],"112":[2,21],"115":[2,21],"118":[2,21],"119":[2,21],"122":[2,21],"123":[2,21],"126":[2,21],"127":[2,21],"128":[2,21],"129":[2,21],"130":[2,21],"131":[2,21],"132":[2,21],"133":[2,21],"134":[2,21],"135":[2,21],"136":[2,21],"137":[2,21],"138":[2,21],"139":[2,21],"140":[2,21],"141":[2,21],"142":[2,21],"143":[2,21],"144":[2,21],"145":[2,21],"146":[2,21],"147":[2,21],"148":[2,21],"149":[2,21],"150":[2,21],"151":[2,21],"152":[2,21],"153":[2,21],"154":[2,21],"155":[2,21]},{"1":[2,22],"3":[2,22],"24":[2,22],"25":[2,22],"46":[2,22],"54":[2,22],"56":[2,22],"70":[2,22],"72":[2,22],"75":[2,22],"84":[2,22],"88":[2,22],"96":[2,22],"98":[2,22],"99":[2,22],"100":[2,22],"103":[2,22],"105":[2,22],"112":[2,22],"115":[2,22],"118":[2,22],"119":[2,22],"122":[2,22],"123":[2,22],"126":[2,22],"127":[2,22],"128":[2,22],"129":[2,22],"130":[2,22],"131":[2,22],"132":[2,22],"133":[2,22],"134":[2,22],"135":[2,22],"136":[2,22],"137":[2,22],"138":[2,22],"139":[2,22],"140":[2,22],"141":[2,22],"142":[2,22],"143":[2,22],"144":[2,22],"145":[2,22],"146":[2,22],"147":[2,22],"148":[2,22],"149":[2,22],"150":[2,22],"151":[2,22],"152":[2,22],"153":[2,22],"154":[2,22],"155":[2,22]},{"1":[2,23],"3":[2,23],"24":[2,23],"25":[2,23],"46":[2,23],"54":[2,23],"56":[2,23],"70":[2,23],"72":[2,23],"75":[2,23],"84":[2,23],"88":[2,23],"96":[2,23],"98":[2,23],"99":[2,23],"100":[2,23],"103":[2,23],"105":[2,23],"112":[2,23],"115":[2,23],"118":[2,23],"119":[2,23],"122":[2,23],"123":[2,23],"126":[2,23],"127":[2,23],"128":[2,23],"129":[2,23],"130":[2,23],"131":[2,23],"132":[2,23],"133":[2,23],"134":[2,23],"135":[2,23],"136":[2,23],"137":[2,23],"138":[2,23],"139":[2,23],"140":[2,23],"141":[2,23],"142":[2,23],"143":[2,23],"144":[2,23],"145":[2,23],"146":[2,23],"147":[2,23],"148":[2,23],"149":[2,23],"150":[2,23],"151":[2,23],"152":[2,23],"153":[2,23],"154":[2,23],"155":[2,23]},{"1":[2,24],"3":[2,24],"24":[2,24],"25":[2,24],"46":[2,24],"54":[2,24],"56":[2,24],"70":[2,24],"72":[2,24],"75":[2,24],"84":[2,24],"88":[2,24],"96":[2,24],"98":[2,24],"99":[2,24],"100":[2,24],"103":[2,24],"105":[2,24],"112":[2,24],"115":[2,24],"118":[2,24],"119":[2,24],"122":[2,24],"123":[2,24],"126":[2,24],"127":[2,24],"128":[2,24],"129":[2,24],"130":[2,24],"131":[2,24],"132":[2,24],"133":[2,24],"134":[2,24],"135":[2,24],"136":[2,24],"137":[2,24],"138":[2,24],"139":[2,24],"140":[2,24],"141":[2,24],"142":[2,24],"143":[2,24],"144":[2,24],"145":[2,24],"146":[2,24],"147":[2,24],"148":[2,24],"149":[2,24],"150":[2,24],"151":[2,24],"152":[2,24],"153":[2,24],"154":[2,24],"155":[2,24]},{"1":[2,59],"3":[2,59],"24":[2,59],"25":[2,59],"42":[2,59],"46":[2,59],"54":[2,59],"56":[2,59],"64":[2,59],"65":[2,59],"66":[2,59],"69":[2,59],"70":[2,59],"71":[2,59],"72":[2,59],"75":[2,59],"78":[2,59],"82":[2,59],"84":[2,59],"88":[2,59],"96":[2,59],"98":[2,59],"99":[2,59],"100":[2,59],"103":[2,59],"105":[2,59],"112":[2,59],"115":[2,59],"118":[2,59],"119":[2,59],"122":[2,59],"123":[2,59],"126":[2,59],"127":[2,59],"128":[2,59],"129":[2,59],"130":[2,59],"131":[2,59],"132":[2,59],"133":[2,59],"134":[2,59],"135":[2,59],"136":[2,59],"137":[2,59],"138":[2,59],"139":[2,59],"140":[2,59],"141":[2,59],"142":[2,59],"143":[2,59],"144":[2,59],"145":[2,59],"146":[2,59],"147":[2,59],"148":[2,59],"149":[2,59],"150":[2,59],"151":[2,59],"152":[2,59],"153":[2,59],"154":[2,59],"155":[2,59]},{"1":[2,60],"3":[2,60],"24":[2,60],"25":[2,60],"42":[2,60],"46":[2,60],"54":[2,60],"56":[2,60],"64":[2,60],"65":[2,60],"66":[2,60],"69":[2,60],"70":[2,60],"71":[2,60],"72":[2,60],"75":[2,60],"78":[2,60],"82":[2,60],"84":[2,60],"88":[2,60],"96":[2,60],"98":[2,60],"99":[2,60],"100":[2,60],"103":[2,60],"105":[2,60],"112":[2,60],"115":[2,60],"118":[2,60],"119":[2,60],"122":[2,60],"123":[2,60],"126":[2,60],"127":[2,60],"128":[2,60],"129":[2,60],"130":[2,60],"131":[2,60],"132":[2,60],"133":[2,60],"134":[2,60],"135":[2,60],"136":[2,60],"137":[2,60],"138":[2,60],"139":[2,60],"140":[2,60],"141":[2,60],"142":[2,60],"143":[2,60],"144":[2,60],"145":[2,60],"146":[2,60],"147":[2,60],"148":[2,60],"149":[2,60],"150":[2,60],"151":[2,60],"152":[2,60],"153":[2,60],"154":[2,60],"155":[2,60]},{"1":[2,61],"3":[2,61],"24":[2,61],"25":[2,61],"42":[2,61],"46":[2,61],"54":[2,61],"56":[2,61],"64":[2,61],"65":[2,61],"66":[2,61],"69":[2,61],"70":[2,61],"71":[2,61],"72":[2,61],"75":[2,61],"78":[2,61],"82":[2,61],"84":[2,61],"88":[2,61],"96":[2,61],"98":[2,61],"99":[2,61],"100":[2,61],"103":[2,61],"105":[2,61],"112":[2,61],"115":[2,61],"118":[2,61],"119":[2,61],"122":[2,61],"123":[2,61],"126":[2,61],"127":[2,61],"128":[2,61],"129":[2,61],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"1":[2,62],"3":[2,62],"24":[2,62],"25":[2,62],"42":[2,62],"46":[2,62],"54":[2,62],"56":[2,62],"64":[2,62],"65":[2,62],"66":[2,62],"69":[2,62],"70":[2,62],"71":[2,62],"72":[2,62],"75":[2,62],"78":[2,62],"82":[2,62],"84":[2,62],"88":[2,62],"96":[2,62],"98":[2,62],"99":[2,62],"100":[2,62],"103":[2,62],"105":[2,62],"112":[2,62],"115":[2,62],"118":[2,62],"119":[2,62],"122":[2,62],"123":[2,62],"126":[2,62],"127":[2,62],"128":[2,62],"129":[2,62],"130":[2,62],"131":[2,62],"132":[2,62],"133":[2,62],"134":[2,62],"135":[2,62],"136":[2,62],"137":[2,62],"138":[2,62],"139":[2,62],"140":[2,62],"141":[2,62],"142":[2,62],"143":[2,62],"144":[2,62],"145":[2,62],"146":[2,62],"147":[2,62],"148":[2,62],"149":[2,62],"150":[2,62],"151":[2,62],"152":[2,62],"153":[2,62],"154":[2,62],"155":[2,62]},{"1":[2,63],"3":[2,63],"24":[2,63],"25":[2,63],"42":[2,63],"46":[2,63],"54":[2,63],"56":[2,63],"64":[2,63],"65":[2,63],"66":[2,63],"69":[2,63],"70":[2,63],"71":[2,63],"72":[2,63],"75":[2,63],"78":[2,63],"82":[2,63],"84":[2,63],"88":[2,63],"96":[2,63],"98":[2,63],"99":[2,63],"100":[2,63],"103":[2,63],"105":[2,63],"112":[2,63],"115":[2,63],"118":[2,63],"119":[2,63],"122":[2,63],"123":[2,63],"126":[2,63],"127":[2,63],"128":[2,63],"129":[2,63],"130":[2,63],"131":[2,63],"132":[2,63],"133":[2,63],"134":[2,63],"135":[2,63],"136":[2,63],"137":[2,63],"138":[2,63],"139":[2,63],"140":[2,63],"141":[2,63],"142":[2,63],"143":[2,63],"144":[2,63],"145":[2,63],"146":[2,63],"147":[2,63],"148":[2,63],"149":[2,63],"150":[2,63],"151":[2,63],"152":[2,63],"153":[2,63],"154":[2,63],"155":[2,63]},{"1":[2,64],"3":[2,64],"24":[2,64],"25":[2,64],"42":[2,64],"46":[2,64],"54":[2,64],"56":[2,64],"64":[2,64],"65":[2,64],"66":[2,64],"69":[2,64],"70":[2,64],"71":[2,64],"72":[2,64],"75":[2,64],"78":[2,64],"82":[2,64],"84":[2,64],"88":[2,64],"96":[2,64],"98":[2,64],"99":[2,64],"100":[2,64],"103":[2,64],"105":[2,64],"112":[2,64],"115":[2,64],"118":[2,64],"119":[2,64],"122":[2,64],"123":[2,64],"126":[2,64],"127":[2,64],"128":[2,64],"129":[2,64],"130":[2,64],"131":[2,64],"132":[2,64],"133":[2,64],"134":[2,64],"135":[2,64],"136":[2,64],"137":[2,64],"138":[2,64],"139":[2,64],"140":[2,64],"141":[2,64],"142":[2,64],"143":[2,64],"144":[2,64],"145":[2,64],"146":[2,64],"147":[2,64],"148":[2,64],"149":[2,64],"150":[2,64],"151":[2,64],"152":[2,64],"153":[2,64],"154":[2,64],"155":[2,64]},{"1":[2,65],"3":[2,65],"24":[2,65],"25":[2,65],"42":[2,65],"46":[2,65],"54":[2,65],"56":[2,65],"64":[2,65],"65":[2,65],"66":[2,65],"69":[2,65],"70":[2,65],"71":[2,65],"72":[2,65],"75":[2,65],"78":[2,65],"82":[2,65],"84":[2,65],"88":[2,65],"96":[2,65],"98":[2,65],"99":[2,65],"100":[2,65],"103":[2,65],"105":[2,65],"112":[2,65],"115":[2,65],"118":[2,65],"119":[2,65],"122":[2,65],"123":[2,65],"126":[2,65],"127":[2,65],"128":[2,65],"129":[2,65],"130":[2,65],"131":[2,65],"132":[2,65],"133":[2,65],"134":[2,65],"135":[2,65],"136":[2,65],"137":[2,65],"138":[2,65],"139":[2,65],"140":[2,65],"141":[2,65],"142":[2,65],"143":[2,65],"144":[2,65],"145":[2,65],"146":[2,65],"147":[2,65],"148":[2,65],"149":[2,65],"150":[2,65],"151":[2,65],"152":[2,65],"153":[2,65],"154":[2,65],"155":[2,65]},{"1":[2,87],"3":[2,87],"24":[2,87],"25":[2,87],"46":[2,87],"54":[2,87],"56":[2,87],"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,87],"71":[1,135],"72":[2,87],"75":[2,87],"81":137,"82":[1,133],"84":[2,87],"88":[2,87],"96":[2,87],"98":[2,87],"99":[2,87],"100":[2,87],"103":[2,87],"105":[2,87],"112":[2,87],"115":[2,87],"118":[2,87],"119":[2,87],"122":[2,87],"123":[2,87],"126":[2,87],"127":[2,87],"128":[2,87],"129":[2,87],"130":[2,87],"131":[2,87],"132":[2,87],"133":[2,87],"134":[2,87],"135":[2,87],"136":[2,87],"137":[2,87],"138":[2,87],"139":[2,87],"140":[2,87],"141":[2,87],"142":[2,87],"143":[2,87],"144":[2,87],"145":[2,87],"146":[2,87],"147":[2,87],"148":[2,87],"149":[2,87],"150":[2,87],"151":[2,87],"152":[2,87],"153":[2,87],"154":[2,87],"155":[2,87]},{"7":139,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":138,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,89],"3":[2,89],"24":[2,89],"25":[2,89],"46":[2,89],"54":[2,89],"56":[2,89],"70":[2,89],"72":[2,89],"75":[2,89],"84":[2,89],"88":[2,89],"96":[2,89],"98":[2,89],"99":[2,89],"100":[2,89],"103":[2,89],"105":[2,89],"112":[2,89],"115":[2,89],"118":[2,89],"119":[2,89],"122":[2,89],"123":[2,89],"126":[2,89],"127":[2,89],"128":[2,89],"129":[2,89],"130":[2,89],"131":[2,89],"132":[2,89],"133":[2,89],"134":[2,89],"135":[2,89],"136":[2,89],"137":[2,89],"138":[2,89],"139":[2,89],"140":[2,89],"141":[2,89],"142":[2,89],"143":[2,89],"144":[2,89],"145":[2,89],"146":[2,89],"147":[2,89],"148":[2,89],"149":[2,89],"150":[2,89],"151":[2,89],"152":[2,89],"153":[2,89],"154":[2,89],"155":[2,89]},{"48":140,"49":[2,53],"53":141,"54":[2,53],"55":[1,142]},{"5":143,"24":[1,6]},{"6":144,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":145,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":146,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":147,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":148,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":149,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":150,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":151,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":152,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":153,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,142],"3":[2,142],"24":[2,142],"25":[2,142],"46":[2,142],"54":[2,142],"56":[2,142],"70":[2,142],"72":[2,142],"75":[2,142],"84":[2,142],"88":[2,142],"96":[2,142],"98":[2,142],"99":[2,142],"100":[2,142],"103":[2,142],"105":[2,142],"112":[2,142],"115":[2,142],"118":[2,142],"119":[2,142],"122":[2,142],"123":[2,142],"126":[2,142],"127":[2,142],"128":[2,142],"129":[2,142],"130":[2,142],"131":[2,142],"132":[2,142],"133":[2,142],"134":[2,142],"135":[2,142],"136":[2,142],"137":[2,142],"138":[2,142],"139":[2,142],"140":[2,142],"141":[2,142],"142":[2,142],"143":[2,142],"144":[2,142],"145":[2,142],"146":[2,142],"147":[2,142],"148":[2,142],"149":[2,142],"150":[2,142],"151":[2,142],"152":[2,142],"153":[2,142],"154":[2,142],"155":[2,142]},{"5":154,"24":[1,6]},{"6":155,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,46],"3":[2,46],"6":156,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[2,46],"25":[2,46],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,46],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,46],"56":[2,46],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,46],"72":[2,46],"73":[1,68],"75":[2,46],"77":[1,53],"79":[1,32],"80":33,"84":[2,46],"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,46],"90":[1,47],"94":[1,48],"95":[1,69],"96":[2,46],"97":50,"98":[2,46],"99":[2,46],"100":[1,51],"103":[2,46],"105":[2,46],"106":[1,52],"111":74,"112":[2,46],"114":46,"115":[2,46],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,46],"127":[2,46],"128":[2,46],"129":[2,46],"130":[2,46],"131":[2,46],"132":[2,46],"133":[2,46],"134":[2,46],"135":[2,46],"136":[2,46],"137":[2,46],"138":[2,46],"139":[2,46],"140":[2,46],"141":[2,46],"142":[2,46],"143":[2,46],"144":[2,46],"145":[2,46],"146":[2,46],"147":[2,46],"148":[2,46],"149":[2,46],"150":[2,46],"151":[2,46],"152":[2,46],"153":[2,46],"154":[2,46],"155":[2,46]},{"5":157,"24":[1,6]},{"26":159,"27":[1,55],"101":158},{"6":160,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"7":161,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,47],"3":[2,47],"24":[2,47],"25":[2,47],"46":[2,47],"54":[2,47],"56":[2,47],"70":[2,47],"72":[2,47],"75":[2,47],"84":[2,47],"88":[2,47],"96":[2,47],"98":[2,47],"99":[2,47],"100":[2,47],"103":[2,47],"105":[2,47],"112":[2,47],"115":[2,47],"118":[2,47],"119":[2,47],"122":[2,47],"123":[2,47],"126":[2,47],"127":[2,47],"128":[2,47],"129":[2,47],"130":[2,47],"131":[2,47],"132":[2,47],"133":[2,47],"134":[2,47],"135":[2,47],"136":[2,47],"137":[2,47],"138":[2,47],"139":[2,47],"140":[2,47],"141":[2,47],"142":[2,47],"143":[2,47],"144":[2,47],"145":[2,47],"146":[2,47],"147":[2,47],"148":[2,47],"149":[2,47],"150":[2,47],"151":[2,47],"152":[2,47],"153":[2,47],"154":[2,47],"155":[2,47]},{"1":[2,27],"3":[2,27],"24":[2,27],"25":[2,27],"42":[2,27],"46":[2,27],"54":[2,27],"56":[2,27],"64":[2,27],"65":[2,27],"66":[2,27],"69":[2,27],"70":[2,27],"71":[2,27],"72":[2,27],"75":[2,27],"78":[2,27],"82":[2,27],"84":[2,27],"88":[2,27],"96":[2,27],"98":[2,27],"99":[2,27],"100":[2,27],"103":[2,27],"104":[2,27],"105":[2,27],"112":[2,27],"115":[2,27],"118":[2,27],"119":[2,27],"122":[2,27],"123":[2,27],"126":[2,27],"127":[2,27],"128":[2,27],"129":[2,27],"130":[2,27],"131":[2,27],"132":[2,27],"133":[2,27],"134":[2,27],"135":[2,27],"136":[2,27],"137":[2,27],"138":[2,27],"139":[2,27],"140":[2,27],"141":[2,27],"142":[2,27],"143":[2,27],"144":[2,27],"145":[2,27],"146":[2,27],"147":[2,27],"148":[2,27],"149":[2,27],"150":[2,27],"151":[2,27],"152":[2,27],"153":[2,27],"154":[2,27],"155":[2,27]},{"1":[2,30],"3":[2,30],"24":[2,30],"25":[2,30],"42":[2,30],"46":[2,30],"54":[2,30],"56":[2,30],"64":[2,30],"65":[2,30],"66":[2,30],"69":[2,30],"70":[2,30],"71":[2,30],"72":[2,30],"75":[2,30],"78":[2,30],"82":[2,30],"84":[2,30],"88":[2,30],"96":[2,30],"98":[2,30],"99":[2,30],"100":[2,30],"103":[2,30],"105":[2,30],"112":[2,30],"115":[2,30],"118":[2,30],"119":[2,30],"122":[2,30],"123":[2,30],"126":[2,30],"127":[2,30],"128":[2,30],"129":[2,30],"130":[2,30],"131":[2,30],"132":[2,30],"133":[2,30],"134":[2,30],"135":[2,30],"136":[2,30],"137":[2,30],"138":[2,30],"139":[2,30],"140":[2,30],"141":[2,30],"142":[2,30],"143":[2,30],"144":[2,30],"145":[2,30],"146":[2,30],"147":[2,30],"148":[2,30],"149":[2,30],"150":[2,30],"151":[2,30],"152":[2,30],"153":[2,30],"154":[2,30],"155":[2,30]},{"1":[2,31],"3":[2,31],"24":[2,31],"25":[2,31],"42":[2,31],"46":[2,31],"54":[2,31],"56":[2,31],"64":[2,31],"65":[2,31],"66":[2,31],"69":[2,31],"70":[2,31],"71":[2,31],"72":[2,31],"75":[2,31],"78":[2,31],"82":[2,31],"84":[2,31],"88":[2,31],"96":[2,31],"98":[2,31],"99":[2,31],"100":[2,31],"103":[2,31],"105":[2,31],"112":[2,31],"115":[2,31],"118":[2,31],"119":[2,31],"122":[2,31],"123":[2,31],"126":[2,31],"127":[2,31],"128":[2,31],"129":[2,31],"130":[2,31],"131":[2,31],"132":[2,31],"133":[2,31],"134":[2,31],"135":[2,31],"136":[2,31],"137":[2,31],"138":[2,31],"139":[2,31],"140":[2,31],"141":[2,31],"142":[2,31],"143":[2,31],"144":[2,31],"145":[2,31],"146":[2,31],"147":[2,31],"148":[2,31],"149":[2,31],"150":[2,31],"151":[2,31],"152":[2,31],"153":[2,31],"154":[2,31],"155":[2,31]},{"1":[2,32],"3":[2,32],"24":[2,32],"25":[2,32],"42":[2,32],"46":[2,32],"54":[2,32],"56":[2,32],"64":[2,32],"65":[2,32],"66":[2,32],"69":[2,32],"70":[2,32],"71":[2,32],"72":[2,32],"75":[2,32],"78":[2,32],"82":[2,32],"84":[2,32],"88":[2,32],"96":[2,32],"98":[2,32],"99":[2,32],"100":[2,32],"103":[2,32],"105":[2,32],"112":[2,32],"115":[2,32],"118":[2,32],"119":[2,32],"122":[2,32],"123":[2,32],"126":[2,32],"127":[2,32],"128":[2,32],"129":[2,32],"130":[2,32],"131":[2,32],"132":[2,32],"133":[2,32],"134":[2,32],"135":[2,32],"136":[2,32],"137":[2,32],"138":[2,32],"139":[2,32],"140":[2,32],"141":[2,32],"142":[2,32],"143":[2,32],"144":[2,32],"145":[2,32],"146":[2,32],"147":[2,32],"148":[2,32],"149":[2,32],"150":[2,32],"151":[2,32],"152":[2,32],"153":[2,32],"154":[2,32],"155":[2,32]},{"1":[2,33],"3":[2,33],"24":[2,33],"25":[2,33],"42":[2,33],"46":[2,33],"54":[2,33],"56":[2,33],"64":[2,33],"65":[2,33],"66":[2,33],"69":[2,33],"70":[2,33],"71":[2,33],"72":[2,33],"75":[2,33],"78":[2,33],"82":[2,33],"84":[2,33],"88":[2,33],"96":[2,33],"98":[2,33],"99":[2,33],"100":[2,33],"103":[2,33],"105":[2,33],"112":[2,33],"115":[2,33],"118":[2,33],"119":[2,33],"122":[2,33],"123":[2,33],"126":[2,33],"127":[2,33],"128":[2,33],"129":[2,33],"130":[2,33],"131":[2,33],"132":[2,33],"133":[2,33],"134":[2,33],"135":[2,33],"136":[2,33],"137":[2,33],"138":[2,33],"139":[2,33],"140":[2,33],"141":[2,33],"142":[2,33],"143":[2,33],"144":[2,33],"145":[2,33],"146":[2,33],"147":[2,33],"148":[2,33],"149":[2,33],"150":[2,33],"151":[2,33],"152":[2,33],"153":[2,33],"154":[2,33],"155":[2,33]},{"1":[2,34],"3":[2,34],"24":[2,34],"25":[2,34],"42":[2,34],"46":[2,34],"54":[2,34],"56":[2,34],"64":[2,34],"65":[2,34],"66":[2,34],"69":[2,34],"70":[2,34],"71":[2,34],"72":[2,34],"75":[2,34],"78":[2,34],"82":[2,34],"84":[2,34],"88":[2,34],"96":[2,34],"98":[2,34],"99":[2,34],"100":[2,34],"103":[2,34],"105":[2,34],"112":[2,34],"115":[2,34],"118":[2,34],"119":[2,34],"122":[2,34],"123":[2,34],"126":[2,34],"127":[2,34],"128":[2,34],"129":[2,34],"130":[2,34],"131":[2,34],"132":[2,34],"133":[2,34],"134":[2,34],"135":[2,34],"136":[2,34],"137":[2,34],"138":[2,34],"139":[2,34],"140":[2,34],"141":[2,34],"142":[2,34],"143":[2,34],"144":[2,34],"145":[2,34],"146":[2,34],"147":[2,34],"148":[2,34],"149":[2,34],"150":[2,34],"151":[2,34],"152":[2,34],"153":[2,34],"154":[2,34],"155":[2,34]},{"1":[2,35],"3":[2,35],"24":[2,35],"25":[2,35],"42":[2,35],"46":[2,35],"54":[2,35],"56":[2,35],"64":[2,35],"65":[2,35],"66":[2,35],"69":[2,35],"70":[2,35],"71":[2,35],"72":[2,35],"75":[2,35],"78":[2,35],"82":[2,35],"84":[2,35],"88":[2,35],"96":[2,35],"98":[2,35],"99":[2,35],"100":[2,35],"103":[2,35],"105":[2,35],"112":[2,35],"115":[2,35],"118":[2,35],"119":[2,35],"122":[2,35],"123":[2,35],"126":[2,35],"127":[2,35],"128":[2,35],"129":[2,35],"130":[2,35],"131":[2,35],"132":[2,35],"133":[2,35],"134":[2,35],"135":[2,35],"136":[2,35],"137":[2,35],"138":[2,35],"139":[2,35],"140":[2,35],"141":[2,35],"142":[2,35],"143":[2,35],"144":[2,35],"145":[2,35],"146":[2,35],"147":[2,35],"148":[2,35],"149":[2,35],"150":[2,35],"151":[2,35],"152":[2,35],"153":[2,35],"154":[2,35],"155":[2,35]},{"1":[2,36],"3":[2,36],"24":[2,36],"25":[2,36],"42":[2,36],"46":[2,36],"54":[2,36],"56":[2,36],"64":[2,36],"65":[2,36],"66":[2,36],"69":[2,36],"70":[2,36],"71":[2,36],"72":[2,36],"75":[2,36],"78":[2,36],"82":[2,36],"84":[2,36],"88":[2,36],"96":[2,36],"98":[2,36],"99":[2,36],"100":[2,36],"103":[2,36],"105":[2,36],"112":[2,36],"115":[2,36],"118":[2,36],"119":[2,36],"122":[2,36],"123":[2,36],"126":[2,36],"127":[2,36],"128":[2,36],"129":[2,36],"130":[2,36],"131":[2,36],"132":[2,36],"133":[2,36],"134":[2,36],"135":[2,36],"136":[2,36],"137":[2,36],"138":[2,36],"139":[2,36],"140":[2,36],"141":[2,36],"142":[2,36],"143":[2,36],"144":[2,36],"145":[2,36],"146":[2,36],"147":[2,36],"148":[2,36],"149":[2,36],"150":[2,36],"151":[2,36],"152":[2,36],"153":[2,36],"154":[2,36],"155":[2,36]},{"1":[2,37],"3":[2,37],"24":[2,37],"25":[2,37],"42":[2,37],"46":[2,37],"54":[2,37],"56":[2,37],"64":[2,37],"65":[2,37],"66":[2,37],"69":[2,37],"70":[2,37],"71":[2,37],"72":[2,37],"75":[2,37],"78":[2,37],"82":[2,37],"84":[2,37],"88":[2,37],"96":[2,37],"98":[2,37],"99":[2,37],"100":[2,37],"103":[2,37],"105":[2,37],"112":[2,37],"115":[2,37],"118":[2,37],"119":[2,37],"122":[2,37],"123":[2,37],"126":[2,37],"127":[2,37],"128":[2,37],"129":[2,37],"130":[2,37],"131":[2,37],"132":[2,37],"133":[2,37],"134":[2,37],"135":[2,37],"136":[2,37],"137":[2,37],"138":[2,37],"139":[2,37],"140":[2,37],"141":[2,37],"142":[2,37],"143":[2,37],"144":[2,37],"145":[2,37],"146":[2,37],"147":[2,37],"148":[2,37],"149":[2,37],"150":[2,37],"151":[2,37],"152":[2,37],"153":[2,37],"154":[2,37],"155":[2,37]},{"1":[2,38],"3":[2,38],"24":[2,38],"25":[2,38],"42":[2,38],"46":[2,38],"54":[2,38],"56":[2,38],"64":[2,38],"65":[2,38],"66":[2,38],"69":[2,38],"70":[2,38],"71":[2,38],"72":[2,38],"75":[2,38],"78":[2,38],"82":[2,38],"84":[2,38],"88":[2,38],"96":[2,38],"98":[2,38],"99":[2,38],"100":[2,38],"103":[2,38],"105":[2,38],"112":[2,38],"115":[2,38],"118":[2,38],"119":[2,38],"122":[2,38],"123":[2,38],"126":[2,38],"127":[2,38],"128":[2,38],"129":[2,38],"130":[2,38],"131":[2,38],"132":[2,38],"133":[2,38],"134":[2,38],"135":[2,38],"136":[2,38],"137":[2,38],"138":[2,38],"139":[2,38],"140":[2,38],"141":[2,38],"142":[2,38],"143":[2,38],"144":[2,38],"145":[2,38],"146":[2,38],"147":[2,38],"148":[2,38],"149":[2,38],"150":[2,38],"151":[2,38],"152":[2,38],"153":[2,38],"154":[2,38],"155":[2,38]},{"1":[2,39],"3":[2,39],"24":[2,39],"25":[2,39],"42":[2,39],"46":[2,39],"54":[2,39],"56":[2,39],"64":[2,39],"65":[2,39],"66":[2,39],"69":[2,39],"70":[2,39],"71":[2,39],"72":[2,39],"75":[2,39],"78":[2,39],"82":[2,39],"84":[2,39],"88":[2,39],"96":[2,39],"98":[2,39],"99":[2,39],"100":[2,39],"103":[2,39],"105":[2,39],"112":[2,39],"115":[2,39],"118":[2,39],"119":[2,39],"122":[2,39],"123":[2,39],"126":[2,39],"127":[2,39],"128":[2,39],"129":[2,39],"130":[2,39],"131":[2,39],"132":[2,39],"133":[2,39],"134":[2,39],"135":[2,39],"136":[2,39],"137":[2,39],"138":[2,39],"139":[2,39],"140":[2,39],"141":[2,39],"142":[2,39],"143":[2,39],"144":[2,39],"145":[2,39],"146":[2,39],"147":[2,39],"148":[2,39],"149":[2,39],"150":[2,39],"151":[2,39],"152":[2,39],"153":[2,39],"154":[2,39],"155":[2,39]},{"1":[2,40],"3":[2,40],"24":[2,40],"25":[2,40],"42":[2,40],"46":[2,40],"54":[2,40],"56":[2,40],"64":[2,40],"65":[2,40],"66":[2,40],"69":[2,40],"70":[2,40],"71":[2,40],"72":[2,40],"75":[2,40],"78":[2,40],"82":[2,40],"84":[2,40],"88":[2,40],"96":[2,40],"98":[2,40],"99":[2,40],"100":[2,40],"103":[2,40],"105":[2,40],"112":[2,40],"115":[2,40],"118":[2,40],"119":[2,40],"122":[2,40],"123":[2,40],"126":[2,40],"127":[2,40],"128":[2,40],"129":[2,40],"130":[2,40],"131":[2,40],"132":[2,40],"133":[2,40],"134":[2,40],"135":[2,40],"136":[2,40],"137":[2,40],"138":[2,40],"139":[2,40],"140":[2,40],"141":[2,40],"142":[2,40],"143":[2,40],"144":[2,40],"145":[2,40],"146":[2,40],"147":[2,40],"148":[2,40],"149":[2,40],"150":[2,40],"151":[2,40],"152":[2,40],"153":[2,40],"154":[2,40],"155":[2,40]},{"3":[2,102],"6":164,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":163,"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,102],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,81],"23":172,"24":[1,169],"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":168,"45":[1,54],"54":[2,81],"74":166,"75":[2,81],"76":167},{"6":173,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,95],"3":[2,95],"24":[2,95],"25":[2,95],"26":174,"27":[1,55],"42":[2,95],"46":[2,95],"54":[2,95],"56":[2,95],"64":[2,95],"65":[2,95],"66":[2,95],"69":[2,95],"70":[2,95],"71":[2,95],"72":[2,95],"75":[2,95],"78":[2,95],"82":[2,95],"84":[2,95],"88":[2,95],"96":[2,95],"98":[2,95],"99":[2,95],"100":[2,95],"103":[2,95],"105":[2,95],"112":[2,95],"115":[2,95],"118":[2,95],"119":[2,95],"122":[2,95],"123":[2,95],"126":[2,95],"127":[2,95],"128":[2,95],"129":[2,95],"130":[2,95],"131":[2,95],"132":[2,95],"133":[2,95],"134":[2,95],"135":[2,95],"136":[2,95],"137":[2,95],"138":[2,95],"139":[2,95],"140":[2,95],"141":[2,95],"142":[2,95],"143":[2,95],"144":[2,95],"145":[2,95],"146":[2,95],"147":[2,95],"148":[2,95],"149":[2,95],"150":[2,95],"151":[2,95],"152":[2,95],"153":[2,95],"154":[2,95],"155":[2,95]},{"82":[1,175]},{"24":[2,51]},{"24":[2,52]},{"1":[2,139],"3":[2,139],"24":[2,139],"25":[2,139],"46":[2,139],"54":[2,139],"56":[2,139],"70":[2,139],"72":[2,139],"75":[2,139],"84":[2,139],"88":[2,139],"96":[2,139],"98":[2,139],"99":[2,139],"100":[2,139],"103":[2,139],"105":[2,139],"108":[1,176],"112":[2,139],"113":177,"115":[2,139],"118":[2,139],"119":[2,139],"122":[2,139],"123":[2,139],"126":[2,139],"127":[2,139],"128":[2,139],"129":[2,139],"130":[2,139],"131":[2,139],"132":[2,139],"133":[2,139],"134":[2,139],"135":[2,139],"136":[2,139],"137":[2,139],"138":[2,139],"139":[2,139],"140":[2,139],"141":[2,139],"142":[2,139],"143":[2,139],"144":[2,139],"145":[2,139],"146":[2,139],"147":[2,139],"148":[2,139],"149":[2,139],"150":[2,139],"151":[2,139],"152":[2,139],"153":[2,139],"154":[2,139],"155":[2,139]},{"6":178,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,28],"3":[2,28],"24":[2,28],"25":[2,28],"42":[2,28],"46":[2,28],"54":[2,28],"56":[2,28],"64":[2,28],"65":[2,28],"66":[2,28],"69":[2,28],"70":[2,28],"71":[2,28],"72":[2,28],"75":[2,28],"78":[2,28],"82":[2,28],"84":[2,28],"88":[2,28],"96":[2,28],"98":[2,28],"99":[2,28],"100":[2,28],"103":[2,28],"105":[2,28],"112":[2,28],"115":[2,28],"118":[2,28],"119":[2,28],"122":[2,28],"123":[2,28],"126":[2,28],"127":[2,28],"128":[2,28],"129":[2,28],"130":[2,28],"131":[2,28],"132":[2,28],"133":[2,28],"134":[2,28],"135":[2,28],"136":[2,28],"137":[2,28],"138":[2,28],"139":[2,28],"140":[2,28],"141":[2,28],"142":[2,28],"143":[2,28],"144":[2,28],"145":[2,28],"146":[2,28],"147":[2,28],"148":[2,28],"149":[2,28],"150":[2,28],"151":[2,28],"152":[2,28],"153":[2,28],"154":[2,28],"155":[2,28]},{"1":[2,29],"3":[2,29],"24":[2,29],"25":[2,29],"42":[2,29],"46":[2,29],"54":[2,29],"56":[2,29],"64":[2,29],"65":[2,29],"66":[2,29],"69":[2,29],"70":[2,29],"71":[2,29],"72":[2,29],"75":[2,29],"78":[2,29],"82":[2,29],"84":[2,29],"88":[2,29],"96":[2,29],"98":[2,29],"99":[2,29],"100":[2,29],"103":[2,29],"105":[2,29],"112":[2,29],"115":[2,29],"118":[2,29],"119":[2,29],"122":[2,29],"123":[2,29],"126":[2,29],"127":[2,29],"128":[2,29],"129":[2,29],"130":[2,29],"131":[2,29],"132":[2,29],"133":[2,29],"134":[2,29],"135":[2,29],"136":[2,29],"137":[2,29],"138":[2,29],"139":[2,29],"140":[2,29],"141":[2,29],"142":[2,29],"143":[2,29],"144":[2,29],"145":[2,29],"146":[2,29],"147":[2,29],"148":[2,29],"149":[2,29],"150":[2,29],"151":[2,29],"152":[2,29],"153":[2,29],"154":[2,29],"155":[2,29]},{"6":179,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,7],"3":[2,7],"6":180,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[2,7],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,4]},{"1":[2,155],"3":[2,155],"24":[2,155],"25":[2,155],"46":[2,155],"54":[2,155],"56":[2,155],"70":[2,155],"72":[2,155],"75":[2,155],"84":[2,155],"88":[2,155],"96":[2,155],"98":[2,155],"99":[2,155],"100":[2,155],"103":[2,155],"105":[2,155],"112":[2,155],"115":[2,155],"118":[2,155],"119":[2,155],"122":[2,155],"123":[2,155],"126":[2,155],"127":[2,155],"128":[2,155],"129":[2,155],"130":[2,155],"131":[2,155],"132":[2,155],"133":[2,155],"134":[2,155],"135":[2,155],"136":[2,155],"137":[2,155],"138":[2,155],"139":[2,155],"140":[2,155],"141":[2,155],"142":[2,155],"143":[2,155],"144":[2,155],"145":[2,155],"146":[2,155],"147":[2,155],"148":[2,155],"149":[2,155],"150":[2,155],"151":[2,155],"152":[2,155],"153":[2,155],"154":[2,155],"155":[2,155]},{"1":[2,156],"3":[2,156],"24":[2,156],"25":[2,156],"46":[2,156],"54":[2,156],"56":[2,156],"70":[2,156],"72":[2,156],"75":[2,156],"84":[2,156],"88":[2,156],"96":[2,156],"98":[2,156],"99":[2,156],"100":[2,156],"103":[2,156],"105":[2,156],"112":[2,156],"115":[2,156],"118":[2,156],"119":[2,156],"122":[2,156],"123":[2,156],"126":[2,156],"127":[2,156],"128":[2,156],"129":[2,156],"130":[2,156],"131":[2,156],"132":[2,156],"133":[2,156],"134":[2,156],"135":[2,156],"136":[2,156],"137":[2,156],"138":[2,156],"139":[2,156],"140":[2,156],"141":[2,156],"142":[2,156],"143":[2,156],"144":[2,156],"145":[2,156],"146":[2,156],"147":[2,156],"148":[2,156],"149":[2,156],"150":[2,156],"151":[2,156],"152":[2,156],"153":[2,156],"154":[2,156],"155":[2,156]},{"6":181,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":182,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":183,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":184,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":185,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":186,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":187,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":188,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":189,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":190,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":191,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":192,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":193,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":194,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":195,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":196,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":197,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":198,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":199,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":200,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":201,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":202,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":203,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,48],"3":[2,48],"6":204,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[2,48],"25":[2,48],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,48],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,48],"56":[2,48],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,48],"72":[2,48],"73":[1,68],"75":[2,48],"77":[1,53],"79":[1,32],"80":33,"84":[2,48],"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,48],"90":[1,47],"94":[1,48],"95":[1,69],"96":[2,48],"97":50,"98":[2,48],"99":[2,48],"100":[2,48],"103":[2,48],"105":[2,48],"106":[1,52],"111":74,"112":[2,48],"114":46,"115":[2,48],"116":[1,36],"117":[1,37],"118":[2,48],"119":[2,48],"120":[1,40],"121":[1,41],"122":[2,48],"123":[2,48],"124":[1,44],"125":[1,45],"126":[2,48],"127":[2,48],"128":[2,48],"129":[2,48],"130":[2,48],"131":[2,48],"132":[2,48],"133":[2,48],"134":[2,48],"135":[2,48],"136":[2,48],"137":[2,48],"138":[2,48],"139":[2,48],"140":[2,48],"141":[2,48],"142":[2,48],"143":[2,48],"144":[2,48],"145":[2,48],"146":[2,48],"147":[2,48],"148":[2,48],"149":[2,48],"150":[2,48],"151":[2,48],"152":[2,48],"153":[2,48],"154":[2,48],"155":[2,48]},{"6":205,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":206,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":207,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":208,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":209,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":210,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":211,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":212,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":213,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":214,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":215,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":216,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,121],"3":[2,121],"24":[2,121],"25":[2,121],"46":[2,121],"54":[2,121],"56":[2,121],"70":[2,121],"72":[2,121],"75":[2,121],"84":[2,121],"88":[2,121],"96":[2,121],"98":[2,121],"99":[2,121],"100":[2,121],"103":[2,121],"105":[2,121],"112":[2,121],"115":[2,121],"118":[2,121],"119":[2,121],"122":[2,121],"123":[2,121],"126":[2,121],"127":[2,121],"128":[2,121],"129":[2,121],"130":[2,121],"131":[2,121],"132":[2,121],"133":[2,121],"134":[2,121],"135":[2,121],"136":[2,121],"137":[2,121],"138":[2,121],"139":[2,121],"140":[2,121],"141":[2,121],"142":[2,121],"143":[2,121],"144":[2,121],"145":[2,121],"146":[2,121],"147":[2,121],"148":[2,121],"149":[2,121],"150":[2,121],"151":[2,121],"152":[2,121],"153":[2,121],"154":[2,121],"155":[2,121]},{"26":159,"27":[1,55],"101":217},{"56":[1,218]},{"3":[1,79],"25":[1,219]},{"1":[2,26],"3":[2,26],"24":[2,26],"25":[2,26],"45":[2,26],"46":[2,26],"54":[2,26],"56":[2,26],"70":[2,26],"72":[2,26],"75":[2,26],"84":[2,26],"88":[2,26],"92":[2,26],"93":[2,26],"96":[2,26],"98":[2,26],"99":[2,26],"100":[2,26],"103":[2,26],"105":[2,26],"108":[2,26],"110":[2,26],"112":[2,26],"115":[2,26],"118":[2,26],"119":[2,26],"122":[2,26],"123":[2,26],"126":[2,26],"127":[2,26],"128":[2,26],"129":[2,26],"130":[2,26],"131":[2,26],"132":[2,26],"133":[2,26],"134":[2,26],"135":[2,26],"136":[2,26],"137":[2,26],"138":[2,26],"139":[2,26],"140":[2,26],"141":[2,26],"142":[2,26],"143":[2,26],"144":[2,26],"145":[2,26],"146":[2,26],"147":[2,26],"148":[2,26],"149":[2,26],"150":[2,26],"151":[2,26],"152":[2,26],"153":[2,26],"154":[2,26],"155":[2,26]},{"1":[2,66],"3":[2,66],"24":[2,66],"25":[2,66],"42":[2,66],"46":[2,66],"54":[2,66],"56":[2,66],"64":[2,66],"65":[2,66],"66":[2,66],"69":[2,66],"70":[2,66],"71":[2,66],"72":[2,66],"75":[2,66],"78":[2,66],"82":[2,66],"84":[2,66],"88":[2,66],"96":[2,66],"98":[2,66],"99":[2,66],"100":[2,66],"103":[2,66],"105":[2,66],"112":[2,66],"115":[2,66],"118":[2,66],"119":[2,66],"122":[2,66],"123":[2,66],"126":[2,66],"127":[2,66],"128":[2,66],"129":[2,66],"130":[2,66],"131":[2,66],"132":[2,66],"133":[2,66],"134":[2,66],"135":[2,66],"136":[2,66],"137":[2,66],"138":[2,66],"139":[2,66],"140":[2,66],"141":[2,66],"142":[2,66],"143":[2,66],"144":[2,66],"145":[2,66],"146":[2,66],"147":[2,66],"148":[2,66],"149":[2,66],"150":[2,66],"151":[2,66],"152":[2,66],"153":[2,66],"154":[2,66],"155":[2,66]},{"6":220,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"7":221,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,91],"3":[2,91],"24":[2,91],"25":[2,91],"46":[2,91],"54":[2,91],"56":[2,91],"64":[2,91],"65":[2,91],"66":[2,91],"69":[2,91],"70":[2,91],"71":[2,91],"72":[2,91],"75":[2,91],"82":[2,91],"84":[2,91],"88":[2,91],"96":[2,91],"98":[2,91],"99":[2,91],"100":[2,91],"103":[2,91],"105":[2,91],"112":[2,91],"115":[2,91],"118":[2,91],"119":[2,91],"122":[2,91],"123":[2,91],"126":[2,91],"127":[2,91],"128":[2,91],"129":[2,91],"130":[2,91],"131":[2,91],"132":[2,91],"133":[2,91],"134":[2,91],"135":[2,91],"136":[2,91],"137":[2,91],"138":[2,91],"139":[2,91],"140":[2,91],"141":[2,91],"142":[2,91],"143":[2,91],"144":[2,91],"145":[2,91],"146":[2,91],"147":[2,91],"148":[2,91],"149":[2,91],"150":[2,91],"151":[2,91],"152":[2,91],"153":[2,91],"154":[2,91],"155":[2,91]},{"26":222,"27":[1,55]},{"26":223,"27":[1,55]},{"26":224,"27":[1,55]},{"1":[2,71],"3":[2,71],"24":[2,71],"25":[2,71],"42":[2,71],"46":[2,71],"54":[2,71],"56":[2,71],"64":[2,71],"65":[2,71],"66":[2,71],"69":[2,71],"70":[2,71],"71":[2,71],"72":[2,71],"75":[2,71],"78":[2,71],"82":[2,71],"84":[2,71],"88":[2,71],"96":[2,71],"98":[2,71],"99":[2,71],"100":[2,71],"103":[2,71],"105":[2,71],"112":[2,71],"115":[2,71],"118":[2,71],"119":[2,71],"122":[2,71],"123":[2,71],"126":[2,71],"127":[2,71],"128":[2,71],"129":[2,71],"130":[2,71],"131":[2,71],"132":[2,71],"133":[2,71],"134":[2,71],"135":[2,71],"136":[2,71],"137":[2,71],"138":[2,71],"139":[2,71],"140":[2,71],"141":[2,71],"142":[2,71],"143":[2,71],"144":[2,71],"145":[2,71],"146":[2,71],"147":[2,71],"148":[2,71],"149":[2,71],"150":[2,71],"151":[2,71],"152":[2,71],"153":[2,71],"154":[2,71],"155":[2,71]},{"1":[2,72],"3":[2,72],"24":[2,72],"25":[2,72],"42":[2,72],"46":[2,72],"54":[2,72],"56":[2,72],"64":[2,72],"65":[2,72],"66":[2,72],"69":[2,72],"70":[2,72],"71":[2,72],"72":[2,72],"75":[2,72],"78":[2,72],"82":[2,72],"84":[2,72],"88":[2,72],"96":[2,72],"98":[2,72],"99":[2,72],"100":[2,72],"103":[2,72],"105":[2,72],"112":[2,72],"115":[2,72],"118":[2,72],"119":[2,72],"122":[2,72],"123":[2,72],"126":[2,72],"127":[2,72],"128":[2,72],"129":[2,72],"130":[2,72],"131":[2,72],"132":[2,72],"133":[2,72],"134":[2,72],"135":[2,72],"136":[2,72],"137":[2,72],"138":[2,72],"139":[2,72],"140":[2,72],"141":[2,72],"142":[2,72],"143":[2,72],"144":[2,72],"145":[2,72],"146":[2,72],"147":[2,72],"148":[2,72],"149":[2,72],"150":[2,72],"151":[2,72],"152":[2,72],"153":[2,72],"154":[2,72],"155":[2,72]},{"3":[2,102],"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":225,"84":[2,102],"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":227,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":228,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,67],"3":[2,67],"24":[2,67],"25":[2,67],"42":[2,67],"46":[2,67],"54":[2,67],"56":[2,67],"64":[2,67],"65":[2,67],"66":[2,67],"69":[2,67],"70":[2,67],"71":[2,67],"72":[2,67],"75":[2,67],"78":[2,67],"82":[2,67],"84":[2,67],"88":[2,67],"96":[2,67],"98":[2,67],"99":[2,67],"100":[2,67],"103":[2,67],"105":[2,67],"112":[2,67],"115":[2,67],"118":[2,67],"119":[2,67],"122":[2,67],"123":[2,67],"126":[2,67],"127":[2,67],"128":[2,67],"129":[2,67],"130":[2,67],"131":[2,67],"132":[2,67],"133":[2,67],"134":[2,67],"135":[2,67],"136":[2,67],"137":[2,67],"138":[2,67],"139":[2,67],"140":[2,67],"141":[2,67],"142":[2,67],"143":[2,67],"144":[2,67],"145":[2,67],"146":[2,67],"147":[2,67],"148":[2,67],"149":[2,67],"150":[2,67],"151":[2,67],"152":[2,67],"153":[2,67],"154":[2,67],"155":[2,67]},{"1":[2,92],"3":[2,92],"24":[2,92],"25":[2,92],"46":[2,92],"54":[2,92],"56":[2,92],"64":[2,92],"65":[2,92],"66":[2,92],"69":[2,92],"70":[2,92],"71":[2,92],"72":[2,92],"75":[2,92],"82":[2,92],"84":[2,92],"88":[2,92],"96":[2,92],"98":[2,92],"99":[2,92],"100":[2,92],"103":[2,92],"105":[2,92],"112":[2,92],"115":[2,92],"118":[2,92],"119":[2,92],"122":[2,92],"123":[2,92],"126":[2,92],"127":[2,92],"128":[2,92],"129":[2,92],"130":[2,92],"131":[2,92],"132":[2,92],"133":[2,92],"134":[2,92],"135":[2,92],"136":[2,92],"137":[2,92],"138":[2,92],"139":[2,92],"140":[2,92],"141":[2,92],"142":[2,92],"143":[2,92],"144":[2,92],"145":[2,92],"146":[2,92],"147":[2,92],"148":[2,92],"149":[2,92],"150":[2,92],"151":[2,92],"152":[2,92],"153":[2,92],"154":[2,92],"155":[2,92]},{"1":[2,88],"3":[2,88],"24":[2,88],"25":[2,88],"46":[2,88],"54":[2,88],"56":[2,88],"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,88],"71":[1,135],"72":[2,88],"75":[2,88],"81":137,"82":[1,133],"84":[2,88],"88":[2,88],"96":[2,88],"98":[2,88],"99":[2,88],"100":[2,88],"103":[2,88],"105":[2,88],"112":[2,88],"115":[2,88],"118":[2,88],"119":[2,88],"122":[2,88],"123":[2,88],"126":[2,88],"127":[2,88],"128":[2,88],"129":[2,88],"130":[2,88],"131":[2,88],"132":[2,88],"133":[2,88],"134":[2,88],"135":[2,88],"136":[2,88],"137":[2,88],"138":[2,88],"139":[2,88],"140":[2,88],"141":[2,88],"142":[2,88],"143":[2,88],"144":[2,88],"145":[2,88],"146":[2,88],"147":[2,88],"148":[2,88],"149":[2,88],"150":[2,88],"151":[2,88],"152":[2,88],"153":[2,88],"154":[2,88],"155":[2,88]},{"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"71":[1,135],"81":127,"82":[1,133]},{"49":[1,229],"54":[1,230]},{"49":[2,54],"54":[2,54],"56":[1,231]},{"49":[2,56],"54":[2,56],"56":[2,56]},{"1":[2,50],"3":[2,50],"24":[2,50],"25":[2,50],"46":[2,50],"54":[2,50],"56":[2,50],"70":[2,50],"72":[2,50],"75":[2,50],"84":[2,50],"88":[2,50],"96":[2,50],"98":[2,50],"99":[2,50],"100":[2,50],"103":[2,50],"105":[2,50],"112":[2,50],"115":[2,50],"118":[2,50],"119":[2,50],"122":[2,50],"123":[2,50],"126":[2,50],"127":[2,50],"128":[2,50],"129":[2,50],"130":[2,50],"131":[2,50],"132":[2,50],"133":[2,50],"134":[2,50],"135":[2,50],"136":[2,50],"137":[2,50],"138":[2,50],"139":[2,50],"140":[2,50],"141":[2,50],"142":[2,50],"143":[2,50],"144":[2,50],"145":[2,50],"146":[2,50],"147":[2,50],"148":[2,50],"149":[2,50],"150":[2,50],"151":[2,50],"152":[2,50],"153":[2,50],"154":[2,50],"155":[2,50]},{"1":[2,145],"3":[2,145],"24":[2,145],"25":[2,145],"46":[1,106],"54":[2,145],"56":[2,145],"70":[2,145],"72":[2,145],"75":[2,145],"84":[2,145],"88":[2,145],"96":[2,145],"97":119,"98":[2,145],"99":[2,145],"100":[2,145],"103":[2,145],"105":[2,145],"112":[2,145],"115":[2,145],"118":[2,145],"119":[2,145],"126":[2,145],"127":[2,145],"128":[2,145],"129":[2,145],"130":[2,145],"131":[2,145],"132":[2,145],"133":[2,145],"134":[2,145],"135":[2,145],"136":[2,145],"137":[2,145],"138":[2,145],"139":[2,145],"140":[2,145],"141":[2,145],"142":[2,145],"143":[2,145],"144":[2,145],"145":[2,145],"146":[2,145],"147":[2,145],"148":[2,145],"149":[2,145],"150":[2,145],"151":[2,145],"152":[2,145],"153":[2,145],"154":[2,145],"155":[2,145]},{"1":[2,146],"3":[2,146],"24":[2,146],"25":[2,146],"46":[1,106],"54":[2,146],"56":[2,146],"70":[2,146],"72":[2,146],"75":[2,146],"84":[2,146],"88":[2,146],"96":[2,146],"97":119,"98":[2,146],"99":[2,146],"100":[2,146],"103":[2,146],"105":[2,146],"112":[2,146],"115":[2,146],"118":[2,146],"119":[2,146],"126":[2,146],"127":[2,146],"128":[2,146],"129":[2,146],"130":[2,146],"131":[2,146],"132":[2,146],"133":[2,146],"134":[2,146],"135":[2,146],"136":[2,146],"137":[2,146],"138":[2,146],"139":[2,146],"140":[2,146],"141":[2,146],"142":[2,146],"143":[2,146],"144":[2,146],"145":[2,146],"146":[2,146],"147":[2,146],"148":[2,146],"149":[2,146],"150":[2,146],"151":[2,146],"152":[2,146],"153":[2,146],"154":[2,146],"155":[2,146]},{"1":[2,147],"3":[2,147],"24":[2,147],"25":[2,147],"46":[1,106],"54":[2,147],"56":[2,147],"70":[2,147],"72":[2,147],"75":[2,147],"84":[2,147],"88":[2,147],"96":[2,147],"97":119,"98":[2,147],"99":[2,147],"100":[2,147],"103":[2,147],"105":[2,147],"112":[2,147],"115":[2,147],"118":[2,147],"119":[2,147],"126":[2,147],"127":[2,147],"128":[2,147],"129":[2,147],"130":[2,147],"131":[2,147],"132":[2,147],"133":[2,147],"134":[2,147],"135":[2,147],"136":[2,147],"137":[2,147],"138":[2,147],"139":[2,147],"140":[2,147],"141":[2,147],"142":[2,147],"143":[2,147],"144":[2,147],"145":[2,147],"146":[2,147],"147":[2,147],"148":[2,147],"149":[2,147],"150":[2,147],"151":[2,147],"152":[2,147],"153":[2,147],"154":[2,147],"155":[2,147]},{"1":[2,148],"3":[2,148],"24":[2,148],"25":[2,148],"46":[1,106],"54":[2,148],"56":[2,148],"70":[2,148],"72":[2,148],"75":[2,148],"84":[2,148],"88":[2,148],"96":[2,148],"97":119,"98":[2,148],"99":[2,148],"100":[2,148],"103":[2,148],"105":[2,148],"112":[2,148],"115":[2,148],"118":[2,148],"119":[2,148],"126":[2,148],"127":[2,148],"128":[2,148],"129":[2,148],"130":[2,148],"131":[2,148],"132":[2,148],"133":[2,148],"134":[2,148],"135":[2,148],"136":[2,148],"137":[2,148],"138":[2,148],"139":[2,148],"140":[2,148],"141":[2,148],"142":[2,148],"143":[2,148],"144":[2,148],"145":[2,148],"146":[2,148],"147":[2,148],"148":[2,148],"149":[2,148],"150":[2,148],"151":[2,148],"152":[2,148],"153":[2,148],"154":[2,148],"155":[2,148]},{"1":[2,149],"3":[2,149],"24":[2,149],"25":[2,149],"46":[1,106],"54":[2,149],"56":[2,149],"70":[2,149],"72":[2,149],"75":[2,149],"84":[2,149],"88":[2,149],"96":[2,149],"97":119,"98":[2,149],"99":[2,149],"100":[2,149],"103":[2,149],"105":[2,149],"112":[2,149],"115":[2,149],"118":[2,149],"119":[2,149],"126":[2,149],"127":[2,149],"128":[2,149],"129":[2,149],"130":[2,149],"131":[2,149],"132":[2,149],"133":[2,149],"134":[2,149],"135":[2,149],"136":[2,149],"137":[2,149],"138":[2,149],"139":[2,149],"140":[2,149],"141":[2,149],"142":[2,149],"143":[2,149],"144":[2,149],"145":[2,149],"146":[2,149],"147":[2,149],"148":[2,149],"149":[2,149],"150":[2,149],"151":[2,149],"152":[2,149],"153":[2,149],"154":[2,149],"155":[2,149]},{"1":[2,150],"3":[2,150],"24":[2,150],"25":[2,150],"46":[1,106],"54":[2,150],"56":[2,150],"70":[2,150],"72":[2,150],"75":[2,150],"84":[2,150],"88":[2,150],"96":[2,150],"97":119,"98":[2,150],"99":[2,150],"100":[2,150],"103":[2,150],"105":[2,150],"112":[2,150],"115":[2,150],"118":[2,150],"119":[2,150],"126":[2,150],"127":[2,150],"128":[2,150],"129":[2,150],"130":[2,150],"131":[2,150],"132":[2,150],"133":[2,150],"134":[2,150],"135":[2,150],"136":[2,150],"137":[2,150],"138":[2,150],"139":[2,150],"140":[2,150],"141":[2,150],"142":[2,150],"143":[2,150],"144":[2,150],"145":[2,150],"146":[2,150],"147":[2,150],"148":[2,150],"149":[2,150],"150":[2,150],"151":[2,150],"152":[2,150],"153":[2,150],"154":[2,150],"155":[2,150]},{"1":[2,151],"3":[2,151],"24":[2,151],"25":[2,151],"46":[1,106],"54":[2,151],"56":[2,151],"70":[2,151],"72":[2,151],"75":[2,151],"84":[2,151],"88":[2,151],"96":[2,151],"97":119,"98":[2,151],"99":[2,151],"100":[2,151],"103":[2,151],"105":[2,151],"112":[2,151],"115":[2,151],"118":[2,151],"119":[2,151],"126":[2,151],"127":[2,151],"128":[2,151],"129":[2,151],"130":[2,151],"131":[2,151],"132":[2,151],"133":[2,151],"134":[2,151],"135":[2,151],"136":[2,151],"137":[2,151],"138":[2,151],"139":[2,151],"140":[2,151],"141":[2,151],"142":[2,151],"143":[2,151],"144":[2,151],"145":[2,151],"146":[2,151],"147":[2,151],"148":[2,151],"149":[2,151],"150":[2,151],"151":[2,151],"152":[2,151],"153":[2,151],"154":[2,151],"155":[2,151]},{"1":[2,152],"3":[2,152],"24":[2,152],"25":[2,152],"46":[1,106],"54":[2,152],"56":[2,152],"70":[2,152],"72":[2,152],"75":[2,152],"84":[2,152],"88":[2,152],"96":[2,152],"97":119,"98":[2,152],"99":[2,152],"100":[2,152],"103":[2,152],"105":[2,152],"112":[2,152],"115":[2,152],"118":[2,152],"119":[2,152],"126":[2,152],"127":[2,152],"128":[2,152],"129":[2,152],"130":[2,152],"131":[2,152],"132":[2,152],"133":[2,152],"134":[2,152],"135":[2,152],"136":[2,152],"137":[2,152],"138":[2,152],"139":[2,152],"140":[2,152],"141":[2,152],"142":[2,152],"143":[2,152],"144":[2,152],"145":[2,152],"146":[2,152],"147":[2,152],"148":[2,152],"149":[2,152],"150":[2,152],"151":[2,152],"152":[2,152],"153":[2,152],"154":[2,152],"155":[2,152]},{"1":[2,153],"3":[2,153],"24":[2,153],"25":[2,153],"46":[1,106],"54":[2,153],"56":[2,153],"70":[2,153],"72":[2,153],"75":[2,153],"84":[2,153],"88":[2,153],"96":[2,153],"97":119,"98":[2,153],"99":[2,153],"100":[2,153],"103":[2,153],"105":[2,153],"112":[2,153],"115":[2,153],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,153],"140":[2,153],"141":[2,153],"142":[2,153],"143":[2,153],"144":[2,153],"145":[2,153],"146":[2,153],"147":[2,153],"148":[2,153],"149":[2,153],"150":[2,153],"151":[2,153],"152":[2,153],"153":[2,153],"154":[2,153],"155":[1,115]},{"1":[2,154],"3":[2,154],"24":[2,154],"25":[2,154],"46":[1,106],"54":[2,154],"56":[2,154],"70":[2,154],"72":[2,154],"75":[2,154],"84":[2,154],"88":[2,154],"96":[2,154],"97":119,"98":[2,154],"99":[2,154],"100":[2,154],"103":[2,154],"105":[2,154],"112":[2,154],"115":[2,154],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,154],"140":[2,154],"141":[2,154],"142":[2,154],"143":[2,154],"144":[2,154],"145":[2,154],"146":[2,154],"147":[2,154],"148":[2,154],"149":[2,154],"150":[2,154],"151":[2,154],"152":[2,154],"153":[2,154],"154":[2,154],"155":[1,115]},{"91":232,"92":[1,233],"93":[1,234]},{"1":[2,116],"3":[2,116],"24":[2,116],"25":[2,116],"46":[1,106],"54":[2,116],"56":[1,121],"70":[2,116],"72":[2,116],"75":[2,116],"84":[2,116],"88":[2,116],"96":[2,116],"97":119,"98":[2,116],"99":[2,116],"100":[2,116],"103":[1,116],"105":[2,116],"112":[2,116],"115":[2,116],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,45],"3":[2,45],"24":[2,45],"25":[2,45],"46":[1,106],"54":[2,45],"56":[1,121],"70":[2,45],"72":[2,45],"75":[2,45],"84":[2,45],"88":[2,45],"96":[2,45],"97":119,"98":[2,45],"99":[2,45],"100":[1,120],"103":[1,116],"105":[2,45],"112":[2,45],"115":[2,45],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,120],"3":[2,120],"24":[2,120],"25":[2,120],"46":[2,120],"54":[2,120],"56":[2,120],"70":[2,120],"72":[2,120],"75":[2,120],"84":[2,120],"88":[2,120],"96":[2,120],"98":[2,120],"99":[2,120],"100":[2,120],"103":[2,120],"105":[2,120],"112":[2,120],"115":[2,120],"118":[2,120],"119":[2,120],"122":[2,120],"123":[2,120],"126":[2,120],"127":[2,120],"128":[2,120],"129":[2,120],"130":[2,120],"131":[2,120],"132":[2,120],"133":[2,120],"134":[2,120],"135":[2,120],"136":[2,120],"137":[2,120],"138":[2,120],"139":[2,120],"140":[2,120],"141":[2,120],"142":[2,120],"143":[2,120],"144":[2,120],"145":[2,120],"146":[2,120],"147":[2,120],"148":[2,120],"149":[2,120],"150":[2,120],"151":[2,120],"152":[2,120],"153":[2,120],"154":[2,120],"155":[2,120]},{"102":235,"103":[1,236],"104":[1,237]},{"54":[1,238],"103":[2,124],"104":[2,124]},{"24":[1,239],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,77],"3":[2,77],"24":[1,169],"25":[2,77],"46":[2,77],"54":[2,77],"56":[2,77],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,77],"71":[1,135],"72":[2,77],"75":[2,77],"76":241,"78":[1,240],"81":127,"82":[1,133],"84":[2,77],"88":[2,77],"96":[2,77],"98":[2,77],"99":[2,77],"100":[2,77],"103":[2,77],"105":[2,77],"112":[2,77],"115":[2,77],"118":[2,77],"119":[2,77],"122":[2,77],"123":[2,77],"126":[2,77],"127":[2,77],"128":[2,77],"129":[2,77],"130":[2,77],"131":[2,77],"132":[2,77],"133":[2,77],"134":[2,77],"135":[2,77],"136":[2,77],"137":[2,77],"138":[2,77],"139":[2,77],"140":[2,77],"141":[2,77],"142":[2,77],"143":[2,77],"144":[2,77],"145":[2,77],"146":[2,77],"147":[2,77],"148":[2,77],"149":[2,77],"150":[2,77],"151":[2,77],"152":[2,77],"153":[2,77],"154":[2,77],"155":[2,77]},{"62":136,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"71":[1,135],"81":137,"82":[1,133]},{"3":[1,244],"25":[1,245],"54":[1,243],"88":[1,242]},{"3":[2,103],"25":[2,103],"46":[1,106],"54":[2,103],"56":[1,246],"88":[2,103],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":247,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[1,250],"54":[1,249],"75":[1,248]},{"75":[1,251]},{"3":[2,82],"25":[2,82],"54":[2,82],"75":[2,82]},{"3":[2,81],"23":172,"25":[2,81],"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":168,"45":[1,54],"54":[2,81],"74":252},{"42":[1,253]},{"42":[1,254]},{"3":[2,44],"25":[2,44],"54":[2,44],"75":[2,44]},{"46":[1,106],"56":[1,121],"96":[1,255],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,96],"3":[2,96],"24":[2,96],"25":[2,96],"42":[2,96],"46":[2,96],"54":[2,96],"56":[2,96],"64":[2,96],"65":[2,96],"66":[2,96],"69":[2,96],"70":[2,96],"71":[2,96],"72":[2,96],"75":[2,96],"78":[2,96],"82":[2,96],"84":[2,96],"88":[2,96],"96":[2,96],"98":[2,96],"99":[2,96],"100":[2,96],"103":[2,96],"105":[2,96],"112":[2,96],"115":[2,96],"118":[2,96],"119":[2,96],"122":[2,96],"123":[2,96],"126":[2,96],"127":[2,96],"128":[2,96],"129":[2,96],"130":[2,96],"131":[2,96],"132":[2,96],"133":[2,96],"134":[2,96],"135":[2,96],"136":[2,96],"137":[2,96],"138":[2,96],"139":[2,96],"140":[2,96],"141":[2,96],"142":[2,96],"143":[2,96],"144":[2,96],"145":[2,96],"146":[2,96],"147":[2,96],"148":[2,96],"149":[2,96],"150":[2,96],"151":[2,96],"152":[2,96],"153":[2,96],"154":[2,96],"155":[2,96]},{"3":[2,102],"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,165],"25":[2,102],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,102],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"83":256,"84":[2,102],"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"5":257,"24":[1,6],"112":[1,258]},{"1":[2,138],"3":[2,138],"24":[2,138],"25":[2,138],"46":[2,138],"54":[2,138],"56":[2,138],"70":[2,138],"72":[2,138],"75":[2,138],"84":[2,138],"88":[2,138],"96":[2,138],"98":[2,138],"99":[2,138],"100":[2,138],"103":[2,138],"105":[2,138],"108":[2,138],"112":[2,138],"115":[2,138],"118":[2,138],"119":[2,138],"122":[2,138],"123":[2,138],"126":[2,138],"127":[2,138],"128":[2,138],"129":[2,138],"130":[2,138],"131":[2,138],"132":[2,138],"133":[2,138],"134":[2,138],"135":[2,138],"136":[2,138],"137":[2,138],"138":[2,138],"139":[2,138],"140":[2,138],"141":[2,138],"142":[2,138],"143":[2,138],"144":[2,138],"145":[2,138],"146":[2,138],"147":[2,138],"148":[2,138],"149":[2,138],"150":[2,138],"151":[2,138],"152":[2,138],"153":[2,138],"154":[2,138],"155":[2,138]},{"1":[2,118],"3":[2,118],"24":[2,118],"25":[2,118],"46":[1,106],"54":[2,118],"56":[1,121],"70":[2,118],"72":[2,118],"75":[2,118],"84":[2,118],"88":[2,118],"96":[2,118],"97":119,"98":[1,75],"99":[1,259],"100":[1,120],"103":[1,116],"105":[2,118],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"5":260,"24":[1,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,6],"3":[2,6],"25":[2,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,157],"3":[2,157],"24":[2,157],"25":[2,157],"46":[1,106],"54":[2,157],"56":[2,157],"70":[2,157],"72":[2,157],"75":[2,157],"84":[2,157],"88":[2,157],"96":[2,157],"97":119,"98":[2,157],"99":[2,157],"100":[2,157],"103":[2,157],"105":[2,157],"112":[2,157],"115":[2,157],"118":[2,157],"119":[2,157],"122":[1,81],"123":[1,82],"126":[2,157],"127":[2,157],"128":[2,157],"129":[2,157],"130":[2,157],"131":[2,157],"132":[2,157],"133":[2,157],"134":[2,157],"135":[2,157],"136":[2,157],"137":[2,157],"138":[2,157],"139":[2,157],"140":[2,157],"141":[2,157],"142":[2,157],"143":[2,157],"144":[2,157],"145":[2,157],"146":[2,157],"147":[2,157],"148":[2,157],"149":[2,157],"150":[2,157],"151":[2,157],"152":[2,157],"153":[2,157],"154":[2,157],"155":[2,157]},{"1":[2,158],"3":[2,158],"24":[2,158],"25":[2,158],"46":[1,106],"54":[2,158],"56":[2,158],"70":[2,158],"72":[2,158],"75":[2,158],"84":[2,158],"88":[2,158],"96":[2,158],"97":119,"98":[2,158],"99":[2,158],"100":[2,158],"103":[2,158],"105":[2,158],"112":[2,158],"115":[2,158],"118":[2,158],"119":[2,158],"122":[1,81],"123":[1,82],"126":[2,158],"127":[2,158],"128":[2,158],"129":[2,158],"130":[2,158],"131":[2,158],"132":[2,158],"133":[2,158],"134":[2,158],"135":[2,158],"136":[2,158],"137":[2,158],"138":[2,158],"139":[2,158],"140":[2,158],"141":[2,158],"142":[2,158],"143":[2,158],"144":[2,158],"145":[2,158],"146":[2,158],"147":[2,158],"148":[2,158],"149":[2,158],"150":[2,158],"151":[2,158],"152":[2,158],"153":[2,158],"154":[2,158],"155":[2,158]},{"1":[2,159],"3":[2,159],"24":[2,159],"25":[2,159],"46":[1,106],"54":[2,159],"56":[2,159],"70":[2,159],"72":[2,159],"75":[2,159],"84":[2,159],"88":[2,159],"96":[2,159],"97":119,"98":[2,159],"99":[2,159],"100":[2,159],"103":[2,159],"105":[2,159],"112":[2,159],"115":[2,159],"118":[2,159],"119":[2,159],"122":[1,81],"123":[1,82],"126":[2,159],"127":[2,159],"128":[2,159],"129":[2,159],"130":[2,159],"131":[2,159],"132":[2,159],"133":[2,159],"134":[2,159],"135":[2,159],"136":[2,159],"137":[2,159],"138":[2,159],"139":[2,159],"140":[2,159],"141":[2,159],"142":[2,159],"143":[2,159],"144":[2,159],"145":[2,159],"146":[2,159],"147":[2,159],"148":[2,159],"149":[2,159],"150":[2,159],"151":[2,159],"152":[2,159],"153":[2,159],"154":[2,159],"155":[2,159]},{"1":[2,160],"3":[2,160],"24":[2,160],"25":[2,160],"46":[1,106],"54":[2,160],"56":[2,160],"70":[2,160],"72":[2,160],"75":[2,160],"84":[2,160],"88":[2,160],"96":[2,160],"97":119,"98":[2,160],"99":[2,160],"100":[2,160],"103":[2,160],"105":[2,160],"112":[2,160],"115":[2,160],"118":[2,160],"119":[2,160],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,160],"130":[2,160],"131":[2,160],"132":[2,160],"133":[2,160],"134":[2,160],"135":[2,160],"136":[2,160],"137":[2,160],"138":[2,160],"139":[2,160],"140":[2,160],"141":[2,160],"142":[2,160],"143":[2,160],"144":[2,160],"145":[2,160],"146":[2,160],"147":[2,160],"148":[2,160],"149":[2,160],"150":[2,160],"151":[2,160],"152":[2,160],"153":[2,160],"154":[2,160],"155":[2,160]},{"1":[2,161],"3":[2,161],"24":[2,161],"25":[2,161],"46":[1,106],"54":[2,161],"56":[2,161],"70":[2,161],"72":[2,161],"75":[2,161],"84":[2,161],"88":[2,161],"96":[2,161],"97":119,"98":[2,161],"99":[2,161],"100":[2,161],"103":[2,161],"105":[2,161],"112":[2,161],"115":[2,161],"118":[2,161],"119":[2,161],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,161],"130":[2,161],"131":[2,161],"132":[2,161],"133":[2,161],"134":[2,161],"135":[2,161],"136":[2,161],"137":[2,161],"138":[2,161],"139":[2,161],"140":[2,161],"141":[2,161],"142":[2,161],"143":[2,161],"144":[2,161],"145":[2,161],"146":[2,161],"147":[2,161],"148":[2,161],"149":[2,161],"150":[2,161],"151":[2,161],"152":[2,161],"153":[2,161],"154":[2,161],"155":[2,161]},{"1":[2,162],"3":[2,162],"24":[2,162],"25":[2,162],"46":[1,106],"54":[2,162],"56":[2,162],"70":[2,162],"72":[2,162],"75":[2,162],"84":[2,162],"88":[2,162],"96":[2,162],"97":119,"98":[2,162],"99":[2,162],"100":[2,162],"103":[2,162],"105":[2,162],"112":[2,162],"115":[2,162],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,162],"130":[2,162],"131":[2,162],"132":[2,162],"133":[2,162],"134":[2,162],"135":[2,162],"136":[2,162],"137":[2,162],"138":[2,162],"139":[2,162],"140":[2,162],"141":[2,162],"142":[2,162],"143":[2,162],"144":[2,162],"145":[2,162],"146":[2,162],"147":[2,162],"148":[2,162],"149":[2,162],"150":[2,162],"151":[2,162],"152":[2,162],"153":[2,162],"154":[2,162],"155":[2,162]},{"1":[2,163],"3":[2,163],"24":[2,163],"25":[2,163],"46":[1,106],"54":[2,163],"56":[2,163],"70":[2,163],"72":[2,163],"75":[2,163],"84":[2,163],"88":[2,163],"96":[2,163],"97":119,"98":[2,163],"99":[2,163],"100":[2,163],"103":[2,163],"105":[2,163],"112":[2,163],"115":[2,163],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,163],"130":[2,163],"131":[2,163],"132":[2,163],"133":[2,163],"134":[2,163],"135":[2,163],"136":[2,163],"137":[2,163],"138":[2,163],"139":[2,163],"140":[2,163],"141":[2,163],"142":[2,163],"143":[2,163],"144":[2,163],"145":[2,163],"146":[2,163],"147":[2,163],"148":[2,163],"149":[2,163],"150":[2,163],"151":[2,163],"152":[2,163],"153":[2,163],"154":[2,163],"155":[2,163]},{"1":[2,164],"3":[2,164],"24":[2,164],"25":[2,164],"46":[1,106],"54":[2,164],"56":[2,164],"70":[2,164],"72":[2,164],"75":[2,164],"84":[2,164],"88":[2,164],"96":[2,164],"97":119,"98":[2,164],"99":[2,164],"100":[2,164],"103":[2,164],"105":[2,164],"112":[2,164],"115":[2,164],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[2,164],"130":[2,164],"131":[2,164],"132":[2,164],"133":[2,164],"134":[2,164],"135":[2,164],"136":[2,164],"137":[2,164],"138":[2,164],"139":[2,164],"140":[2,164],"141":[2,164],"142":[2,164],"143":[2,164],"144":[2,164],"145":[2,164],"146":[2,164],"147":[2,164],"148":[2,164],"149":[2,164],"150":[2,164],"151":[2,164],"152":[2,164],"153":[2,164],"154":[2,164],"155":[2,164]},{"1":[2,165],"3":[2,165],"24":[2,165],"25":[2,165],"46":[1,106],"54":[2,165],"56":[2,165],"70":[2,165],"72":[2,165],"75":[2,165],"84":[2,165],"88":[2,165],"96":[2,165],"97":119,"98":[2,165],"99":[2,165],"100":[2,165],"103":[2,165],"105":[2,165],"112":[2,165],"115":[2,165],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,165],"133":[2,165],"134":[2,165],"135":[2,165],"136":[2,165],"137":[2,165],"138":[2,165],"139":[2,165],"140":[2,165],"141":[2,165],"142":[2,165],"143":[2,165],"144":[2,165],"145":[2,165],"146":[2,165],"147":[2,165],"148":[2,165],"149":[2,165],"150":[2,165],"151":[2,165],"152":[2,165],"153":[2,165],"154":[2,165],"155":[2,165]},{"1":[2,166],"3":[2,166],"24":[2,166],"25":[2,166],"46":[1,106],"54":[2,166],"56":[2,166],"70":[2,166],"72":[2,166],"75":[2,166],"84":[2,166],"88":[2,166],"96":[2,166],"97":119,"98":[2,166],"99":[2,166],"100":[2,166],"103":[2,166],"105":[2,166],"112":[2,166],"115":[2,166],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,166],"133":[2,166],"134":[2,166],"135":[2,166],"136":[2,166],"137":[2,166],"138":[2,166],"139":[2,166],"140":[2,166],"141":[2,166],"142":[2,166],"143":[2,166],"144":[2,166],"145":[2,166],"146":[2,166],"147":[2,166],"148":[2,166],"149":[2,166],"150":[2,166],"151":[2,166],"152":[2,166],"153":[2,166],"154":[2,166],"155":[2,166]},{"1":[2,167],"3":[2,167],"24":[2,167],"25":[2,167],"46":[1,106],"54":[2,167],"56":[2,167],"70":[2,167],"72":[2,167],"75":[2,167],"84":[2,167],"88":[2,167],"96":[2,167],"97":119,"98":[2,167],"99":[2,167],"100":[2,167],"103":[2,167],"105":[2,167],"112":[2,167],"115":[2,167],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[2,167],"133":[2,167],"134":[2,167],"135":[2,167],"136":[2,167],"137":[2,167],"138":[2,167],"139":[2,167],"140":[2,167],"141":[2,167],"142":[2,167],"143":[2,167],"144":[2,167],"145":[2,167],"146":[2,167],"147":[2,167],"148":[2,167],"149":[2,167],"150":[2,167],"151":[2,167],"152":[2,167],"153":[2,167],"154":[2,167],"155":[2,167]},{"1":[2,168],"3":[2,168],"24":[2,168],"25":[2,168],"46":[1,106],"54":[2,168],"56":[2,168],"70":[2,168],"72":[2,168],"75":[2,168],"84":[2,168],"88":[2,168],"96":[2,168],"97":119,"98":[2,168],"99":[2,168],"100":[2,168],"103":[2,168],"105":[2,168],"112":[2,168],"115":[2,168],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,168],"136":[2,168],"137":[2,168],"138":[2,168],"139":[2,168],"140":[2,168],"141":[2,168],"142":[2,168],"143":[2,168],"144":[2,168],"145":[2,168],"146":[2,168],"147":[2,168],"148":[2,168],"149":[2,168],"150":[2,168],"151":[2,168],"152":[2,168],"153":[2,168],"154":[2,168],"155":[2,168]},{"1":[2,169],"3":[2,169],"24":[2,169],"25":[2,169],"46":[1,106],"54":[2,169],"56":[2,169],"70":[2,169],"72":[2,169],"75":[2,169],"84":[2,169],"88":[2,169],"96":[2,169],"97":119,"98":[2,169],"99":[2,169],"100":[2,169],"103":[2,169],"105":[2,169],"112":[2,169],"115":[2,169],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,169],"136":[2,169],"137":[2,169],"138":[2,169],"139":[2,169],"140":[2,169],"141":[2,169],"142":[2,169],"143":[2,169],"144":[2,169],"145":[2,169],"146":[2,169],"147":[2,169],"148":[2,169],"149":[2,169],"150":[2,169],"151":[2,169],"152":[2,169],"153":[2,169],"154":[2,169],"155":[2,169]},{"1":[2,170],"3":[2,170],"24":[2,170],"25":[2,170],"46":[1,106],"54":[2,170],"56":[2,170],"70":[2,170],"72":[2,170],"75":[2,170],"84":[2,170],"88":[2,170],"96":[2,170],"97":119,"98":[2,170],"99":[2,170],"100":[2,170],"103":[2,170],"105":[2,170],"112":[2,170],"115":[2,170],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,170],"136":[2,170],"137":[2,170],"138":[2,170],"139":[2,170],"140":[2,170],"141":[2,170],"142":[2,170],"143":[2,170],"144":[2,170],"145":[2,170],"146":[2,170],"147":[2,170],"148":[2,170],"149":[2,170],"150":[2,170],"151":[2,170],"152":[2,170],"153":[2,170],"154":[2,170],"155":[2,170]},{"1":[2,171],"3":[2,171],"24":[2,171],"25":[2,171],"46":[1,106],"54":[2,171],"56":[2,171],"70":[2,171],"72":[2,171],"75":[2,171],"84":[2,171],"88":[2,171],"96":[2,171],"97":119,"98":[2,171],"99":[2,171],"100":[2,171],"103":[2,171],"105":[2,171],"112":[2,171],"115":[2,171],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[2,171],"136":[2,171],"137":[2,171],"138":[2,171],"139":[2,171],"140":[2,171],"141":[2,171],"142":[2,171],"143":[2,171],"144":[2,171],"145":[2,171],"146":[2,171],"147":[2,171],"148":[2,171],"149":[2,171],"150":[2,171],"151":[2,171],"152":[2,171],"153":[2,171],"154":[2,171],"155":[2,171]},{"1":[2,172],"3":[2,172],"24":[2,172],"25":[2,172],"46":[1,106],"54":[2,172],"56":[2,172],"70":[2,172],"72":[2,172],"75":[2,172],"84":[2,172],"88":[2,172],"96":[2,172],"97":119,"98":[2,172],"99":[2,172],"100":[2,172],"103":[2,172],"105":[2,172],"112":[2,172],"115":[2,172],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,172],"140":[2,172],"141":[2,172],"142":[2,172],"143":[2,172],"144":[2,172],"145":[2,172],"146":[2,172],"147":[2,172],"148":[2,172],"149":[2,172],"150":[2,172],"151":[2,172],"152":[2,172],"153":[2,172],"154":[2,172],"155":[1,115]},{"1":[2,173],"3":[2,173],"24":[2,173],"25":[2,173],"46":[1,106],"54":[2,173],"56":[2,173],"70":[2,173],"72":[2,173],"75":[2,173],"84":[2,173],"88":[2,173],"96":[2,173],"97":119,"98":[2,173],"99":[2,173],"100":[2,173],"103":[2,173],"105":[2,173],"112":[2,173],"115":[2,173],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,173],"140":[2,173],"141":[2,173],"142":[2,173],"143":[2,173],"144":[2,173],"145":[2,173],"146":[2,173],"147":[2,173],"148":[2,173],"149":[2,173],"150":[2,173],"151":[2,173],"152":[2,173],"153":[2,173],"154":[2,173],"155":[1,115]},{"1":[2,174],"3":[2,174],"24":[2,174],"25":[2,174],"46":[1,106],"54":[2,174],"56":[2,174],"70":[2,174],"72":[2,174],"75":[2,174],"84":[2,174],"88":[2,174],"96":[2,174],"97":119,"98":[2,174],"99":[2,174],"100":[2,174],"103":[2,174],"105":[2,174],"112":[2,174],"115":[2,174],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,174],"140":[2,174],"141":[2,174],"142":[2,174],"143":[2,174],"144":[2,174],"145":[2,174],"146":[2,174],"147":[2,174],"148":[2,174],"149":[2,174],"150":[2,174],"151":[2,174],"152":[2,174],"153":[2,174],"154":[2,174],"155":[1,115]},{"1":[2,175],"3":[2,175],"24":[2,175],"25":[2,175],"46":[1,106],"54":[2,175],"56":[2,175],"70":[2,175],"72":[2,175],"75":[2,175],"84":[2,175],"88":[2,175],"96":[2,175],"97":119,"98":[2,175],"99":[2,175],"100":[2,175],"103":[2,175],"105":[2,175],"112":[2,175],"115":[2,175],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,175],"140":[2,175],"141":[2,175],"142":[2,175],"143":[2,175],"144":[2,175],"145":[2,175],"146":[2,175],"147":[2,175],"148":[2,175],"149":[2,175],"150":[2,175],"151":[2,175],"152":[2,175],"153":[2,175],"154":[2,175],"155":[1,115]},{"1":[2,176],"3":[2,176],"24":[2,176],"25":[2,176],"46":[1,106],"54":[2,176],"56":[2,176],"70":[2,176],"72":[2,176],"75":[2,176],"84":[2,176],"88":[2,176],"96":[2,176],"97":119,"98":[2,176],"99":[2,176],"100":[2,176],"103":[2,176],"105":[2,176],"112":[2,176],"115":[2,176],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,176],"144":[2,176],"145":[2,176],"146":[2,176],"147":[2,176],"148":[2,176],"149":[2,176],"150":[2,176],"151":[2,176],"152":[2,176],"153":[2,176],"154":[2,176],"155":[1,115]},{"1":[2,177],"3":[2,177],"24":[2,177],"25":[2,177],"46":[1,106],"54":[2,177],"56":[2,177],"70":[2,177],"72":[2,177],"75":[2,177],"84":[2,177],"88":[2,177],"96":[2,177],"97":119,"98":[2,177],"99":[2,177],"100":[2,177],"103":[2,177],"105":[2,177],"112":[2,177],"115":[2,177],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,177],"144":[2,177],"145":[2,177],"146":[2,177],"147":[2,177],"148":[2,177],"149":[2,177],"150":[2,177],"151":[2,177],"152":[2,177],"153":[2,177],"154":[2,177],"155":[1,115]},{"1":[2,178],"3":[2,178],"24":[2,178],"25":[2,178],"46":[1,106],"54":[2,178],"56":[2,178],"70":[2,178],"72":[2,178],"75":[2,178],"84":[2,178],"88":[2,178],"96":[2,178],"97":119,"98":[2,178],"99":[2,178],"100":[2,178],"103":[2,178],"105":[2,178],"112":[2,178],"115":[2,178],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,178],"144":[2,178],"145":[2,178],"146":[2,178],"147":[2,178],"148":[2,178],"149":[2,178],"150":[2,178],"151":[2,178],"152":[2,178],"153":[2,178],"154":[2,178],"155":[1,115]},{"1":[2,179],"3":[2,179],"24":[2,179],"25":[2,179],"46":[1,106],"54":[2,179],"56":[2,179],"70":[2,179],"72":[2,179],"75":[2,179],"84":[2,179],"88":[2,179],"96":[2,179],"97":119,"98":[2,179],"99":[2,179],"100":[2,179],"103":[2,179],"105":[2,179],"112":[2,179],"115":[2,179],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[2,179],"144":[2,179],"145":[2,179],"146":[2,179],"147":[2,179],"148":[2,179],"149":[2,179],"150":[2,179],"151":[2,179],"152":[2,179],"153":[2,179],"154":[2,179],"155":[1,115]},{"1":[2,180],"3":[2,180],"24":[2,180],"25":[2,180],"46":[2,180],"54":[2,180],"56":[2,180],"70":[2,180],"72":[2,180],"75":[2,180],"84":[2,180],"88":[2,180],"96":[2,180],"97":119,"98":[2,180],"99":[2,180],"100":[2,180],"103":[2,180],"105":[2,180],"112":[2,180],"115":[2,180],"118":[2,180],"119":[2,180],"122":[2,180],"123":[2,180],"126":[2,180],"127":[2,180],"128":[2,180],"129":[2,180],"130":[2,180],"131":[2,180],"132":[2,180],"133":[2,180],"134":[2,180],"135":[2,180],"136":[2,180],"137":[2,180],"138":[2,180],"139":[2,180],"140":[2,180],"141":[2,180],"142":[2,180],"143":[2,180],"144":[2,180],"145":[2,180],"146":[2,180],"147":[2,180],"148":[2,180],"149":[2,180],"150":[2,180],"151":[2,180],"152":[2,180],"153":[2,180],"154":[2,180],"155":[2,180]},{"1":[2,181],"3":[2,181],"24":[2,181],"25":[2,181],"46":[1,106],"54":[2,181],"56":[2,181],"70":[2,181],"72":[2,181],"75":[2,181],"84":[2,181],"88":[2,181],"96":[2,181],"97":119,"98":[2,181],"99":[2,181],"100":[2,181],"103":[2,181],"105":[2,181],"112":[2,181],"115":[2,181],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,182],"3":[2,182],"24":[2,182],"25":[2,182],"46":[1,106],"54":[2,182],"56":[2,182],"70":[2,182],"72":[2,182],"75":[2,182],"84":[2,182],"88":[2,182],"96":[2,182],"97":119,"98":[2,182],"99":[2,182],"100":[2,182],"103":[2,182],"105":[2,182],"112":[2,182],"115":[2,182],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,183],"3":[2,183],"24":[2,183],"25":[2,183],"46":[1,106],"54":[2,183],"56":[2,183],"70":[2,183],"72":[2,183],"75":[2,183],"84":[2,183],"88":[2,183],"96":[2,183],"97":119,"98":[2,183],"99":[2,183],"100":[2,183],"103":[2,183],"105":[2,183],"112":[2,183],"115":[2,183],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,184],"3":[2,184],"24":[2,184],"25":[2,184],"46":[1,106],"54":[2,184],"56":[2,184],"70":[2,184],"72":[2,184],"75":[2,184],"84":[2,184],"88":[2,184],"96":[2,184],"97":119,"98":[2,184],"99":[2,184],"100":[2,184],"103":[2,184],"105":[2,184],"112":[2,184],"115":[2,184],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,185],"3":[2,185],"24":[2,185],"25":[2,185],"46":[1,106],"54":[2,185],"56":[2,185],"70":[2,185],"72":[2,185],"75":[2,185],"84":[2,185],"88":[2,185],"96":[2,185],"97":119,"98":[2,185],"99":[2,185],"100":[2,185],"103":[2,185],"105":[2,185],"112":[2,185],"115":[2,185],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,186],"3":[2,186],"24":[2,186],"25":[2,186],"46":[1,106],"54":[2,186],"56":[2,186],"70":[2,186],"72":[2,186],"75":[2,186],"84":[2,186],"88":[2,186],"96":[2,186],"97":119,"98":[2,186],"99":[2,186],"100":[2,186],"103":[2,186],"105":[2,186],"112":[2,186],"115":[2,186],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,187],"3":[2,187],"24":[2,187],"25":[2,187],"46":[1,106],"54":[2,187],"56":[2,187],"70":[2,187],"72":[2,187],"75":[2,187],"84":[2,187],"88":[2,187],"96":[2,187],"97":119,"98":[2,187],"99":[2,187],"100":[2,187],"103":[2,187],"105":[2,187],"112":[2,187],"115":[2,187],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,188],"3":[2,188],"24":[2,188],"25":[2,188],"46":[1,106],"54":[2,188],"56":[2,188],"70":[2,188],"72":[2,188],"75":[2,188],"84":[2,188],"88":[2,188],"96":[2,188],"97":119,"98":[2,188],"99":[2,188],"100":[2,188],"103":[2,188],"105":[2,188],"112":[2,188],"115":[2,188],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,189],"3":[2,189],"24":[2,189],"25":[2,189],"46":[1,106],"54":[2,189],"56":[2,189],"70":[2,189],"72":[2,189],"75":[2,189],"84":[2,189],"88":[2,189],"96":[2,189],"97":119,"98":[2,189],"99":[2,189],"100":[2,189],"103":[2,189],"105":[2,189],"112":[2,189],"115":[2,189],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[2,189],"140":[2,189],"141":[2,189],"142":[2,189],"143":[2,189],"144":[2,189],"145":[2,189],"146":[2,189],"147":[2,189],"148":[2,189],"149":[2,189],"150":[2,189],"151":[2,189],"152":[2,189],"153":[2,189],"154":[2,189],"155":[1,115]},{"1":[2,190],"3":[2,190],"24":[2,190],"25":[2,190],"46":[1,106],"54":[2,190],"56":[1,121],"70":[2,190],"72":[2,190],"75":[2,190],"84":[2,190],"88":[2,190],"96":[2,190],"97":119,"98":[2,190],"99":[2,190],"100":[2,190],"103":[1,116],"105":[2,190],"112":[2,190],"115":[2,190],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,143],"3":[2,143],"24":[2,143],"25":[2,143],"46":[1,106],"54":[2,143],"56":[1,121],"70":[2,143],"72":[2,143],"75":[2,143],"84":[2,143],"88":[2,143],"96":[2,143],"97":119,"98":[1,75],"99":[2,143],"100":[1,120],"103":[1,116],"105":[2,143],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,144],"3":[2,144],"24":[2,144],"25":[2,144],"46":[1,106],"54":[2,144],"56":[1,121],"70":[2,144],"72":[2,144],"75":[2,144],"84":[2,144],"88":[2,144],"96":[2,144],"97":119,"98":[1,75],"99":[2,144],"100":[1,120],"103":[1,116],"105":[2,144],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"102":261,"103":[1,236],"104":[1,237]},{"56":[1,262]},{"1":[2,25],"3":[2,25],"24":[2,25],"25":[2,25],"45":[2,25],"46":[2,25],"54":[2,25],"56":[2,25],"70":[2,25],"72":[2,25],"75":[2,25],"84":[2,25],"88":[2,25],"92":[2,25],"93":[2,25],"96":[2,25],"98":[2,25],"99":[2,25],"100":[2,25],"103":[2,25],"105":[2,25],"108":[2,25],"110":[2,25],"112":[2,25],"115":[2,25],"118":[2,25],"119":[2,25],"122":[2,25],"123":[2,25],"126":[2,25],"127":[2,25],"128":[2,25],"129":[2,25],"130":[2,25],"131":[2,25],"132":[2,25],"133":[2,25],"134":[2,25],"135":[2,25],"136":[2,25],"137":[2,25],"138":[2,25],"139":[2,25],"140":[2,25],"141":[2,25],"142":[2,25],"143":[2,25],"144":[2,25],"145":[2,25],"146":[2,25],"147":[2,25],"148":[2,25],"149":[2,25],"150":[2,25],"151":[2,25],"152":[2,25],"153":[2,25],"154":[2,25],"155":[2,25]},{"1":[2,41],"3":[2,41],"24":[2,41],"25":[2,41],"46":[1,106],"54":[2,41],"56":[1,121],"70":[2,41],"72":[2,41],"75":[2,41],"84":[2,41],"88":[2,41],"96":[2,41],"97":119,"98":[2,41],"99":[2,41],"100":[1,120],"103":[1,116],"105":[2,41],"112":[2,41],"115":[2,41],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,90],"3":[2,90],"24":[2,90],"25":[2,90],"46":[2,90],"54":[2,90],"56":[2,90],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,90],"71":[1,135],"72":[2,90],"75":[2,90],"81":127,"82":[1,133],"84":[2,90],"88":[2,90],"96":[2,90],"98":[2,90],"99":[2,90],"100":[2,90],"103":[2,90],"105":[2,90],"112":[2,90],"115":[2,90],"118":[2,90],"119":[2,90],"122":[2,90],"123":[2,90],"126":[2,90],"127":[2,90],"128":[2,90],"129":[2,90],"130":[2,90],"131":[2,90],"132":[2,90],"133":[2,90],"134":[2,90],"135":[2,90],"136":[2,90],"137":[2,90],"138":[2,90],"139":[2,90],"140":[2,90],"141":[2,90],"142":[2,90],"143":[2,90],"144":[2,90],"145":[2,90],"146":[2,90],"147":[2,90],"148":[2,90],"149":[2,90],"150":[2,90],"151":[2,90],"152":[2,90],"153":[2,90],"154":[2,90],"155":[2,90]},{"1":[2,68],"3":[2,68],"24":[2,68],"25":[2,68],"42":[2,68],"46":[2,68],"54":[2,68],"56":[2,68],"64":[2,68],"65":[2,68],"66":[2,68],"69":[2,68],"70":[2,68],"71":[2,68],"72":[2,68],"75":[2,68],"78":[2,68],"82":[2,68],"84":[2,68],"88":[2,68],"96":[2,68],"98":[2,68],"99":[2,68],"100":[2,68],"103":[2,68],"105":[2,68],"112":[2,68],"115":[2,68],"118":[2,68],"119":[2,68],"122":[2,68],"123":[2,68],"126":[2,68],"127":[2,68],"128":[2,68],"129":[2,68],"130":[2,68],"131":[2,68],"132":[2,68],"133":[2,68],"134":[2,68],"135":[2,68],"136":[2,68],"137":[2,68],"138":[2,68],"139":[2,68],"140":[2,68],"141":[2,68],"142":[2,68],"143":[2,68],"144":[2,68],"145":[2,68],"146":[2,68],"147":[2,68],"148":[2,68],"149":[2,68],"150":[2,68],"151":[2,68],"152":[2,68],"153":[2,68],"154":[2,68],"155":[2,68]},{"1":[2,69],"3":[2,69],"24":[2,69],"25":[2,69],"42":[2,69],"46":[2,69],"54":[2,69],"56":[2,69],"64":[2,69],"65":[2,69],"66":[2,69],"69":[2,69],"70":[2,69],"71":[2,69],"72":[2,69],"75":[2,69],"78":[2,69],"82":[2,69],"84":[2,69],"88":[2,69],"96":[2,69],"98":[2,69],"99":[2,69],"100":[2,69],"103":[2,69],"105":[2,69],"112":[2,69],"115":[2,69],"118":[2,69],"119":[2,69],"122":[2,69],"123":[2,69],"126":[2,69],"127":[2,69],"128":[2,69],"129":[2,69],"130":[2,69],"131":[2,69],"132":[2,69],"133":[2,69],"134":[2,69],"135":[2,69],"136":[2,69],"137":[2,69],"138":[2,69],"139":[2,69],"140":[2,69],"141":[2,69],"142":[2,69],"143":[2,69],"144":[2,69],"145":[2,69],"146":[2,69],"147":[2,69],"148":[2,69],"149":[2,69],"150":[2,69],"151":[2,69],"152":[2,69],"153":[2,69],"154":[2,69],"155":[2,69]},{"1":[2,70],"3":[2,70],"24":[2,70],"25":[2,70],"42":[2,70],"46":[2,70],"54":[2,70],"56":[2,70],"64":[2,70],"65":[2,70],"66":[2,70],"69":[2,70],"70":[2,70],"71":[2,70],"72":[2,70],"75":[2,70],"78":[2,70],"82":[2,70],"84":[2,70],"88":[2,70],"96":[2,70],"98":[2,70],"99":[2,70],"100":[2,70],"103":[2,70],"105":[2,70],"112":[2,70],"115":[2,70],"118":[2,70],"119":[2,70],"122":[2,70],"123":[2,70],"126":[2,70],"127":[2,70],"128":[2,70],"129":[2,70],"130":[2,70],"131":[2,70],"132":[2,70],"133":[2,70],"134":[2,70],"135":[2,70],"136":[2,70],"137":[2,70],"138":[2,70],"139":[2,70],"140":[2,70],"141":[2,70],"142":[2,70],"143":[2,70],"144":[2,70],"145":[2,70],"146":[2,70],"147":[2,70],"148":[2,70],"149":[2,70],"150":[2,70],"151":[2,70],"152":[2,70],"153":[2,70],"154":[2,70],"155":[2,70]},{"3":[1,244],"25":[1,245],"54":[1,243],"84":[1,263]},{"3":[2,103],"25":[2,103],"46":[1,106],"54":[2,103],"56":[1,121],"84":[2,103],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,265],"70":[1,264],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,121],"72":[1,266],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"50":267,"51":[1,72],"52":[1,73]},{"53":268,"55":[1,142]},{"56":[1,269]},{"1":[2,112],"3":[2,112],"24":[2,112],"25":[2,112],"46":[2,112],"54":[2,112],"56":[2,112],"70":[2,112],"72":[2,112],"75":[2,112],"84":[2,112],"88":[2,112],"92":[1,270],"96":[2,112],"98":[2,112],"99":[2,112],"100":[2,112],"103":[2,112],"105":[2,112],"112":[2,112],"115":[2,112],"118":[2,112],"119":[2,112],"122":[2,112],"123":[2,112],"126":[2,112],"127":[2,112],"128":[2,112],"129":[2,112],"130":[2,112],"131":[2,112],"132":[2,112],"133":[2,112],"134":[2,112],"135":[2,112],"136":[2,112],"137":[2,112],"138":[2,112],"139":[2,112],"140":[2,112],"141":[2,112],"142":[2,112],"143":[2,112],"144":[2,112],"145":[2,112],"146":[2,112],"147":[2,112],"148":[2,112],"149":[2,112],"150":[2,112],"151":[2,112],"152":[2,112],"153":[2,112],"154":[2,112],"155":[2,112]},{"5":271,"24":[1,6]},{"26":272,"27":[1,55]},{"5":273,"24":[1,6],"99":[1,274],"105":[1,275]},{"6":276,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":277,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"26":278,"27":[1,55]},{"23":282,"45":[1,54],"107":279,"109":280,"110":[1,281]},{"7":283,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"57":26,"58":27,"59":28,"60":29,"61":30,"63":162,"73":[1,68],"86":[1,70],"87":[1,67],"95":[1,69]},{"1":[2,79],"3":[2,79],"24":[2,79],"25":[2,79],"46":[2,79],"54":[2,79],"56":[2,79],"70":[2,79],"72":[2,79],"75":[2,79],"84":[2,79],"88":[2,79],"96":[2,79],"98":[2,79],"99":[2,79],"100":[2,79],"103":[2,79],"105":[2,79],"112":[2,79],"115":[2,79],"118":[2,79],"119":[2,79],"122":[2,79],"123":[2,79],"126":[2,79],"127":[2,79],"128":[2,79],"129":[2,79],"130":[2,79],"131":[2,79],"132":[2,79],"133":[2,79],"134":[2,79],"135":[2,79],"136":[2,79],"137":[2,79],"138":[2,79],"139":[2,79],"140":[2,79],"141":[2,79],"142":[2,79],"143":[2,79],"144":[2,79],"145":[2,79],"146":[2,79],"147":[2,79],"148":[2,79],"149":[2,79],"150":[2,79],"151":[2,79],"152":[2,79],"153":[2,79],"154":[2,79],"155":[2,79]},{"1":[2,101],"3":[2,101],"24":[2,101],"25":[2,101],"42":[2,101],"46":[2,101],"54":[2,101],"56":[2,101],"64":[2,101],"65":[2,101],"66":[2,101],"69":[2,101],"70":[2,101],"71":[2,101],"72":[2,101],"75":[2,101],"78":[2,101],"82":[2,101],"84":[2,101],"88":[2,101],"96":[2,101],"98":[2,101],"99":[2,101],"100":[2,101],"103":[2,101],"105":[2,101],"112":[2,101],"115":[2,101],"118":[2,101],"119":[2,101],"122":[2,101],"123":[2,101],"126":[2,101],"127":[2,101],"128":[2,101],"129":[2,101],"130":[2,101],"131":[2,101],"132":[2,101],"133":[2,101],"134":[2,101],"135":[2,101],"136":[2,101],"137":[2,101],"138":[2,101],"139":[2,101],"140":[2,101],"141":[2,101],"142":[2,101],"143":[2,101],"144":[2,101],"145":[2,101],"146":[2,101],"147":[2,101],"148":[2,101],"149":[2,101],"150":[2,101],"151":[2,101],"152":[2,101],"153":[2,101],"154":[2,101],"155":[2,101]},{"3":[1,285],"6":284,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":[1,286],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":287,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,109],"25":[2,109],"54":[2,109],"84":[2,109],"88":[2,109]},{"56":[1,288]},{"3":[2,104],"25":[2,104],"46":[1,106],"54":[2,104],"56":[1,121],"84":[2,104],"88":[2,104],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,75],"3":[2,75],"24":[2,75],"25":[2,75],"42":[2,75],"46":[2,75],"54":[2,75],"56":[2,75],"64":[2,75],"65":[2,75],"66":[2,75],"69":[2,75],"70":[2,75],"71":[2,75],"72":[2,75],"75":[2,75],"78":[2,75],"82":[2,75],"84":[2,75],"88":[2,75],"96":[2,75],"98":[2,75],"99":[2,75],"100":[2,75],"103":[2,75],"105":[2,75],"112":[2,75],"115":[2,75],"118":[2,75],"119":[2,75],"122":[2,75],"123":[2,75],"126":[2,75],"127":[2,75],"128":[2,75],"129":[2,75],"130":[2,75],"131":[2,75],"132":[2,75],"133":[2,75],"134":[2,75],"135":[2,75],"136":[2,75],"137":[2,75],"138":[2,75],"139":[2,75],"140":[2,75],"141":[2,75],"142":[2,75],"143":[2,75],"144":[2,75],"145":[2,75],"146":[2,75],"147":[2,75],"148":[2,75],"149":[2,75],"150":[2,75],"151":[2,75],"152":[2,75],"153":[2,75],"154":[2,75],"155":[2,75]},{"3":[1,290],"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":289,"45":[1,54]},{"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":291,"45":[1,54]},{"1":[2,76],"3":[2,76],"24":[2,76],"25":[2,76],"42":[2,76],"46":[2,76],"54":[2,76],"56":[2,76],"64":[2,76],"65":[2,76],"66":[2,76],"69":[2,76],"70":[2,76],"71":[2,76],"72":[2,76],"75":[2,76],"78":[2,76],"82":[2,76],"84":[2,76],"88":[2,76],"96":[2,76],"98":[2,76],"99":[2,76],"100":[2,76],"103":[2,76],"105":[2,76],"112":[2,76],"115":[2,76],"118":[2,76],"119":[2,76],"122":[2,76],"123":[2,76],"126":[2,76],"127":[2,76],"128":[2,76],"129":[2,76],"130":[2,76],"131":[2,76],"132":[2,76],"133":[2,76],"134":[2,76],"135":[2,76],"136":[2,76],"137":[2,76],"138":[2,76],"139":[2,76],"140":[2,76],"141":[2,76],"142":[2,76],"143":[2,76],"144":[2,76],"145":[2,76],"146":[2,76],"147":[2,76],"148":[2,76],"149":[2,76],"150":[2,76],"151":[2,76],"152":[2,76],"153":[2,76],"154":[2,76],"155":[2,76]},{"3":[1,250],"25":[1,292],"54":[1,249]},{"6":293,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":294,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,117],"3":[2,117],"24":[2,117],"25":[2,117],"42":[2,117],"46":[2,117],"54":[2,117],"56":[2,117],"64":[2,117],"65":[2,117],"66":[2,117],"69":[2,117],"70":[2,117],"71":[2,117],"72":[2,117],"75":[2,117],"78":[2,117],"82":[2,117],"84":[2,117],"88":[2,117],"96":[2,117],"98":[2,117],"99":[2,117],"100":[2,117],"103":[2,117],"105":[2,117],"112":[2,117],"115":[2,117],"118":[2,117],"119":[2,117],"122":[2,117],"123":[2,117],"126":[2,117],"127":[2,117],"128":[2,117],"129":[2,117],"130":[2,117],"131":[2,117],"132":[2,117],"133":[2,117],"134":[2,117],"135":[2,117],"136":[2,117],"137":[2,117],"138":[2,117],"139":[2,117],"140":[2,117],"141":[2,117],"142":[2,117],"143":[2,117],"144":[2,117],"145":[2,117],"146":[2,117],"147":[2,117],"148":[2,117],"149":[2,117],"150":[2,117],"151":[2,117],"152":[2,117],"153":[2,117],"154":[2,117],"155":[2,117]},{"3":[1,244],"25":[1,245],"54":[1,243],"84":[1,295]},{"1":[2,140],"3":[2,140],"24":[2,140],"25":[2,140],"46":[2,140],"54":[2,140],"56":[2,140],"70":[2,140],"72":[2,140],"75":[2,140],"84":[2,140],"88":[2,140],"96":[2,140],"98":[2,140],"99":[2,140],"100":[2,140],"103":[2,140],"105":[2,140],"112":[2,140],"115":[2,140],"118":[2,140],"119":[2,140],"122":[2,140],"123":[2,140],"126":[2,140],"127":[2,140],"128":[2,140],"129":[2,140],"130":[2,140],"131":[2,140],"132":[2,140],"133":[2,140],"134":[2,140],"135":[2,140],"136":[2,140],"137":[2,140],"138":[2,140],"139":[2,140],"140":[2,140],"141":[2,140],"142":[2,140],"143":[2,140],"144":[2,140],"145":[2,140],"146":[2,140],"147":[2,140],"148":[2,140],"149":[2,140],"150":[2,140],"151":[2,140],"152":[2,140],"153":[2,140],"154":[2,140],"155":[2,140]},{"6":296,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":297,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,137],"3":[2,137],"24":[2,137],"25":[2,137],"46":[2,137],"54":[2,137],"56":[2,137],"70":[2,137],"72":[2,137],"75":[2,137],"84":[2,137],"88":[2,137],"96":[2,137],"98":[2,137],"99":[2,137],"100":[2,137],"103":[2,137],"105":[2,137],"108":[2,137],"112":[2,137],"115":[2,137],"118":[2,137],"119":[2,137],"122":[2,137],"123":[2,137],"126":[2,137],"127":[2,137],"128":[2,137],"129":[2,137],"130":[2,137],"131":[2,137],"132":[2,137],"133":[2,137],"134":[2,137],"135":[2,137],"136":[2,137],"137":[2,137],"138":[2,137],"139":[2,137],"140":[2,137],"141":[2,137],"142":[2,137],"143":[2,137],"144":[2,137],"145":[2,137],"146":[2,137],"147":[2,137],"148":[2,137],"149":[2,137],"150":[2,137],"151":[2,137],"152":[2,137],"153":[2,137],"154":[2,137],"155":[2,137]},{"1":[2,122],"3":[2,122],"24":[2,122],"25":[2,122],"46":[2,122],"54":[2,122],"56":[2,122],"70":[2,122],"72":[2,122],"75":[2,122],"84":[2,122],"88":[2,122],"96":[2,122],"98":[2,122],"99":[1,274],"100":[2,122],"103":[2,122],"105":[1,275],"112":[2,122],"115":[2,122],"118":[2,122],"119":[2,122],"122":[2,122],"123":[2,122],"126":[2,122],"127":[2,122],"128":[2,122],"129":[2,122],"130":[2,122],"131":[2,122],"132":[2,122],"133":[2,122],"134":[2,122],"135":[2,122],"136":[2,122],"137":[2,122],"138":[2,122],"139":[2,122],"140":[2,122],"141":[2,122],"142":[2,122],"143":[2,122],"144":[2,122],"145":[2,122],"146":[2,122],"147":[2,122],"148":[2,122],"149":[2,122],"150":[2,122],"151":[2,122],"152":[2,122],"153":[2,122],"154":[2,122],"155":[2,122]},{"1":[2,58],"3":[2,58],"24":[2,58],"25":[2,58],"46":[2,58],"54":[2,58],"56":[2,58],"70":[2,58],"72":[2,58],"75":[2,58],"84":[2,58],"88":[2,58],"96":[2,58],"98":[2,58],"99":[2,58],"100":[2,58],"103":[2,58],"105":[2,58],"112":[2,58],"115":[2,58],"118":[2,58],"119":[2,58],"122":[2,58],"123":[2,58],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"1":[2,93],"3":[2,93],"24":[2,93],"25":[2,93],"46":[2,93],"54":[2,93],"56":[2,93],"64":[2,93],"65":[2,93],"66":[2,93],"69":[2,93],"70":[2,93],"71":[2,93],"72":[2,93],"75":[2,93],"82":[2,93],"84":[2,93],"88":[2,93],"96":[2,93],"98":[2,93],"99":[2,93],"100":[2,93],"103":[2,93],"105":[2,93],"112":[2,93],"115":[2,93],"118":[2,93],"119":[2,93],"122":[2,93],"123":[2,93],"126":[2,93],"127":[2,93],"128":[2,93],"129":[2,93],"130":[2,93],"131":[2,93],"132":[2,93],"133":[2,93],"134":[2,93],"135":[2,93],"136":[2,93],"137":[2,93],"138":[2,93],"139":[2,93],"140":[2,93],"141":[2,93],"142":[2,93],"143":[2,93],"144":[2,93],"145":[2,93],"146":[2,93],"147":[2,93],"148":[2,93],"149":[2,93],"150":[2,93],"151":[2,93],"152":[2,93],"153":[2,93],"154":[2,93],"155":[2,93]},{"1":[2,73],"3":[2,73],"24":[2,73],"25":[2,73],"42":[2,73],"46":[2,73],"54":[2,73],"56":[2,73],"64":[2,73],"65":[2,73],"66":[2,73],"69":[2,73],"70":[2,73],"71":[2,73],"72":[2,73],"75":[2,73],"78":[2,73],"82":[2,73],"84":[2,73],"88":[2,73],"96":[2,73],"98":[2,73],"99":[2,73],"100":[2,73],"103":[2,73],"105":[2,73],"112":[2,73],"115":[2,73],"118":[2,73],"119":[2,73],"122":[2,73],"123":[2,73],"126":[2,73],"127":[2,73],"128":[2,73],"129":[2,73],"130":[2,73],"131":[2,73],"132":[2,73],"133":[2,73],"134":[2,73],"135":[2,73],"136":[2,73],"137":[2,73],"138":[2,73],"139":[2,73],"140":[2,73],"141":[2,73],"142":[2,73],"143":[2,73],"144":[2,73],"145":[2,73],"146":[2,73],"147":[2,73],"148":[2,73],"149":[2,73],"150":[2,73],"151":[2,73],"152":[2,73],"153":[2,73],"154":[2,73],"155":[2,73]},{"56":[1,298]},{"1":[2,74],"3":[2,74],"24":[2,74],"25":[2,74],"42":[2,74],"46":[2,74],"54":[2,74],"56":[2,74],"64":[2,74],"65":[2,74],"66":[2,74],"69":[2,74],"70":[2,74],"71":[2,74],"72":[2,74],"75":[2,74],"78":[2,74],"82":[2,74],"84":[2,74],"88":[2,74],"96":[2,74],"98":[2,74],"99":[2,74],"100":[2,74],"103":[2,74],"105":[2,74],"112":[2,74],"115":[2,74],"118":[2,74],"119":[2,74],"122":[2,74],"123":[2,74],"126":[2,74],"127":[2,74],"128":[2,74],"129":[2,74],"130":[2,74],"131":[2,74],"132":[2,74],"133":[2,74],"134":[2,74],"135":[2,74],"136":[2,74],"137":[2,74],"138":[2,74],"139":[2,74],"140":[2,74],"141":[2,74],"142":[2,74],"143":[2,74],"144":[2,74],"145":[2,74],"146":[2,74],"147":[2,74],"148":[2,74],"149":[2,74],"150":[2,74],"151":[2,74],"152":[2,74],"153":[2,74],"154":[2,74],"155":[2,74]},{"5":299,"24":[1,6]},{"49":[2,55],"54":[2,55],"56":[1,231]},{"56":[1,300]},{"5":301,"24":[1,6]},{"1":[2,113],"3":[2,113],"24":[2,113],"25":[2,113],"46":[2,113],"54":[2,113],"56":[2,113],"70":[2,113],"72":[2,113],"75":[2,113],"84":[2,113],"88":[2,113],"96":[2,113],"98":[2,113],"99":[2,113],"100":[2,113],"103":[2,113],"105":[2,113],"112":[2,113],"115":[2,113],"118":[2,113],"119":[2,113],"122":[2,113],"123":[2,113],"126":[2,113],"127":[2,113],"128":[2,113],"129":[2,113],"130":[2,113],"131":[2,113],"132":[2,113],"133":[2,113],"134":[2,113],"135":[2,113],"136":[2,113],"137":[2,113],"138":[2,113],"139":[2,113],"140":[2,113],"141":[2,113],"142":[2,113],"143":[2,113],"144":[2,113],"145":[2,113],"146":[2,113],"147":[2,113],"148":[2,113],"149":[2,113],"150":[2,113],"151":[2,113],"152":[2,113],"153":[2,113],"154":[2,113],"155":[2,113]},{"5":302,"24":[1,6]},{"1":[2,123],"3":[2,123],"24":[2,123],"25":[2,123],"46":[2,123],"54":[2,123],"56":[2,123],"70":[2,123],"72":[2,123],"75":[2,123],"84":[2,123],"88":[2,123],"96":[2,123],"98":[2,123],"99":[2,123],"100":[2,123],"103":[2,123],"105":[2,123],"112":[2,123],"115":[2,123],"118":[2,123],"119":[2,123],"122":[2,123],"123":[2,123],"126":[2,123],"127":[2,123],"128":[2,123],"129":[2,123],"130":[2,123],"131":[2,123],"132":[2,123],"133":[2,123],"134":[2,123],"135":[2,123],"136":[2,123],"137":[2,123],"138":[2,123],"139":[2,123],"140":[2,123],"141":[2,123],"142":[2,123],"143":[2,123],"144":[2,123],"145":[2,123],"146":[2,123],"147":[2,123],"148":[2,123],"149":[2,123],"150":[2,123],"151":[2,123],"152":[2,123],"153":[2,123],"154":[2,123],"155":[2,123]},{"6":303,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":304,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,126],"3":[2,126],"24":[2,126],"25":[2,126],"46":[1,106],"54":[2,126],"56":[1,121],"70":[2,126],"72":[2,126],"75":[2,126],"84":[2,126],"88":[2,126],"96":[2,126],"97":119,"98":[2,126],"99":[2,126],"100":[2,126],"103":[1,116],"105":[2,126],"112":[2,126],"115":[2,126],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,127],"3":[2,127],"24":[2,127],"25":[2,127],"46":[1,106],"54":[2,127],"56":[1,121],"70":[2,127],"72":[2,127],"75":[2,127],"84":[2,127],"88":[2,127],"96":[2,127],"97":119,"98":[2,127],"99":[2,127],"100":[2,127],"103":[1,116],"105":[2,127],"112":[2,127],"115":[2,127],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"103":[2,125],"104":[2,125]},{"23":282,"25":[1,305],"45":[1,54],"108":[1,306],"109":307,"110":[1,281]},{"25":[2,132],"45":[2,132],"108":[2,132],"110":[2,132]},{"6":309,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"89":308,"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[1,310]},{"1":[2,78],"3":[2,78],"24":[1,169],"25":[2,78],"46":[2,78],"54":[2,78],"56":[2,78],"62":124,"64":[1,128],"65":[1,129],"66":[1,130],"67":131,"68":132,"69":[1,134],"70":[2,78],"71":[1,135],"72":[2,78],"75":[2,78],"76":311,"81":127,"82":[1,133],"84":[2,78],"88":[2,78],"96":[2,78],"98":[2,78],"99":[2,78],"100":[2,78],"103":[2,78],"105":[2,78],"112":[2,78],"115":[2,78],"118":[2,78],"119":[2,78],"122":[2,78],"123":[2,78],"126":[2,78],"127":[2,78],"128":[2,78],"129":[2,78],"130":[2,78],"131":[2,78],"132":[2,78],"133":[2,78],"134":[2,78],"135":[2,78],"136":[2,78],"137":[2,78],"138":[2,78],"139":[2,78],"140":[2,78],"141":[2,78],"142":[2,78],"143":[2,78],"144":[2,78],"145":[2,78],"146":[2,78],"147":[2,78],"148":[2,78],"149":[2,78],"150":[2,78],"151":[2,78],"152":[2,78],"153":[2,78],"154":[2,78],"155":[2,78]},{"3":[2,105],"25":[2,105],"46":[1,106],"54":[2,105],"56":[1,121],"84":[2,105],"88":[2,105],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":312,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"6":313,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,106],"25":[2,106],"46":[1,106],"54":[2,106],"56":[1,121],"84":[2,106],"88":[2,106],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":314,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[1,315],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"3":[2,83],"25":[2,83],"54":[2,83],"75":[2,83]},{"23":172,"26":170,"27":[1,55],"28":171,"29":[1,76],"30":[1,77],"43":316,"45":[1,54]},{"3":[2,84],"25":[2,84],"54":[2,84],"75":[2,84]},{"1":[2,86],"3":[2,86],"24":[2,86],"25":[2,86],"46":[2,86],"54":[2,86],"56":[2,86],"70":[2,86],"72":[2,86],"75":[2,86],"84":[2,86],"88":[2,86],"96":[2,86],"98":[2,86],"99":[2,86],"100":[2,86],"103":[2,86],"105":[2,86],"112":[2,86],"115":[2,86],"118":[2,86],"119":[2,86],"122":[2,86],"123":[2,86],"126":[2,86],"127":[2,86],"128":[2,86],"129":[2,86],"130":[2,86],"131":[2,86],"132":[2,86],"133":[2,86],"134":[2,86],"135":[2,86],"136":[2,86],"137":[2,86],"138":[2,86],"139":[2,86],"140":[2,86],"141":[2,86],"142":[2,86],"143":[2,86],"144":[2,86],"145":[2,86],"146":[2,86],"147":[2,86],"148":[2,86],"149":[2,86],"150":[2,86],"151":[2,86],"152":[2,86],"153":[2,86],"154":[2,86],"155":[2,86]},{"3":[2,42],"25":[2,42],"46":[1,106],"54":[2,42],"56":[1,121],"75":[2,42],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,43],"25":[2,43],"46":[1,106],"54":[2,43],"56":[1,121],"75":[2,43],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,94],"3":[2,94],"24":[2,94],"25":[2,94],"46":[2,94],"54":[2,94],"56":[2,94],"70":[2,94],"72":[2,94],"75":[2,94],"84":[2,94],"88":[2,94],"96":[2,94],"98":[2,94],"99":[2,94],"100":[2,94],"103":[2,94],"105":[2,94],"112":[2,94],"115":[2,94],"118":[2,94],"119":[2,94],"122":[2,94],"123":[2,94],"126":[2,94],"127":[2,94],"128":[2,94],"129":[2,94],"130":[2,94],"131":[2,94],"132":[2,94],"133":[2,94],"134":[2,94],"135":[2,94],"136":[2,94],"137":[2,94],"138":[2,94],"139":[2,94],"140":[2,94],"141":[2,94],"142":[2,94],"143":[2,94],"144":[2,94],"145":[2,94],"146":[2,94],"147":[2,94],"148":[2,94],"149":[2,94],"150":[2,94],"151":[2,94],"152":[2,94],"153":[2,94],"154":[2,94],"155":[2,94]},{"5":317,"24":[1,6],"46":[1,106],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,119],"3":[2,119],"24":[2,119],"25":[2,119],"46":[1,106],"54":[2,119],"56":[1,121],"70":[2,119],"72":[2,119],"75":[2,119],"84":[2,119],"88":[2,119],"96":[2,119],"97":119,"98":[1,75],"99":[2,119],"100":[1,120],"103":[1,116],"105":[2,119],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":318,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[1,319],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"1":[2,49],"3":[2,49],"24":[2,49],"25":[2,49],"46":[2,49],"54":[2,49],"56":[2,49],"70":[2,49],"72":[2,49],"75":[2,49],"84":[2,49],"88":[2,49],"96":[2,49],"98":[2,49],"99":[2,49],"100":[2,49],"103":[2,49],"105":[2,49],"112":[2,49],"115":[2,49],"118":[2,49],"119":[2,49],"122":[2,49],"123":[2,49],"126":[2,49],"127":[2,49],"128":[2,49],"129":[2,49],"130":[2,49],"131":[2,49],"132":[2,49],"133":[2,49],"134":[2,49],"135":[2,49],"136":[2,49],"137":[2,49],"138":[2,49],"139":[2,49],"140":[2,49],"141":[2,49],"142":[2,49],"143":[2,49],"144":[2,49],"145":[2,49],"146":[2,49],"147":[2,49],"148":[2,49],"149":[2,49],"150":[2,49],"151":[2,49],"152":[2,49],"153":[2,49],"154":[2,49],"155":[2,49]},{"49":[2,57],"54":[2,57],"56":[2,57]},{"1":[2,114],"3":[2,114],"24":[2,114],"25":[2,114],"46":[2,114],"54":[2,114],"56":[2,114],"70":[2,114],"72":[2,114],"75":[2,114],"84":[2,114],"88":[2,114],"96":[2,114],"98":[2,114],"99":[2,114],"100":[2,114],"103":[2,114],"105":[2,114],"112":[2,114],"115":[2,114],"118":[2,114],"119":[2,114],"122":[2,114],"123":[2,114],"126":[2,114],"127":[2,114],"128":[2,114],"129":[2,114],"130":[2,114],"131":[2,114],"132":[2,114],"133":[2,114],"134":[2,114],"135":[2,114],"136":[2,114],"137":[2,114],"138":[2,114],"139":[2,114],"140":[2,114],"141":[2,114],"142":[2,114],"143":[2,114],"144":[2,114],"145":[2,114],"146":[2,114],"147":[2,114],"148":[2,114],"149":[2,114],"150":[2,114],"151":[2,114],"152":[2,114],"153":[2,114],"154":[2,114],"155":[2,114]},{"1":[2,115],"3":[2,115],"24":[2,115],"25":[2,115],"46":[2,115],"54":[2,115],"56":[2,115],"70":[2,115],"72":[2,115],"75":[2,115],"84":[2,115],"88":[2,115],"92":[2,115],"96":[2,115],"98":[2,115],"99":[2,115],"100":[2,115],"103":[2,115],"105":[2,115],"112":[2,115],"115":[2,115],"118":[2,115],"119":[2,115],"122":[2,115],"123":[2,115],"126":[2,115],"127":[2,115],"128":[2,115],"129":[2,115],"130":[2,115],"131":[2,115],"132":[2,115],"133":[2,115],"134":[2,115],"135":[2,115],"136":[2,115],"137":[2,115],"138":[2,115],"139":[2,115],"140":[2,115],"141":[2,115],"142":[2,115],"143":[2,115],"144":[2,115],"145":[2,115],"146":[2,115],"147":[2,115],"148":[2,115],"149":[2,115],"150":[2,115],"151":[2,115],"152":[2,115],"153":[2,115],"154":[2,115],"155":[2,115]},{"1":[2,128],"3":[2,128],"24":[2,128],"25":[2,128],"46":[1,106],"54":[2,128],"56":[1,121],"70":[2,128],"72":[2,128],"75":[2,128],"84":[2,128],"88":[2,128],"96":[2,128],"97":119,"98":[2,128],"99":[2,128],"100":[2,128],"103":[1,116],"105":[2,128],"112":[2,128],"115":[2,128],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,129],"3":[2,129],"24":[2,129],"25":[2,129],"46":[1,106],"54":[2,129],"56":[1,121],"70":[2,129],"72":[2,129],"75":[2,129],"84":[2,129],"88":[2,129],"96":[2,129],"97":119,"98":[2,129],"99":[2,129],"100":[2,129],"103":[1,116],"105":[2,129],"112":[2,129],"115":[2,129],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,130],"3":[2,130],"24":[2,130],"25":[2,130],"46":[2,130],"54":[2,130],"56":[2,130],"70":[2,130],"72":[2,130],"75":[2,130],"84":[2,130],"88":[2,130],"96":[2,130],"98":[2,130],"99":[2,130],"100":[2,130],"103":[2,130],"105":[2,130],"112":[2,130],"115":[2,130],"118":[2,130],"119":[2,130],"122":[2,130],"123":[2,130],"126":[2,130],"127":[2,130],"128":[2,130],"129":[2,130],"130":[2,130],"131":[2,130],"132":[2,130],"133":[2,130],"134":[2,130],"135":[2,130],"136":[2,130],"137":[2,130],"138":[2,130],"139":[2,130],"140":[2,130],"141":[2,130],"142":[2,130],"143":[2,130],"144":[2,130],"145":[2,130],"146":[2,130],"147":[2,130],"148":[2,130],"149":[2,130],"150":[2,130],"151":[2,130],"152":[2,130],"153":[2,130],"154":[2,130],"155":[2,130]},{"5":320,"24":[1,6]},{"25":[2,133],"45":[2,133],"108":[2,133],"110":[2,133]},{"5":321,"24":[1,6],"54":[1,322]},{"24":[2,110],"46":[1,106],"54":[2,110],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"23":282,"45":[1,54],"109":323,"110":[1,281]},{"1":[2,80],"3":[2,80],"24":[2,80],"25":[2,80],"46":[2,80],"54":[2,80],"56":[2,80],"70":[2,80],"72":[2,80],"75":[2,80],"84":[2,80],"88":[2,80],"96":[2,80],"98":[2,80],"99":[2,80],"100":[2,80],"103":[2,80],"105":[2,80],"112":[2,80],"115":[2,80],"118":[2,80],"119":[2,80],"122":[2,80],"123":[2,80],"126":[2,80],"127":[2,80],"128":[2,80],"129":[2,80],"130":[2,80],"131":[2,80],"132":[2,80],"133":[2,80],"134":[2,80],"135":[2,80],"136":[2,80],"137":[2,80],"138":[2,80],"139":[2,80],"140":[2,80],"141":[2,80],"142":[2,80],"143":[2,80],"144":[2,80],"145":[2,80],"146":[2,80],"147":[2,80],"148":[2,80],"149":[2,80],"150":[2,80],"151":[2,80],"152":[2,80],"153":[2,80],"154":[2,80],"155":[2,80]},{"3":[2,107],"25":[2,107],"46":[1,106],"54":[2,107],"56":[1,121],"84":[2,107],"88":[2,107],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,108],"25":[2,108],"46":[1,106],"54":[2,108],"56":[1,121],"84":[2,108],"88":[2,108],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"46":[1,106],"56":[1,121],"88":[1,324],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"3":[2,58],"6":325,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"25":[2,58],"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,58],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"54":[2,58],"56":[2,58],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"88":[2,58],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[2,58],"100":[2,58],"103":[2,58],"106":[1,52],"111":74,"112":[2,58],"114":46,"115":[2,58],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"3":[2,85],"25":[2,85],"54":[2,85],"75":[2,85]},{"1":[2,141],"3":[2,141],"24":[2,141],"25":[2,141],"46":[2,141],"54":[2,141],"56":[2,141],"70":[2,141],"72":[2,141],"75":[2,141],"84":[2,141],"88":[2,141],"96":[2,141],"98":[2,141],"99":[2,141],"100":[2,141],"103":[2,141],"105":[2,141],"108":[2,141],"112":[2,141],"115":[2,141],"118":[2,141],"119":[2,141],"122":[2,141],"123":[2,141],"126":[2,141],"127":[2,141],"128":[2,141],"129":[2,141],"130":[2,141],"131":[2,141],"132":[2,141],"133":[2,141],"134":[2,141],"135":[2,141],"136":[2,141],"137":[2,141],"138":[2,141],"139":[2,141],"140":[2,141],"141":[2,141],"142":[2,141],"143":[2,141],"144":[2,141],"145":[2,141],"146":[2,141],"147":[2,141],"148":[2,141],"149":[2,141],"150":[2,141],"151":[2,141],"152":[2,141],"153":[2,141],"154":[2,141],"155":[2,141]},{"46":[1,106],"56":[1,121],"70":[1,326],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"6":327,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"46":[2,58],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"56":[2,58],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"70":[2,58],"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[2,58],"100":[2,58],"103":[2,58],"106":[1,52],"111":74,"112":[2,58],"114":46,"115":[2,58],"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45],"126":[2,58],"127":[2,58],"128":[2,58],"129":[2,58],"130":[2,58],"131":[2,58],"132":[2,58],"133":[2,58],"134":[2,58],"135":[2,58],"136":[2,58],"137":[2,58],"138":[2,58],"139":[2,58],"140":[2,58],"141":[2,58],"142":[2,58],"143":[2,58],"144":[2,58],"145":[2,58],"146":[2,58],"147":[2,58],"148":[2,58],"149":[2,58],"150":[2,58],"151":[2,58],"152":[2,58],"153":[2,58],"154":[2,58],"155":[2,58]},{"25":[1,328]},{"3":[1,329],"25":[2,134],"45":[2,134],"108":[2,134],"110":[2,134]},{"6":330,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"26":24,"27":[1,55],"28":56,"29":[1,76],"30":[1,77],"31":25,"32":[1,57],"33":[1,58],"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"44":[1,49],"45":[1,54],"47":[1,34],"50":35,"51":[1,72],"52":[1,73],"57":26,"58":27,"59":28,"60":29,"61":30,"63":31,"73":[1,68],"77":[1,53],"79":[1,32],"80":33,"85":[1,71],"86":[1,70],"87":[1,67],"90":[1,47],"94":[1,48],"95":[1,69],"97":50,"98":[1,75],"100":[1,51],"106":[1,52],"111":74,"112":[1,78],"114":46,"116":[1,36],"117":[1,37],"118":[1,38],"119":[1,39],"120":[1,40],"121":[1,41],"122":[1,42],"123":[1,43],"124":[1,44],"125":[1,45]},{"25":[2,136],"45":[2,136],"108":[2,136],"110":[2,136]},{"1":[2,97],"3":[2,97],"24":[2,97],"25":[2,97],"42":[2,97],"46":[2,97],"54":[2,97],"56":[2,97],"64":[2,97],"65":[2,97],"66":[2,97],"69":[2,97],"70":[2,97],"71":[2,97],"72":[2,97],"75":[2,97],"78":[2,97],"82":[2,97],"84":[2,97],"88":[2,97],"96":[2,97],"98":[2,97],"99":[2,97],"100":[2,97],"103":[2,97],"105":[2,97],"112":[2,97],"115":[2,97],"118":[2,97],"119":[2,97],"122":[2,97],"123":[2,97],"126":[2,97],"127":[2,97],"128":[2,97],"129":[2,97],"130":[2,97],"131":[2,97],"132":[2,97],"133":[2,97],"134":[2,97],"135":[2,97],"136":[2,97],"137":[2,97],"138":[2,97],"139":[2,97],"140":[2,97],"141":[2,97],"142":[2,97],"143":[2,97],"144":[2,97],"145":[2,97],"146":[2,97],"147":[2,97],"148":[2,97],"149":[2,97],"150":[2,97],"151":[2,97],"152":[2,97],"153":[2,97],"154":[2,97],"155":[2,97]},{"46":[1,106],"56":[1,121],"88":[1,331],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,99],"3":[2,99],"24":[2,99],"25":[2,99],"42":[2,99],"46":[2,99],"54":[2,99],"56":[2,99],"64":[2,99],"65":[2,99],"66":[2,99],"69":[2,99],"70":[2,99],"71":[2,99],"72":[2,99],"75":[2,99],"78":[2,99],"82":[2,99],"84":[2,99],"88":[2,99],"96":[2,99],"98":[2,99],"99":[2,99],"100":[2,99],"103":[2,99],"105":[2,99],"112":[2,99],"115":[2,99],"118":[2,99],"119":[2,99],"122":[2,99],"123":[2,99],"126":[2,99],"127":[2,99],"128":[2,99],"129":[2,99],"130":[2,99],"131":[2,99],"132":[2,99],"133":[2,99],"134":[2,99],"135":[2,99],"136":[2,99],"137":[2,99],"138":[2,99],"139":[2,99],"140":[2,99],"141":[2,99],"142":[2,99],"143":[2,99],"144":[2,99],"145":[2,99],"146":[2,99],"147":[2,99],"148":[2,99],"149":[2,99],"150":[2,99],"151":[2,99],"152":[2,99],"153":[2,99],"154":[2,99],"155":[2,99]},{"46":[1,106],"56":[1,121],"70":[1,332],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,131],"3":[2,131],"24":[2,131],"25":[2,131],"46":[2,131],"54":[2,131],"56":[2,131],"70":[2,131],"72":[2,131],"75":[2,131],"84":[2,131],"88":[2,131],"96":[2,131],"98":[2,131],"99":[2,131],"100":[2,131],"103":[2,131],"105":[2,131],"112":[2,131],"115":[2,131],"118":[2,131],"119":[2,131],"122":[2,131],"123":[2,131],"126":[2,131],"127":[2,131],"128":[2,131],"129":[2,131],"130":[2,131],"131":[2,131],"132":[2,131],"133":[2,131],"134":[2,131],"135":[2,131],"136":[2,131],"137":[2,131],"138":[2,131],"139":[2,131],"140":[2,131],"141":[2,131],"142":[2,131],"143":[2,131],"144":[2,131],"145":[2,131],"146":[2,131],"147":[2,131],"148":[2,131],"149":[2,131],"150":[2,131],"151":[2,131],"152":[2,131],"153":[2,131],"154":[2,131],"155":[2,131]},{"25":[2,135],"45":[2,135],"108":[2,135],"110":[2,135]},{"24":[2,111],"46":[1,106],"54":[2,111],"56":[1,121],"97":119,"98":[1,75],"100":[1,120],"103":[1,116],"112":[1,117],"115":[1,118],"118":[1,87],"119":[1,86],"122":[1,81],"123":[1,82],"126":[1,83],"127":[1,84],"128":[1,85],"129":[1,88],"130":[1,89],"131":[1,90],"132":[1,91],"133":[1,92],"134":[1,93],"135":[1,94],"136":[1,95],"137":[1,96],"138":[1,97],"139":[1,98],"140":[1,99],"141":[1,100],"142":[1,101],"143":[1,102],"144":[1,103],"145":[1,104],"146":[1,105],"147":[1,107],"148":[1,108],"149":[1,109],"150":[1,110],"151":[1,111],"152":[1,112],"153":[1,113],"154":[1,114],"155":[1,115]},{"1":[2,98],"3":[2,98],"24":[2,98],"25":[2,98],"42":[2,98],"46":[2,98],"54":[2,98],"56":[2,98],"64":[2,98],"65":[2,98],"66":[2,98],"69":[2,98],"70":[2,98],"71":[2,98],"72":[2,98],"75":[2,98],"78":[2,98],"82":[2,98],"84":[2,98],"88":[2,98],"96":[2,98],"98":[2,98],"99":[2,98],"100":[2,98],"103":[2,98],"105":[2,98],"112":[2,98],"115":[2,98],"118":[2,98],"119":[2,98],"122":[2,98],"123":[2,98],"126":[2,98],"127":[2,98],"128":[2,98],"129":[2,98],"130":[2,98],"131":[2,98],"132":[2,98],"133":[2,98],"134":[2,98],"135":[2,98],"136":[2,98],"137":[2,98],"138":[2,98],"139":[2,98],"140":[2,98],"141":[2,98],"142":[2,98],"143":[2,98],"144":[2,98],"145":[2,98],"146":[2,98],"147":[2,98],"148":[2,98],"149":[2,98],"150":[2,98],"151":[2,98],"152":[2,98],"153":[2,98],"154":[2,98],"155":[2,98]},{"1":[2,100],"3":[2,100],"24":[2,100],"25":[2,100],"42":[2,100],"46":[2,100],"54":[2,100],"56":[2,100],"64":[2,100],"65":[2,100],"66":[2,100],"69":[2,100],"70":[2,100],"71":[2,100],"72":[2,100],"75":[2,100],"78":[2,100],"82":[2,100],"84":[2,100],"88":[2,100],"96":[2,100],"98":[2,100],"99":[2,100],"100":[2,100],"103":[2,100],"105":[2,100],"112":[2,100],"115":[2,100],"118":[2,100],"119":[2,100],"122":[2,100],"123":[2,100],"126":[2,100],"127":[2,100],"128":[2,100],"129":[2,100],"130":[2,100],"131":[2,100],"132":[2,100],"133":[2,100],"134":[2,100],"135":[2,100],"136":[2,100],"137":[2,100],"138":[2,100],"139":[2,100],"140":[2,100],"141":[2,100],"142":[2,100],"143":[2,100],"144":[2,100],"145":[2,100],"146":[2,100],"147":[2,100],"148":[2,100],"149":[2,100],"150":[2,100],"151":[2,100],"152":[2,100],"153":[2,100],"154":[2,100],"155":[2,100]}], +table: [{"1":[2,1],"2":1,"3":[1,2],"4":3,"5":4,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,6],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[3]},{"1":[2,2],"24":81,"47":[1,55]},{"1":[2,3],"3":[1,82]},{"3":[1,83]},{"1":[2,5],"3":[2,5],"27":[2,5],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"4":121,"6":5,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[1,122],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,8],"3":[2,8],"26":[2,8],"27":[2,8],"44":[1,125],"48":[2,8],"56":[2,8],"58":[2,8],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,8],"74":[1,136],"75":[2,8],"78":[2,8],"81":[1,126],"84":[1,124],"85":127,"86":[1,134],"88":[2,8],"92":[2,8],"100":[2,8],"103":[2,8],"104":[2,8],"105":[2,8],"108":[2,8],"110":[2,8],"117":[2,8],"120":[2,8],"123":[2,8],"124":[2,8],"126":[2,8],"127":[2,8],"130":[2,8],"131":[2,8],"132":[2,8],"133":[2,8],"134":[2,8],"135":[2,8],"136":[2,8],"137":[2,8],"138":[2,8],"139":[2,8],"140":[2,8],"141":[2,8],"142":[2,8],"143":[2,8],"144":[2,8],"145":[2,8],"146":[2,8],"147":[2,8],"148":[2,8],"149":[2,8],"150":[2,8],"151":[2,8],"152":[2,8],"153":[2,8],"154":[2,8],"155":[2,8]},{"1":[2,9],"3":[2,9],"26":[2,9],"27":[2,9],"48":[2,9],"56":[2,9],"58":[2,9],"73":[2,9],"75":[2,9],"78":[2,9],"88":[2,9],"92":[2,9],"100":[2,9],"103":[2,9],"104":[2,9],"105":[2,9],"108":[2,9],"110":[2,9],"117":[2,9],"120":[2,9],"123":[2,9],"124":[2,9],"126":[2,9],"127":[2,9],"130":[2,9],"131":[2,9],"132":[2,9],"133":[2,9],"134":[2,9],"135":[2,9],"136":[2,9],"137":[2,9],"138":[2,9],"139":[2,9],"140":[2,9],"141":[2,9],"142":[2,9],"143":[2,9],"144":[2,9],"145":[2,9],"146":[2,9],"147":[2,9],"148":[2,9],"149":[2,9],"150":[2,9],"151":[2,9],"152":[2,9],"153":[2,9],"154":[2,9],"155":[2,9]},{"1":[2,10],"3":[2,10],"26":[2,10],"27":[2,10],"48":[2,10],"56":[2,10],"58":[2,10],"73":[2,10],"75":[2,10],"78":[2,10],"88":[2,10],"92":[2,10],"100":[2,10],"103":[2,10],"104":[2,10],"105":[2,10],"108":[2,10],"110":[2,10],"117":[2,10],"120":[2,10],"123":[2,10],"124":[2,10],"126":[2,10],"127":[2,10],"130":[2,10],"131":[2,10],"132":[2,10],"133":[2,10],"134":[2,10],"135":[2,10],"136":[2,10],"137":[2,10],"138":[2,10],"139":[2,10],"140":[2,10],"141":[2,10],"142":[2,10],"143":[2,10],"144":[2,10],"145":[2,10],"146":[2,10],"147":[2,10],"148":[2,10],"149":[2,10],"150":[2,10],"151":[2,10],"152":[2,10],"153":[2,10],"154":[2,10],"155":[2,10]},{"1":[2,11],"3":[2,11],"26":[2,11],"27":[2,11],"48":[2,11],"56":[2,11],"58":[2,11],"73":[2,11],"75":[2,11],"78":[2,11],"88":[2,11],"92":[2,11],"100":[2,11],"103":[2,11],"104":[2,11],"105":[2,11],"108":[2,11],"110":[2,11],"117":[2,11],"120":[2,11],"123":[2,11],"124":[2,11],"126":[2,11],"127":[2,11],"130":[2,11],"131":[2,11],"132":[2,11],"133":[2,11],"134":[2,11],"135":[2,11],"136":[2,11],"137":[2,11],"138":[2,11],"139":[2,11],"140":[2,11],"141":[2,11],"142":[2,11],"143":[2,11],"144":[2,11],"145":[2,11],"146":[2,11],"147":[2,11],"148":[2,11],"149":[2,11],"150":[2,11],"151":[2,11],"152":[2,11],"153":[2,11],"154":[2,11],"155":[2,11]},{"1":[2,12],"3":[2,12],"26":[2,12],"27":[2,12],"48":[2,12],"56":[2,12],"58":[2,12],"73":[2,12],"75":[2,12],"78":[2,12],"88":[2,12],"92":[2,12],"100":[2,12],"103":[2,12],"104":[2,12],"105":[2,12],"108":[2,12],"110":[2,12],"117":[2,12],"120":[2,12],"123":[2,12],"124":[2,12],"126":[2,12],"127":[2,12],"130":[2,12],"131":[2,12],"132":[2,12],"133":[2,12],"134":[2,12],"135":[2,12],"136":[2,12],"137":[2,12],"138":[2,12],"139":[2,12],"140":[2,12],"141":[2,12],"142":[2,12],"143":[2,12],"144":[2,12],"145":[2,12],"146":[2,12],"147":[2,12],"148":[2,12],"149":[2,12],"150":[2,12],"151":[2,12],"152":[2,12],"153":[2,12],"154":[2,12],"155":[2,12]},{"1":[2,13],"3":[2,13],"26":[2,13],"27":[2,13],"48":[2,13],"56":[2,13],"58":[2,13],"73":[2,13],"75":[2,13],"78":[2,13],"88":[2,13],"92":[2,13],"100":[2,13],"103":[2,13],"104":[2,13],"105":[2,13],"108":[2,13],"110":[2,13],"117":[2,13],"120":[2,13],"123":[2,13],"124":[2,13],"126":[2,13],"127":[2,13],"130":[2,13],"131":[2,13],"132":[2,13],"133":[2,13],"134":[2,13],"135":[2,13],"136":[2,13],"137":[2,13],"138":[2,13],"139":[2,13],"140":[2,13],"141":[2,13],"142":[2,13],"143":[2,13],"144":[2,13],"145":[2,13],"146":[2,13],"147":[2,13],"148":[2,13],"149":[2,13],"150":[2,13],"151":[2,13],"152":[2,13],"153":[2,13],"154":[2,13],"155":[2,13]},{"1":[2,14],"3":[2,14],"26":[2,14],"27":[2,14],"48":[2,14],"56":[2,14],"58":[2,14],"73":[2,14],"75":[2,14],"78":[2,14],"88":[2,14],"92":[2,14],"100":[2,14],"103":[2,14],"104":[2,14],"105":[2,14],"108":[2,14],"110":[2,14],"117":[2,14],"120":[2,14],"123":[2,14],"124":[2,14],"126":[2,14],"127":[2,14],"130":[2,14],"131":[2,14],"132":[2,14],"133":[2,14],"134":[2,14],"135":[2,14],"136":[2,14],"137":[2,14],"138":[2,14],"139":[2,14],"140":[2,14],"141":[2,14],"142":[2,14],"143":[2,14],"144":[2,14],"145":[2,14],"146":[2,14],"147":[2,14],"148":[2,14],"149":[2,14],"150":[2,14],"151":[2,14],"152":[2,14],"153":[2,14],"154":[2,14],"155":[2,14]},{"1":[2,15],"3":[2,15],"26":[2,15],"27":[2,15],"48":[2,15],"56":[2,15],"58":[2,15],"73":[2,15],"75":[2,15],"78":[2,15],"88":[2,15],"92":[2,15],"100":[2,15],"103":[2,15],"104":[2,15],"105":[2,15],"108":[2,15],"110":[2,15],"117":[2,15],"120":[2,15],"123":[2,15],"124":[2,15],"126":[2,15],"127":[2,15],"130":[2,15],"131":[2,15],"132":[2,15],"133":[2,15],"134":[2,15],"135":[2,15],"136":[2,15],"137":[2,15],"138":[2,15],"139":[2,15],"140":[2,15],"141":[2,15],"142":[2,15],"143":[2,15],"144":[2,15],"145":[2,15],"146":[2,15],"147":[2,15],"148":[2,15],"149":[2,15],"150":[2,15],"151":[2,15],"152":[2,15],"153":[2,15],"154":[2,15],"155":[2,15]},{"1":[2,16],"3":[2,16],"26":[2,16],"27":[2,16],"48":[2,16],"56":[2,16],"58":[2,16],"73":[2,16],"75":[2,16],"78":[2,16],"88":[2,16],"92":[2,16],"100":[2,16],"103":[2,16],"104":[2,16],"105":[2,16],"108":[2,16],"110":[2,16],"117":[2,16],"120":[2,16],"123":[2,16],"124":[2,16],"126":[2,16],"127":[2,16],"130":[2,16],"131":[2,16],"132":[2,16],"133":[2,16],"134":[2,16],"135":[2,16],"136":[2,16],"137":[2,16],"138":[2,16],"139":[2,16],"140":[2,16],"141":[2,16],"142":[2,16],"143":[2,16],"144":[2,16],"145":[2,16],"146":[2,16],"147":[2,16],"148":[2,16],"149":[2,16],"150":[2,16],"151":[2,16],"152":[2,16],"153":[2,16],"154":[2,16],"155":[2,16]},{"1":[2,17],"3":[2,17],"26":[2,17],"27":[2,17],"48":[2,17],"56":[2,17],"58":[2,17],"73":[2,17],"75":[2,17],"78":[2,17],"88":[2,17],"92":[2,17],"100":[2,17],"103":[2,17],"104":[2,17],"105":[2,17],"108":[2,17],"110":[2,17],"117":[2,17],"120":[2,17],"123":[2,17],"124":[2,17],"126":[2,17],"127":[2,17],"130":[2,17],"131":[2,17],"132":[2,17],"133":[2,17],"134":[2,17],"135":[2,17],"136":[2,17],"137":[2,17],"138":[2,17],"139":[2,17],"140":[2,17],"141":[2,17],"142":[2,17],"143":[2,17],"144":[2,17],"145":[2,17],"146":[2,17],"147":[2,17],"148":[2,17],"149":[2,17],"150":[2,17],"151":[2,17],"152":[2,17],"153":[2,17],"154":[2,17],"155":[2,17]},{"1":[2,18],"3":[2,18],"26":[2,18],"27":[2,18],"48":[2,18],"56":[2,18],"58":[2,18],"73":[2,18],"75":[2,18],"78":[2,18],"88":[2,18],"92":[2,18],"100":[2,18],"103":[2,18],"104":[2,18],"105":[2,18],"108":[2,18],"110":[2,18],"117":[2,18],"120":[2,18],"123":[2,18],"124":[2,18],"126":[2,18],"127":[2,18],"130":[2,18],"131":[2,18],"132":[2,18],"133":[2,18],"134":[2,18],"135":[2,18],"136":[2,18],"137":[2,18],"138":[2,18],"139":[2,18],"140":[2,18],"141":[2,18],"142":[2,18],"143":[2,18],"144":[2,18],"145":[2,18],"146":[2,18],"147":[2,18],"148":[2,18],"149":[2,18],"150":[2,18],"151":[2,18],"152":[2,18],"153":[2,18],"154":[2,18],"155":[2,18]},{"1":[2,19],"3":[2,19],"26":[2,19],"27":[2,19],"48":[2,19],"56":[2,19],"58":[2,19],"73":[2,19],"75":[2,19],"78":[2,19],"88":[2,19],"92":[2,19],"100":[2,19],"103":[2,19],"104":[2,19],"105":[2,19],"108":[2,19],"110":[2,19],"117":[2,19],"120":[2,19],"123":[2,19],"124":[2,19],"126":[2,19],"127":[2,19],"130":[2,19],"131":[2,19],"132":[2,19],"133":[2,19],"134":[2,19],"135":[2,19],"136":[2,19],"137":[2,19],"138":[2,19],"139":[2,19],"140":[2,19],"141":[2,19],"142":[2,19],"143":[2,19],"144":[2,19],"145":[2,19],"146":[2,19],"147":[2,19],"148":[2,19],"149":[2,19],"150":[2,19],"151":[2,19],"152":[2,19],"153":[2,19],"154":[2,19],"155":[2,19]},{"1":[2,20],"3":[2,20],"26":[2,20],"27":[2,20],"48":[2,20],"56":[2,20],"58":[2,20],"73":[2,20],"75":[2,20],"78":[2,20],"88":[2,20],"92":[2,20],"100":[2,20],"103":[2,20],"104":[2,20],"105":[2,20],"108":[2,20],"110":[2,20],"117":[2,20],"120":[2,20],"123":[2,20],"124":[2,20],"126":[2,20],"127":[2,20],"130":[2,20],"131":[2,20],"132":[2,20],"133":[2,20],"134":[2,20],"135":[2,20],"136":[2,20],"137":[2,20],"138":[2,20],"139":[2,20],"140":[2,20],"141":[2,20],"142":[2,20],"143":[2,20],"144":[2,20],"145":[2,20],"146":[2,20],"147":[2,20],"148":[2,20],"149":[2,20],"150":[2,20],"151":[2,20],"152":[2,20],"153":[2,20],"154":[2,20],"155":[2,20]},{"1":[2,21],"3":[2,21],"26":[2,21],"27":[2,21],"48":[2,21],"56":[2,21],"58":[2,21],"73":[2,21],"75":[2,21],"78":[2,21],"88":[2,21],"92":[2,21],"100":[2,21],"103":[2,21],"104":[2,21],"105":[2,21],"108":[2,21],"110":[2,21],"117":[2,21],"120":[2,21],"123":[2,21],"124":[2,21],"126":[2,21],"127":[2,21],"130":[2,21],"131":[2,21],"132":[2,21],"133":[2,21],"134":[2,21],"135":[2,21],"136":[2,21],"137":[2,21],"138":[2,21],"139":[2,21],"140":[2,21],"141":[2,21],"142":[2,21],"143":[2,21],"144":[2,21],"145":[2,21],"146":[2,21],"147":[2,21],"148":[2,21],"149":[2,21],"150":[2,21],"151":[2,21],"152":[2,21],"153":[2,21],"154":[2,21],"155":[2,21]},{"1":[2,22],"3":[2,22],"26":[2,22],"27":[2,22],"48":[2,22],"56":[2,22],"58":[2,22],"73":[2,22],"75":[2,22],"78":[2,22],"88":[2,22],"92":[2,22],"100":[2,22],"103":[2,22],"104":[2,22],"105":[2,22],"108":[2,22],"110":[2,22],"117":[2,22],"120":[2,22],"123":[2,22],"124":[2,22],"126":[2,22],"127":[2,22],"130":[2,22],"131":[2,22],"132":[2,22],"133":[2,22],"134":[2,22],"135":[2,22],"136":[2,22],"137":[2,22],"138":[2,22],"139":[2,22],"140":[2,22],"141":[2,22],"142":[2,22],"143":[2,22],"144":[2,22],"145":[2,22],"146":[2,22],"147":[2,22],"148":[2,22],"149":[2,22],"150":[2,22],"151":[2,22],"152":[2,22],"153":[2,22],"154":[2,22],"155":[2,22]},{"1":[2,23],"3":[2,23],"26":[2,23],"27":[2,23],"48":[2,23],"56":[2,23],"58":[2,23],"73":[2,23],"75":[2,23],"78":[2,23],"88":[2,23],"92":[2,23],"100":[2,23],"103":[2,23],"104":[2,23],"105":[2,23],"108":[2,23],"110":[2,23],"117":[2,23],"120":[2,23],"123":[2,23],"124":[2,23],"126":[2,23],"127":[2,23],"130":[2,23],"131":[2,23],"132":[2,23],"133":[2,23],"134":[2,23],"135":[2,23],"136":[2,23],"137":[2,23],"138":[2,23],"139":[2,23],"140":[2,23],"141":[2,23],"142":[2,23],"143":[2,23],"144":[2,23],"145":[2,23],"146":[2,23],"147":[2,23],"148":[2,23],"149":[2,23],"150":[2,23],"151":[2,23],"152":[2,23],"153":[2,23],"154":[2,23],"155":[2,23]},{"1":[2,24],"3":[2,24],"26":[2,24],"27":[2,24],"48":[2,24],"56":[2,24],"58":[2,24],"73":[2,24],"75":[2,24],"78":[2,24],"88":[2,24],"92":[2,24],"100":[2,24],"103":[2,24],"104":[2,24],"105":[2,24],"108":[2,24],"110":[2,24],"117":[2,24],"120":[2,24],"123":[2,24],"124":[2,24],"126":[2,24],"127":[2,24],"130":[2,24],"131":[2,24],"132":[2,24],"133":[2,24],"134":[2,24],"135":[2,24],"136":[2,24],"137":[2,24],"138":[2,24],"139":[2,24],"140":[2,24],"141":[2,24],"142":[2,24],"143":[2,24],"144":[2,24],"145":[2,24],"146":[2,24],"147":[2,24],"148":[2,24],"149":[2,24],"150":[2,24],"151":[2,24],"152":[2,24],"153":[2,24],"154":[2,24],"155":[2,24]},{"1":[2,25],"3":[2,25],"26":[2,25],"27":[2,25],"48":[2,25],"56":[2,25],"58":[2,25],"73":[2,25],"75":[2,25],"78":[2,25],"88":[2,25],"92":[2,25],"100":[2,25],"103":[2,25],"104":[2,25],"105":[2,25],"108":[2,25],"110":[2,25],"117":[2,25],"120":[2,25],"123":[2,25],"124":[2,25],"126":[2,25],"127":[2,25],"130":[2,25],"131":[2,25],"132":[2,25],"133":[2,25],"134":[2,25],"135":[2,25],"136":[2,25],"137":[2,25],"138":[2,25],"139":[2,25],"140":[2,25],"141":[2,25],"142":[2,25],"143":[2,25],"144":[2,25],"145":[2,25],"146":[2,25],"147":[2,25],"148":[2,25],"149":[2,25],"150":[2,25],"151":[2,25],"152":[2,25],"153":[2,25],"154":[2,25],"155":[2,25]},{"1":[2,26],"3":[2,26],"26":[2,26],"27":[2,26],"48":[2,26],"56":[2,26],"58":[2,26],"73":[2,26],"75":[2,26],"78":[2,26],"88":[2,26],"92":[2,26],"100":[2,26],"103":[2,26],"104":[2,26],"105":[2,26],"108":[2,26],"110":[2,26],"117":[2,26],"120":[2,26],"123":[2,26],"124":[2,26],"126":[2,26],"127":[2,26],"130":[2,26],"131":[2,26],"132":[2,26],"133":[2,26],"134":[2,26],"135":[2,26],"136":[2,26],"137":[2,26],"138":[2,26],"139":[2,26],"140":[2,26],"141":[2,26],"142":[2,26],"143":[2,26],"144":[2,26],"145":[2,26],"146":[2,26],"147":[2,26],"148":[2,26],"149":[2,26],"150":[2,26],"151":[2,26],"152":[2,26],"153":[2,26],"154":[2,26],"155":[2,26]},{"1":[2,62],"3":[2,62],"26":[2,62],"27":[2,62],"44":[2,62],"48":[2,62],"56":[2,62],"58":[2,62],"66":[2,62],"67":[2,62],"68":[2,62],"69":[2,62],"72":[2,62],"73":[2,62],"74":[2,62],"75":[2,62],"78":[2,62],"81":[2,62],"84":[2,62],"86":[2,62],"88":[2,62],"92":[2,62],"100":[2,62],"103":[2,62],"104":[2,62],"105":[2,62],"108":[2,62],"110":[2,62],"117":[2,62],"120":[2,62],"123":[2,62],"124":[2,62],"126":[2,62],"127":[2,62],"130":[2,62],"131":[2,62],"132":[2,62],"133":[2,62],"134":[2,62],"135":[2,62],"136":[2,62],"137":[2,62],"138":[2,62],"139":[2,62],"140":[2,62],"141":[2,62],"142":[2,62],"143":[2,62],"144":[2,62],"145":[2,62],"146":[2,62],"147":[2,62],"148":[2,62],"149":[2,62],"150":[2,62],"151":[2,62],"152":[2,62],"153":[2,62],"154":[2,62],"155":[2,62]},{"1":[2,63],"3":[2,63],"26":[2,63],"27":[2,63],"44":[2,63],"48":[2,63],"56":[2,63],"58":[2,63],"66":[2,63],"67":[2,63],"68":[2,63],"69":[2,63],"72":[2,63],"73":[2,63],"74":[2,63],"75":[2,63],"78":[2,63],"81":[2,63],"84":[2,63],"86":[2,63],"88":[2,63],"92":[2,63],"100":[2,63],"103":[2,63],"104":[2,63],"105":[2,63],"108":[2,63],"110":[2,63],"117":[2,63],"120":[2,63],"123":[2,63],"124":[2,63],"126":[2,63],"127":[2,63],"130":[2,63],"131":[2,63],"132":[2,63],"133":[2,63],"134":[2,63],"135":[2,63],"136":[2,63],"137":[2,63],"138":[2,63],"139":[2,63],"140":[2,63],"141":[2,63],"142":[2,63],"143":[2,63],"144":[2,63],"145":[2,63],"146":[2,63],"147":[2,63],"148":[2,63],"149":[2,63],"150":[2,63],"151":[2,63],"152":[2,63],"153":[2,63],"154":[2,63],"155":[2,63]},{"1":[2,64],"3":[2,64],"26":[2,64],"27":[2,64],"44":[2,64],"48":[2,64],"56":[2,64],"58":[2,64],"66":[2,64],"67":[2,64],"68":[2,64],"69":[2,64],"72":[2,64],"73":[2,64],"74":[2,64],"75":[2,64],"78":[2,64],"81":[2,64],"84":[2,64],"86":[2,64],"88":[2,64],"92":[2,64],"100":[2,64],"103":[2,64],"104":[2,64],"105":[2,64],"108":[2,64],"110":[2,64],"117":[2,64],"120":[2,64],"123":[2,64],"124":[2,64],"126":[2,64],"127":[2,64],"130":[2,64],"131":[2,64],"132":[2,64],"133":[2,64],"134":[2,64],"135":[2,64],"136":[2,64],"137":[2,64],"138":[2,64],"139":[2,64],"140":[2,64],"141":[2,64],"142":[2,64],"143":[2,64],"144":[2,64],"145":[2,64],"146":[2,64],"147":[2,64],"148":[2,64],"149":[2,64],"150":[2,64],"151":[2,64],"152":[2,64],"153":[2,64],"154":[2,64],"155":[2,64]},{"1":[2,65],"3":[2,65],"26":[2,65],"27":[2,65],"44":[2,65],"48":[2,65],"56":[2,65],"58":[2,65],"66":[2,65],"67":[2,65],"68":[2,65],"69":[2,65],"72":[2,65],"73":[2,65],"74":[2,65],"75":[2,65],"78":[2,65],"81":[2,65],"84":[2,65],"86":[2,65],"88":[2,65],"92":[2,65],"100":[2,65],"103":[2,65],"104":[2,65],"105":[2,65],"108":[2,65],"110":[2,65],"117":[2,65],"120":[2,65],"123":[2,65],"124":[2,65],"126":[2,65],"127":[2,65],"130":[2,65],"131":[2,65],"132":[2,65],"133":[2,65],"134":[2,65],"135":[2,65],"136":[2,65],"137":[2,65],"138":[2,65],"139":[2,65],"140":[2,65],"141":[2,65],"142":[2,65],"143":[2,65],"144":[2,65],"145":[2,65],"146":[2,65],"147":[2,65],"148":[2,65],"149":[2,65],"150":[2,65],"151":[2,65],"152":[2,65],"153":[2,65],"154":[2,65],"155":[2,65]},{"1":[2,66],"3":[2,66],"26":[2,66],"27":[2,66],"44":[2,66],"48":[2,66],"56":[2,66],"58":[2,66],"66":[2,66],"67":[2,66],"68":[2,66],"69":[2,66],"72":[2,66],"73":[2,66],"74":[2,66],"75":[2,66],"78":[2,66],"81":[2,66],"84":[2,66],"86":[2,66],"88":[2,66],"92":[2,66],"100":[2,66],"103":[2,66],"104":[2,66],"105":[2,66],"108":[2,66],"110":[2,66],"117":[2,66],"120":[2,66],"123":[2,66],"124":[2,66],"126":[2,66],"127":[2,66],"130":[2,66],"131":[2,66],"132":[2,66],"133":[2,66],"134":[2,66],"135":[2,66],"136":[2,66],"137":[2,66],"138":[2,66],"139":[2,66],"140":[2,66],"141":[2,66],"142":[2,66],"143":[2,66],"144":[2,66],"145":[2,66],"146":[2,66],"147":[2,66],"148":[2,66],"149":[2,66],"150":[2,66],"151":[2,66],"152":[2,66],"153":[2,66],"154":[2,66],"155":[2,66]},{"1":[2,67],"3":[2,67],"26":[2,67],"27":[2,67],"44":[2,67],"48":[2,67],"56":[2,67],"58":[2,67],"66":[2,67],"67":[2,67],"68":[2,67],"69":[2,67],"72":[2,67],"73":[2,67],"74":[2,67],"75":[2,67],"78":[2,67],"81":[2,67],"84":[2,67],"86":[2,67],"88":[2,67],"92":[2,67],"100":[2,67],"103":[2,67],"104":[2,67],"105":[2,67],"108":[2,67],"110":[2,67],"117":[2,67],"120":[2,67],"123":[2,67],"124":[2,67],"126":[2,67],"127":[2,67],"130":[2,67],"131":[2,67],"132":[2,67],"133":[2,67],"134":[2,67],"135":[2,67],"136":[2,67],"137":[2,67],"138":[2,67],"139":[2,67],"140":[2,67],"141":[2,67],"142":[2,67],"143":[2,67],"144":[2,67],"145":[2,67],"146":[2,67],"147":[2,67],"148":[2,67],"149":[2,67],"150":[2,67],"151":[2,67],"152":[2,67],"153":[2,67],"154":[2,67],"155":[2,67]},{"1":[2,68],"3":[2,68],"26":[2,68],"27":[2,68],"44":[2,68],"48":[2,68],"56":[2,68],"58":[2,68],"66":[2,68],"67":[2,68],"68":[2,68],"69":[2,68],"72":[2,68],"73":[2,68],"74":[2,68],"75":[2,68],"78":[2,68],"81":[2,68],"84":[2,68],"86":[2,68],"88":[2,68],"92":[2,68],"100":[2,68],"103":[2,68],"104":[2,68],"105":[2,68],"108":[2,68],"110":[2,68],"117":[2,68],"120":[2,68],"123":[2,68],"124":[2,68],"126":[2,68],"127":[2,68],"130":[2,68],"131":[2,68],"132":[2,68],"133":[2,68],"134":[2,68],"135":[2,68],"136":[2,68],"137":[2,68],"138":[2,68],"139":[2,68],"140":[2,68],"141":[2,68],"142":[2,68],"143":[2,68],"144":[2,68],"145":[2,68],"146":[2,68],"147":[2,68],"148":[2,68],"149":[2,68],"150":[2,68],"151":[2,68],"152":[2,68],"153":[2,68],"154":[2,68],"155":[2,68]},{"1":[2,91],"3":[2,91],"26":[2,91],"27":[2,91],"48":[2,91],"56":[2,91],"58":[2,91],"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,91],"74":[1,136],"75":[2,91],"78":[2,91],"85":138,"86":[1,134],"88":[2,91],"92":[2,91],"100":[2,91],"103":[2,91],"104":[2,91],"105":[2,91],"108":[2,91],"110":[2,91],"117":[2,91],"120":[2,91],"123":[2,91],"124":[2,91],"126":[2,91],"127":[2,91],"130":[2,91],"131":[2,91],"132":[2,91],"133":[2,91],"134":[2,91],"135":[2,91],"136":[2,91],"137":[2,91],"138":[2,91],"139":[2,91],"140":[2,91],"141":[2,91],"142":[2,91],"143":[2,91],"144":[2,91],"145":[2,91],"146":[2,91],"147":[2,91],"148":[2,91],"149":[2,91],"150":[2,91],"151":[2,91],"152":[2,91],"153":[2,91],"154":[2,91],"155":[2,91]},{"7":140,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":139,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,93],"3":[2,93],"26":[2,93],"27":[2,93],"48":[2,93],"56":[2,93],"58":[2,93],"73":[2,93],"75":[2,93],"78":[2,93],"88":[2,93],"92":[2,93],"100":[2,93],"103":[2,93],"104":[2,93],"105":[2,93],"108":[2,93],"110":[2,93],"117":[2,93],"120":[2,93],"123":[2,93],"124":[2,93],"126":[2,93],"127":[2,93],"130":[2,93],"131":[2,93],"132":[2,93],"133":[2,93],"134":[2,93],"135":[2,93],"136":[2,93],"137":[2,93],"138":[2,93],"139":[2,93],"140":[2,93],"141":[2,93],"142":[2,93],"143":[2,93],"144":[2,93],"145":[2,93],"146":[2,93],"147":[2,93],"148":[2,93],"149":[2,93],"150":[2,93],"151":[2,93],"152":[2,93],"153":[2,93],"154":[2,93],"155":[2,93]},{"50":141,"51":[2,56],"55":142,"56":[2,56],"57":[1,143]},{"3":[1,145],"5":144,"26":[1,6]},{"6":146,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":147,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":148,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":149,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":150,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":151,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":152,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":153,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":154,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,148],"3":[2,148],"26":[2,148],"27":[2,148],"48":[2,148],"56":[2,148],"58":[2,148],"73":[2,148],"75":[2,148],"78":[2,148],"88":[2,148],"92":[2,148],"100":[2,148],"103":[2,148],"104":[2,148],"105":[2,148],"108":[2,148],"110":[2,148],"117":[2,148],"120":[2,148],"123":[2,148],"124":[2,148],"126":[2,148],"127":[2,148],"130":[2,148],"131":[2,148],"132":[2,148],"133":[2,148],"134":[2,148],"135":[2,148],"136":[2,148],"137":[2,148],"138":[2,148],"139":[2,148],"140":[2,148],"141":[2,148],"142":[2,148],"143":[2,148],"144":[2,148],"145":[2,148],"146":[2,148],"147":[2,148],"148":[2,148],"149":[2,148],"150":[2,148],"151":[2,148],"152":[2,148],"153":[2,148],"154":[2,148],"155":[2,148]},{"3":[1,145],"5":155,"26":[1,6]},{"6":156,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,49],"3":[2,49],"6":157,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[2,49],"27":[2,49],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,49],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,49],"58":[2,49],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,49],"75":[2,49],"76":[1,70],"78":[2,49],"80":[1,54],"82":[1,34],"83":35,"88":[2,49],"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,49],"94":[1,48],"98":[1,49],"99":[1,71],"100":[2,49],"101":[1,56],"102":51,"103":[2,49],"104":[2,49],"105":[1,52],"108":[2,49],"110":[2,49],"111":[1,53],"116":76,"117":[2,49],"119":47,"120":[2,49],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,49],"131":[2,49],"132":[2,49],"133":[2,49],"134":[2,49],"135":[2,49],"136":[2,49],"137":[2,49],"138":[2,49],"139":[2,49],"140":[2,49],"141":[2,49],"142":[2,49],"143":[2,49],"144":[2,49],"145":[2,49],"146":[2,49],"147":[2,49],"148":[2,49],"149":[2,49],"150":[2,49],"151":[2,49],"152":[2,49],"153":[2,49],"154":[2,49],"155":[2,49]},{"3":[1,145],"5":158,"26":[1,6]},{"28":160,"29":[1,57],"106":159},{"6":161,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"7":162,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,50],"3":[2,50],"26":[2,50],"27":[2,50],"47":[2,50],"48":[2,50],"56":[2,50],"58":[2,50],"73":[2,50],"75":[2,50],"78":[2,50],"88":[2,50],"92":[2,50],"96":[2,50],"97":[2,50],"100":[2,50],"103":[2,50],"104":[2,50],"105":[2,50],"108":[2,50],"110":[2,50],"113":[2,50],"115":[2,50],"117":[2,50],"120":[2,50],"123":[2,50],"124":[2,50],"126":[2,50],"127":[2,50],"130":[2,50],"131":[2,50],"132":[2,50],"133":[2,50],"134":[2,50],"135":[2,50],"136":[2,50],"137":[2,50],"138":[2,50],"139":[2,50],"140":[2,50],"141":[2,50],"142":[2,50],"143":[2,50],"144":[2,50],"145":[2,50],"146":[2,50],"147":[2,50],"148":[2,50],"149":[2,50],"150":[2,50],"151":[2,50],"152":[2,50],"153":[2,50],"154":[2,50],"155":[2,50]},{"1":[2,123],"3":[2,123],"26":[2,123],"27":[2,123],"48":[2,123],"56":[2,123],"58":[2,123],"73":[2,123],"75":[2,123],"78":[2,123],"88":[2,123],"92":[2,123],"100":[2,123],"103":[2,123],"104":[2,123],"105":[2,123],"108":[2,123],"110":[2,123],"117":[2,123],"120":[2,123],"123":[2,123],"124":[2,123],"126":[2,123],"127":[2,123],"130":[2,123],"131":[2,123],"132":[2,123],"133":[2,123],"134":[2,123],"135":[2,123],"136":[2,123],"137":[2,123],"138":[2,123],"139":[2,123],"140":[2,123],"141":[2,123],"142":[2,123],"143":[2,123],"144":[2,123],"145":[2,123],"146":[2,123],"147":[2,123],"148":[2,123],"149":[2,123],"150":[2,123],"151":[2,123],"152":[2,123],"153":[2,123],"154":[2,123],"155":[2,123]},{"1":[2,30],"3":[2,30],"26":[2,30],"27":[2,30],"44":[2,30],"48":[2,30],"56":[2,30],"58":[2,30],"66":[2,30],"67":[2,30],"68":[2,30],"69":[2,30],"72":[2,30],"73":[2,30],"74":[2,30],"75":[2,30],"78":[2,30],"81":[2,30],"84":[2,30],"86":[2,30],"88":[2,30],"92":[2,30],"100":[2,30],"103":[2,30],"104":[2,30],"105":[2,30],"108":[2,30],"109":[2,30],"110":[2,30],"117":[2,30],"120":[2,30],"123":[2,30],"124":[2,30],"126":[2,30],"127":[2,30],"130":[2,30],"131":[2,30],"132":[2,30],"133":[2,30],"134":[2,30],"135":[2,30],"136":[2,30],"137":[2,30],"138":[2,30],"139":[2,30],"140":[2,30],"141":[2,30],"142":[2,30],"143":[2,30],"144":[2,30],"145":[2,30],"146":[2,30],"147":[2,30],"148":[2,30],"149":[2,30],"150":[2,30],"151":[2,30],"152":[2,30],"153":[2,30],"154":[2,30],"155":[2,30]},{"1":[2,33],"3":[2,33],"26":[2,33],"27":[2,33],"44":[2,33],"48":[2,33],"56":[2,33],"58":[2,33],"66":[2,33],"67":[2,33],"68":[2,33],"69":[2,33],"72":[2,33],"73":[2,33],"74":[2,33],"75":[2,33],"78":[2,33],"81":[2,33],"84":[2,33],"86":[2,33],"88":[2,33],"92":[2,33],"100":[2,33],"103":[2,33],"104":[2,33],"105":[2,33],"108":[2,33],"110":[2,33],"117":[2,33],"120":[2,33],"123":[2,33],"124":[2,33],"126":[2,33],"127":[2,33],"130":[2,33],"131":[2,33],"132":[2,33],"133":[2,33],"134":[2,33],"135":[2,33],"136":[2,33],"137":[2,33],"138":[2,33],"139":[2,33],"140":[2,33],"141":[2,33],"142":[2,33],"143":[2,33],"144":[2,33],"145":[2,33],"146":[2,33],"147":[2,33],"148":[2,33],"149":[2,33],"150":[2,33],"151":[2,33],"152":[2,33],"153":[2,33],"154":[2,33],"155":[2,33]},{"1":[2,34],"3":[2,34],"26":[2,34],"27":[2,34],"44":[2,34],"48":[2,34],"56":[2,34],"58":[2,34],"66":[2,34],"67":[2,34],"68":[2,34],"69":[2,34],"72":[2,34],"73":[2,34],"74":[2,34],"75":[2,34],"78":[2,34],"81":[2,34],"84":[2,34],"86":[2,34],"88":[2,34],"92":[2,34],"100":[2,34],"103":[2,34],"104":[2,34],"105":[2,34],"108":[2,34],"110":[2,34],"117":[2,34],"120":[2,34],"123":[2,34],"124":[2,34],"126":[2,34],"127":[2,34],"130":[2,34],"131":[2,34],"132":[2,34],"133":[2,34],"134":[2,34],"135":[2,34],"136":[2,34],"137":[2,34],"138":[2,34],"139":[2,34],"140":[2,34],"141":[2,34],"142":[2,34],"143":[2,34],"144":[2,34],"145":[2,34],"146":[2,34],"147":[2,34],"148":[2,34],"149":[2,34],"150":[2,34],"151":[2,34],"152":[2,34],"153":[2,34],"154":[2,34],"155":[2,34]},{"1":[2,35],"3":[2,35],"26":[2,35],"27":[2,35],"44":[2,35],"48":[2,35],"56":[2,35],"58":[2,35],"66":[2,35],"67":[2,35],"68":[2,35],"69":[2,35],"72":[2,35],"73":[2,35],"74":[2,35],"75":[2,35],"78":[2,35],"81":[2,35],"84":[2,35],"86":[2,35],"88":[2,35],"92":[2,35],"100":[2,35],"103":[2,35],"104":[2,35],"105":[2,35],"108":[2,35],"110":[2,35],"117":[2,35],"120":[2,35],"123":[2,35],"124":[2,35],"126":[2,35],"127":[2,35],"130":[2,35],"131":[2,35],"132":[2,35],"133":[2,35],"134":[2,35],"135":[2,35],"136":[2,35],"137":[2,35],"138":[2,35],"139":[2,35],"140":[2,35],"141":[2,35],"142":[2,35],"143":[2,35],"144":[2,35],"145":[2,35],"146":[2,35],"147":[2,35],"148":[2,35],"149":[2,35],"150":[2,35],"151":[2,35],"152":[2,35],"153":[2,35],"154":[2,35],"155":[2,35]},{"1":[2,36],"3":[2,36],"26":[2,36],"27":[2,36],"44":[2,36],"48":[2,36],"56":[2,36],"58":[2,36],"66":[2,36],"67":[2,36],"68":[2,36],"69":[2,36],"72":[2,36],"73":[2,36],"74":[2,36],"75":[2,36],"78":[2,36],"81":[2,36],"84":[2,36],"86":[2,36],"88":[2,36],"92":[2,36],"100":[2,36],"103":[2,36],"104":[2,36],"105":[2,36],"108":[2,36],"110":[2,36],"117":[2,36],"120":[2,36],"123":[2,36],"124":[2,36],"126":[2,36],"127":[2,36],"130":[2,36],"131":[2,36],"132":[2,36],"133":[2,36],"134":[2,36],"135":[2,36],"136":[2,36],"137":[2,36],"138":[2,36],"139":[2,36],"140":[2,36],"141":[2,36],"142":[2,36],"143":[2,36],"144":[2,36],"145":[2,36],"146":[2,36],"147":[2,36],"148":[2,36],"149":[2,36],"150":[2,36],"151":[2,36],"152":[2,36],"153":[2,36],"154":[2,36],"155":[2,36]},{"1":[2,37],"3":[2,37],"26":[2,37],"27":[2,37],"44":[2,37],"48":[2,37],"56":[2,37],"58":[2,37],"66":[2,37],"67":[2,37],"68":[2,37],"69":[2,37],"72":[2,37],"73":[2,37],"74":[2,37],"75":[2,37],"78":[2,37],"81":[2,37],"84":[2,37],"86":[2,37],"88":[2,37],"92":[2,37],"100":[2,37],"103":[2,37],"104":[2,37],"105":[2,37],"108":[2,37],"110":[2,37],"117":[2,37],"120":[2,37],"123":[2,37],"124":[2,37],"126":[2,37],"127":[2,37],"130":[2,37],"131":[2,37],"132":[2,37],"133":[2,37],"134":[2,37],"135":[2,37],"136":[2,37],"137":[2,37],"138":[2,37],"139":[2,37],"140":[2,37],"141":[2,37],"142":[2,37],"143":[2,37],"144":[2,37],"145":[2,37],"146":[2,37],"147":[2,37],"148":[2,37],"149":[2,37],"150":[2,37],"151":[2,37],"152":[2,37],"153":[2,37],"154":[2,37],"155":[2,37]},{"1":[2,38],"3":[2,38],"26":[2,38],"27":[2,38],"44":[2,38],"48":[2,38],"56":[2,38],"58":[2,38],"66":[2,38],"67":[2,38],"68":[2,38],"69":[2,38],"72":[2,38],"73":[2,38],"74":[2,38],"75":[2,38],"78":[2,38],"81":[2,38],"84":[2,38],"86":[2,38],"88":[2,38],"92":[2,38],"100":[2,38],"103":[2,38],"104":[2,38],"105":[2,38],"108":[2,38],"110":[2,38],"117":[2,38],"120":[2,38],"123":[2,38],"124":[2,38],"126":[2,38],"127":[2,38],"130":[2,38],"131":[2,38],"132":[2,38],"133":[2,38],"134":[2,38],"135":[2,38],"136":[2,38],"137":[2,38],"138":[2,38],"139":[2,38],"140":[2,38],"141":[2,38],"142":[2,38],"143":[2,38],"144":[2,38],"145":[2,38],"146":[2,38],"147":[2,38],"148":[2,38],"149":[2,38],"150":[2,38],"151":[2,38],"152":[2,38],"153":[2,38],"154":[2,38],"155":[2,38]},{"1":[2,39],"3":[2,39],"26":[2,39],"27":[2,39],"44":[2,39],"48":[2,39],"56":[2,39],"58":[2,39],"66":[2,39],"67":[2,39],"68":[2,39],"69":[2,39],"72":[2,39],"73":[2,39],"74":[2,39],"75":[2,39],"78":[2,39],"81":[2,39],"84":[2,39],"86":[2,39],"88":[2,39],"92":[2,39],"100":[2,39],"103":[2,39],"104":[2,39],"105":[2,39],"108":[2,39],"110":[2,39],"117":[2,39],"120":[2,39],"123":[2,39],"124":[2,39],"126":[2,39],"127":[2,39],"130":[2,39],"131":[2,39],"132":[2,39],"133":[2,39],"134":[2,39],"135":[2,39],"136":[2,39],"137":[2,39],"138":[2,39],"139":[2,39],"140":[2,39],"141":[2,39],"142":[2,39],"143":[2,39],"144":[2,39],"145":[2,39],"146":[2,39],"147":[2,39],"148":[2,39],"149":[2,39],"150":[2,39],"151":[2,39],"152":[2,39],"153":[2,39],"154":[2,39],"155":[2,39]},{"1":[2,40],"3":[2,40],"26":[2,40],"27":[2,40],"44":[2,40],"48":[2,40],"56":[2,40],"58":[2,40],"66":[2,40],"67":[2,40],"68":[2,40],"69":[2,40],"72":[2,40],"73":[2,40],"74":[2,40],"75":[2,40],"78":[2,40],"81":[2,40],"84":[2,40],"86":[2,40],"88":[2,40],"92":[2,40],"100":[2,40],"103":[2,40],"104":[2,40],"105":[2,40],"108":[2,40],"110":[2,40],"117":[2,40],"120":[2,40],"123":[2,40],"124":[2,40],"126":[2,40],"127":[2,40],"130":[2,40],"131":[2,40],"132":[2,40],"133":[2,40],"134":[2,40],"135":[2,40],"136":[2,40],"137":[2,40],"138":[2,40],"139":[2,40],"140":[2,40],"141":[2,40],"142":[2,40],"143":[2,40],"144":[2,40],"145":[2,40],"146":[2,40],"147":[2,40],"148":[2,40],"149":[2,40],"150":[2,40],"151":[2,40],"152":[2,40],"153":[2,40],"154":[2,40],"155":[2,40]},{"1":[2,41],"3":[2,41],"26":[2,41],"27":[2,41],"44":[2,41],"48":[2,41],"56":[2,41],"58":[2,41],"66":[2,41],"67":[2,41],"68":[2,41],"69":[2,41],"72":[2,41],"73":[2,41],"74":[2,41],"75":[2,41],"78":[2,41],"81":[2,41],"84":[2,41],"86":[2,41],"88":[2,41],"92":[2,41],"100":[2,41],"103":[2,41],"104":[2,41],"105":[2,41],"108":[2,41],"110":[2,41],"117":[2,41],"120":[2,41],"123":[2,41],"124":[2,41],"126":[2,41],"127":[2,41],"130":[2,41],"131":[2,41],"132":[2,41],"133":[2,41],"134":[2,41],"135":[2,41],"136":[2,41],"137":[2,41],"138":[2,41],"139":[2,41],"140":[2,41],"141":[2,41],"142":[2,41],"143":[2,41],"144":[2,41],"145":[2,41],"146":[2,41],"147":[2,41],"148":[2,41],"149":[2,41],"150":[2,41],"151":[2,41],"152":[2,41],"153":[2,41],"154":[2,41],"155":[2,41]},{"1":[2,42],"3":[2,42],"26":[2,42],"27":[2,42],"44":[2,42],"48":[2,42],"56":[2,42],"58":[2,42],"66":[2,42],"67":[2,42],"68":[2,42],"69":[2,42],"72":[2,42],"73":[2,42],"74":[2,42],"75":[2,42],"78":[2,42],"81":[2,42],"84":[2,42],"86":[2,42],"88":[2,42],"92":[2,42],"100":[2,42],"103":[2,42],"104":[2,42],"105":[2,42],"108":[2,42],"110":[2,42],"117":[2,42],"120":[2,42],"123":[2,42],"124":[2,42],"126":[2,42],"127":[2,42],"130":[2,42],"131":[2,42],"132":[2,42],"133":[2,42],"134":[2,42],"135":[2,42],"136":[2,42],"137":[2,42],"138":[2,42],"139":[2,42],"140":[2,42],"141":[2,42],"142":[2,42],"143":[2,42],"144":[2,42],"145":[2,42],"146":[2,42],"147":[2,42],"148":[2,42],"149":[2,42],"150":[2,42],"151":[2,42],"152":[2,42],"153":[2,42],"154":[2,42],"155":[2,42]},{"1":[2,43],"3":[2,43],"26":[2,43],"27":[2,43],"44":[2,43],"48":[2,43],"56":[2,43],"58":[2,43],"66":[2,43],"67":[2,43],"68":[2,43],"69":[2,43],"72":[2,43],"73":[2,43],"74":[2,43],"75":[2,43],"78":[2,43],"81":[2,43],"84":[2,43],"86":[2,43],"88":[2,43],"92":[2,43],"100":[2,43],"103":[2,43],"104":[2,43],"105":[2,43],"108":[2,43],"110":[2,43],"117":[2,43],"120":[2,43],"123":[2,43],"124":[2,43],"126":[2,43],"127":[2,43],"130":[2,43],"131":[2,43],"132":[2,43],"133":[2,43],"134":[2,43],"135":[2,43],"136":[2,43],"137":[2,43],"138":[2,43],"139":[2,43],"140":[2,43],"141":[2,43],"142":[2,43],"143":[2,43],"144":[2,43],"145":[2,43],"146":[2,43],"147":[2,43],"148":[2,43],"149":[2,43],"150":[2,43],"151":[2,43],"152":[2,43],"153":[2,43],"154":[2,43],"155":[2,43]},{"3":[2,107],"6":165,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":164,"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,107],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,85],"24":173,"26":[1,170],"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":169,"47":[1,55],"56":[2,85],"77":167,"78":[2,85],"79":168},{"6":174,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,100],"3":[2,100],"26":[2,100],"27":[2,100],"28":175,"29":[1,57],"44":[2,100],"48":[2,100],"56":[2,100],"58":[2,100],"66":[2,100],"67":[2,100],"68":[2,100],"69":[2,100],"72":[2,100],"73":[2,100],"74":[2,100],"75":[2,100],"78":[2,100],"81":[2,100],"84":[2,100],"86":[2,100],"88":[2,100],"92":[2,100],"100":[2,100],"103":[2,100],"104":[2,100],"105":[2,100],"108":[2,100],"110":[2,100],"117":[2,100],"120":[2,100],"123":[2,100],"124":[2,100],"126":[2,100],"127":[2,100],"130":[2,100],"131":[2,100],"132":[2,100],"133":[2,100],"134":[2,100],"135":[2,100],"136":[2,100],"137":[2,100],"138":[2,100],"139":[2,100],"140":[2,100],"141":[2,100],"142":[2,100],"143":[2,100],"144":[2,100],"145":[2,100],"146":[2,100],"147":[2,100],"148":[2,100],"149":[2,100],"150":[2,100],"151":[2,100],"152":[2,100],"153":[2,100],"154":[2,100],"155":[2,100]},{"86":[1,176]},{"3":[2,54],"26":[2,54]},{"3":[2,55],"26":[2,55]},{"1":[2,145],"3":[2,145],"26":[2,145],"27":[2,145],"48":[2,145],"56":[2,145],"58":[2,145],"73":[2,145],"75":[2,145],"78":[2,145],"88":[2,145],"92":[2,145],"100":[2,145],"103":[2,145],"104":[2,145],"105":[2,145],"108":[2,145],"110":[2,145],"113":[1,177],"117":[2,145],"118":178,"120":[2,145],"123":[2,145],"124":[2,145],"126":[2,145],"127":[2,145],"130":[2,145],"131":[2,145],"132":[2,145],"133":[2,145],"134":[2,145],"135":[2,145],"136":[2,145],"137":[2,145],"138":[2,145],"139":[2,145],"140":[2,145],"141":[2,145],"142":[2,145],"143":[2,145],"144":[2,145],"145":[2,145],"146":[2,145],"147":[2,145],"148":[2,145],"149":[2,145],"150":[2,145],"151":[2,145],"152":[2,145],"153":[2,145],"154":[2,145],"155":[2,145]},{"6":179,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,31],"3":[2,31],"26":[2,31],"27":[2,31],"44":[2,31],"48":[2,31],"56":[2,31],"58":[2,31],"66":[2,31],"67":[2,31],"68":[2,31],"69":[2,31],"72":[2,31],"73":[2,31],"74":[2,31],"75":[2,31],"78":[2,31],"81":[2,31],"84":[2,31],"86":[2,31],"88":[2,31],"92":[2,31],"100":[2,31],"103":[2,31],"104":[2,31],"105":[2,31],"108":[2,31],"110":[2,31],"117":[2,31],"120":[2,31],"123":[2,31],"124":[2,31],"126":[2,31],"127":[2,31],"130":[2,31],"131":[2,31],"132":[2,31],"133":[2,31],"134":[2,31],"135":[2,31],"136":[2,31],"137":[2,31],"138":[2,31],"139":[2,31],"140":[2,31],"141":[2,31],"142":[2,31],"143":[2,31],"144":[2,31],"145":[2,31],"146":[2,31],"147":[2,31],"148":[2,31],"149":[2,31],"150":[2,31],"151":[2,31],"152":[2,31],"153":[2,31],"154":[2,31],"155":[2,31]},{"1":[2,32],"3":[2,32],"26":[2,32],"27":[2,32],"44":[2,32],"48":[2,32],"56":[2,32],"58":[2,32],"66":[2,32],"67":[2,32],"68":[2,32],"69":[2,32],"72":[2,32],"73":[2,32],"74":[2,32],"75":[2,32],"78":[2,32],"81":[2,32],"84":[2,32],"86":[2,32],"88":[2,32],"92":[2,32],"100":[2,32],"103":[2,32],"104":[2,32],"105":[2,32],"108":[2,32],"110":[2,32],"117":[2,32],"120":[2,32],"123":[2,32],"124":[2,32],"126":[2,32],"127":[2,32],"130":[2,32],"131":[2,32],"132":[2,32],"133":[2,32],"134":[2,32],"135":[2,32],"136":[2,32],"137":[2,32],"138":[2,32],"139":[2,32],"140":[2,32],"141":[2,32],"142":[2,32],"143":[2,32],"144":[2,32],"145":[2,32],"146":[2,32],"147":[2,32],"148":[2,32],"149":[2,32],"150":[2,32],"151":[2,32],"152":[2,32],"153":[2,32],"154":[2,32],"155":[2,32]},{"6":180,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,29],"3":[2,29],"26":[2,29],"27":[2,29],"47":[2,29],"48":[2,29],"56":[2,29],"58":[2,29],"73":[2,29],"75":[2,29],"78":[2,29],"88":[2,29],"92":[2,29],"96":[2,29],"97":[2,29],"100":[2,29],"103":[2,29],"104":[2,29],"105":[2,29],"108":[2,29],"110":[2,29],"113":[2,29],"115":[2,29],"117":[2,29],"120":[2,29],"123":[2,29],"124":[2,29],"126":[2,29],"127":[2,29],"130":[2,29],"131":[2,29],"132":[2,29],"133":[2,29],"134":[2,29],"135":[2,29],"136":[2,29],"137":[2,29],"138":[2,29],"139":[2,29],"140":[2,29],"141":[2,29],"142":[2,29],"143":[2,29],"144":[2,29],"145":[2,29],"146":[2,29],"147":[2,29],"148":[2,29],"149":[2,29],"150":[2,29],"151":[2,29],"152":[2,29],"153":[2,29],"154":[2,29],"155":[2,29]},{"1":[2,7],"3":[2,7],"6":181,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[2,7],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,4]},{"1":[2,160],"3":[2,160],"26":[2,160],"27":[2,160],"48":[2,160],"56":[2,160],"58":[2,160],"73":[2,160],"75":[2,160],"78":[2,160],"88":[2,160],"92":[2,160],"100":[2,160],"103":[2,160],"104":[2,160],"105":[2,160],"108":[2,160],"110":[2,160],"117":[2,160],"120":[2,160],"123":[2,160],"124":[2,160],"126":[2,160],"127":[2,160],"130":[2,160],"131":[2,160],"132":[2,160],"133":[2,160],"134":[2,160],"135":[2,160],"136":[2,160],"137":[2,160],"138":[2,160],"139":[2,160],"140":[2,160],"141":[2,160],"142":[2,160],"143":[2,160],"144":[2,160],"145":[2,160],"146":[2,160],"147":[2,160],"148":[2,160],"149":[2,160],"150":[2,160],"151":[2,160],"152":[2,160],"153":[2,160],"154":[2,160],"155":[2,160]},{"1":[2,161],"3":[2,161],"26":[2,161],"27":[2,161],"48":[2,161],"56":[2,161],"58":[2,161],"73":[2,161],"75":[2,161],"78":[2,161],"88":[2,161],"92":[2,161],"100":[2,161],"103":[2,161],"104":[2,161],"105":[2,161],"108":[2,161],"110":[2,161],"117":[2,161],"120":[2,161],"123":[2,161],"124":[2,161],"126":[2,161],"127":[2,161],"130":[2,161],"131":[2,161],"132":[2,161],"133":[2,161],"134":[2,161],"135":[2,161],"136":[2,161],"137":[2,161],"138":[2,161],"139":[2,161],"140":[2,161],"141":[2,161],"142":[2,161],"143":[2,161],"144":[2,161],"145":[2,161],"146":[2,161],"147":[2,161],"148":[2,161],"149":[2,161],"150":[2,161],"151":[2,161],"152":[2,161],"153":[2,161],"154":[2,161],"155":[2,161]},{"6":182,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":183,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":184,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":185,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":186,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":187,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":188,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":189,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":190,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":191,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":192,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":193,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":194,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":195,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":196,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":197,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":198,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":199,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":200,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,51],"3":[2,51],"6":201,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[2,51],"27":[2,51],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,51],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,51],"58":[2,51],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,51],"75":[2,51],"76":[1,70],"78":[2,51],"80":[1,54],"82":[1,34],"83":35,"88":[2,51],"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,51],"94":[1,48],"98":[1,49],"99":[1,71],"100":[2,51],"101":[1,56],"102":51,"103":[2,51],"104":[2,51],"105":[2,51],"108":[2,51],"110":[2,51],"111":[1,53],"116":76,"117":[2,51],"119":47,"120":[2,51],"121":[1,38],"122":[1,39],"123":[2,51],"124":[2,51],"125":[1,42],"126":[2,51],"127":[2,51],"128":[1,45],"129":[1,46],"130":[2,51],"131":[2,51],"132":[2,51],"133":[2,51],"134":[2,51],"135":[2,51],"136":[2,51],"137":[2,51],"138":[2,51],"139":[2,51],"140":[2,51],"141":[2,51],"142":[2,51],"143":[2,51],"144":[2,51],"145":[2,51],"146":[2,51],"147":[2,51],"148":[2,51],"149":[2,51],"150":[2,51],"151":[2,51],"152":[2,51],"153":[2,51],"154":[2,51],"155":[2,51]},{"6":202,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":203,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":204,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":205,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":206,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":207,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":208,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":209,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":210,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":211,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":212,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":213,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,127],"3":[2,127],"26":[2,127],"27":[2,127],"48":[2,127],"56":[2,127],"58":[2,127],"73":[2,127],"75":[2,127],"78":[2,127],"88":[2,127],"92":[2,127],"100":[2,127],"103":[2,127],"104":[2,127],"105":[2,127],"108":[2,127],"110":[2,127],"117":[2,127],"120":[2,127],"123":[2,127],"124":[2,127],"126":[2,127],"127":[2,127],"130":[2,127],"131":[2,127],"132":[2,127],"133":[2,127],"134":[2,127],"135":[2,127],"136":[2,127],"137":[2,127],"138":[2,127],"139":[2,127],"140":[2,127],"141":[2,127],"142":[2,127],"143":[2,127],"144":[2,127],"145":[2,127],"146":[2,127],"147":[2,127],"148":[2,127],"149":[2,127],"150":[2,127],"151":[2,127],"152":[2,127],"153":[2,127],"154":[2,127],"155":[2,127]},{"28":160,"29":[1,57],"106":214},{"58":[1,215]},{"3":[1,82],"27":[1,216]},{"1":[2,28],"3":[2,28],"26":[2,28],"27":[2,28],"47":[2,28],"48":[2,28],"56":[2,28],"58":[2,28],"73":[2,28],"75":[2,28],"78":[2,28],"88":[2,28],"92":[2,28],"96":[2,28],"97":[2,28],"100":[2,28],"103":[2,28],"104":[2,28],"105":[2,28],"108":[2,28],"110":[2,28],"113":[2,28],"115":[2,28],"117":[2,28],"120":[2,28],"123":[2,28],"124":[2,28],"126":[2,28],"127":[2,28],"130":[2,28],"131":[2,28],"132":[2,28],"133":[2,28],"134":[2,28],"135":[2,28],"136":[2,28],"137":[2,28],"138":[2,28],"139":[2,28],"140":[2,28],"141":[2,28],"142":[2,28],"143":[2,28],"144":[2,28],"145":[2,28],"146":[2,28],"147":[2,28],"148":[2,28],"149":[2,28],"150":[2,28],"151":[2,28],"152":[2,28],"153":[2,28],"154":[2,28],"155":[2,28]},{"1":[2,69],"3":[2,69],"26":[2,69],"27":[2,69],"44":[2,69],"48":[2,69],"56":[2,69],"58":[2,69],"66":[2,69],"67":[2,69],"68":[2,69],"69":[2,69],"72":[2,69],"73":[2,69],"74":[2,69],"75":[2,69],"78":[2,69],"81":[2,69],"84":[2,69],"86":[2,69],"88":[2,69],"92":[2,69],"100":[2,69],"103":[2,69],"104":[2,69],"105":[2,69],"108":[2,69],"110":[2,69],"117":[2,69],"120":[2,69],"123":[2,69],"124":[2,69],"126":[2,69],"127":[2,69],"130":[2,69],"131":[2,69],"132":[2,69],"133":[2,69],"134":[2,69],"135":[2,69],"136":[2,69],"137":[2,69],"138":[2,69],"139":[2,69],"140":[2,69],"141":[2,69],"142":[2,69],"143":[2,69],"144":[2,69],"145":[2,69],"146":[2,69],"147":[2,69],"148":[2,69],"149":[2,69],"150":[2,69],"151":[2,69],"152":[2,69],"153":[2,69],"154":[2,69],"155":[2,69]},{"85":217,"86":[1,134]},{"6":218,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"7":219,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,96],"3":[2,96],"26":[2,96],"27":[2,96],"48":[2,96],"56":[2,96],"58":[2,96],"66":[2,96],"67":[2,96],"68":[2,96],"69":[2,96],"72":[2,96],"73":[2,96],"74":[2,96],"75":[2,96],"78":[2,96],"86":[2,96],"88":[2,96],"92":[2,96],"100":[2,96],"103":[2,96],"104":[2,96],"105":[2,96],"108":[2,96],"110":[2,96],"117":[2,96],"120":[2,96],"123":[2,96],"124":[2,96],"126":[2,96],"127":[2,96],"130":[2,96],"131":[2,96],"132":[2,96],"133":[2,96],"134":[2,96],"135":[2,96],"136":[2,96],"137":[2,96],"138":[2,96],"139":[2,96],"140":[2,96],"141":[2,96],"142":[2,96],"143":[2,96],"144":[2,96],"145":[2,96],"146":[2,96],"147":[2,96],"148":[2,96],"149":[2,96],"150":[2,96],"151":[2,96],"152":[2,96],"153":[2,96],"154":[2,96],"155":[2,96]},{"28":220,"29":[1,57]},{"28":221,"29":[1,57]},{"1":[2,73],"3":[2,73],"26":[2,73],"27":[2,73],"44":[2,73],"48":[2,73],"56":[2,73],"58":[2,73],"66":[2,73],"67":[2,73],"68":[2,73],"69":[2,73],"72":[2,73],"73":[2,73],"74":[2,73],"75":[2,73],"78":[2,73],"81":[2,73],"84":[2,73],"86":[2,73],"88":[2,73],"92":[2,73],"100":[2,73],"103":[2,73],"104":[2,73],"105":[2,73],"108":[2,73],"110":[2,73],"117":[2,73],"120":[2,73],"123":[2,73],"124":[2,73],"126":[2,73],"127":[2,73],"130":[2,73],"131":[2,73],"132":[2,73],"133":[2,73],"134":[2,73],"135":[2,73],"136":[2,73],"137":[2,73],"138":[2,73],"139":[2,73],"140":[2,73],"141":[2,73],"142":[2,73],"143":[2,73],"144":[2,73],"145":[2,73],"146":[2,73],"147":[2,73],"148":[2,73],"149":[2,73],"150":[2,73],"151":[2,73],"152":[2,73],"153":[2,73],"154":[2,73],"155":[2,73]},{"28":222,"29":[1,57]},{"1":[2,75],"3":[2,75],"26":[2,75],"27":[2,75],"44":[2,75],"48":[2,75],"56":[2,75],"58":[2,75],"66":[2,75],"67":[2,75],"68":[2,75],"69":[2,75],"72":[2,75],"73":[2,75],"74":[2,75],"75":[2,75],"78":[2,75],"81":[2,75],"84":[2,75],"86":[2,75],"88":[2,75],"92":[2,75],"100":[2,75],"103":[2,75],"104":[2,75],"105":[2,75],"108":[2,75],"110":[2,75],"117":[2,75],"120":[2,75],"123":[2,75],"124":[2,75],"126":[2,75],"127":[2,75],"130":[2,75],"131":[2,75],"132":[2,75],"133":[2,75],"134":[2,75],"135":[2,75],"136":[2,75],"137":[2,75],"138":[2,75],"139":[2,75],"140":[2,75],"141":[2,75],"142":[2,75],"143":[2,75],"144":[2,75],"145":[2,75],"146":[2,75],"147":[2,75],"148":[2,75],"149":[2,75],"150":[2,75],"151":[2,75],"152":[2,75],"153":[2,75],"154":[2,75],"155":[2,75]},{"1":[2,76],"3":[2,76],"26":[2,76],"27":[2,76],"44":[2,76],"48":[2,76],"56":[2,76],"58":[2,76],"66":[2,76],"67":[2,76],"68":[2,76],"69":[2,76],"72":[2,76],"73":[2,76],"74":[2,76],"75":[2,76],"78":[2,76],"81":[2,76],"84":[2,76],"86":[2,76],"88":[2,76],"92":[2,76],"100":[2,76],"103":[2,76],"104":[2,76],"105":[2,76],"108":[2,76],"110":[2,76],"117":[2,76],"120":[2,76],"123":[2,76],"124":[2,76],"126":[2,76],"127":[2,76],"130":[2,76],"131":[2,76],"132":[2,76],"133":[2,76],"134":[2,76],"135":[2,76],"136":[2,76],"137":[2,76],"138":[2,76],"139":[2,76],"140":[2,76],"141":[2,76],"142":[2,76],"143":[2,76],"144":[2,76],"145":[2,76],"146":[2,76],"147":[2,76],"148":[2,76],"149":[2,76],"150":[2,76],"151":[2,76],"152":[2,76],"153":[2,76],"154":[2,76],"155":[2,76]},{"3":[2,107],"6":224,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":223,"88":[2,107],"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":225,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":226,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,70],"3":[2,70],"26":[2,70],"27":[2,70],"44":[2,70],"48":[2,70],"56":[2,70],"58":[2,70],"66":[2,70],"67":[2,70],"68":[2,70],"69":[2,70],"72":[2,70],"73":[2,70],"74":[2,70],"75":[2,70],"78":[2,70],"81":[2,70],"84":[2,70],"86":[2,70],"88":[2,70],"92":[2,70],"100":[2,70],"103":[2,70],"104":[2,70],"105":[2,70],"108":[2,70],"110":[2,70],"117":[2,70],"120":[2,70],"123":[2,70],"124":[2,70],"126":[2,70],"127":[2,70],"130":[2,70],"131":[2,70],"132":[2,70],"133":[2,70],"134":[2,70],"135":[2,70],"136":[2,70],"137":[2,70],"138":[2,70],"139":[2,70],"140":[2,70],"141":[2,70],"142":[2,70],"143":[2,70],"144":[2,70],"145":[2,70],"146":[2,70],"147":[2,70],"148":[2,70],"149":[2,70],"150":[2,70],"151":[2,70],"152":[2,70],"153":[2,70],"154":[2,70],"155":[2,70]},{"1":[2,97],"3":[2,97],"26":[2,97],"27":[2,97],"48":[2,97],"56":[2,97],"58":[2,97],"66":[2,97],"67":[2,97],"68":[2,97],"69":[2,97],"72":[2,97],"73":[2,97],"74":[2,97],"75":[2,97],"78":[2,97],"86":[2,97],"88":[2,97],"92":[2,97],"100":[2,97],"103":[2,97],"104":[2,97],"105":[2,97],"108":[2,97],"110":[2,97],"117":[2,97],"120":[2,97],"123":[2,97],"124":[2,97],"126":[2,97],"127":[2,97],"130":[2,97],"131":[2,97],"132":[2,97],"133":[2,97],"134":[2,97],"135":[2,97],"136":[2,97],"137":[2,97],"138":[2,97],"139":[2,97],"140":[2,97],"141":[2,97],"142":[2,97],"143":[2,97],"144":[2,97],"145":[2,97],"146":[2,97],"147":[2,97],"148":[2,97],"149":[2,97],"150":[2,97],"151":[2,97],"152":[2,97],"153":[2,97],"154":[2,97],"155":[2,97]},{"1":[2,92],"3":[2,92],"26":[2,92],"27":[2,92],"48":[2,92],"56":[2,92],"58":[2,92],"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,92],"74":[1,136],"75":[2,92],"78":[2,92],"85":138,"86":[1,134],"88":[2,92],"92":[2,92],"100":[2,92],"103":[2,92],"104":[2,92],"105":[2,92],"108":[2,92],"110":[2,92],"117":[2,92],"120":[2,92],"123":[2,92],"124":[2,92],"126":[2,92],"127":[2,92],"130":[2,92],"131":[2,92],"132":[2,92],"133":[2,92],"134":[2,92],"135":[2,92],"136":[2,92],"137":[2,92],"138":[2,92],"139":[2,92],"140":[2,92],"141":[2,92],"142":[2,92],"143":[2,92],"144":[2,92],"145":[2,92],"146":[2,92],"147":[2,92],"148":[2,92],"149":[2,92],"150":[2,92],"151":[2,92],"152":[2,92],"153":[2,92],"154":[2,92],"155":[2,92]},{"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"74":[1,136],"85":127,"86":[1,134]},{"51":[1,227],"56":[1,228]},{"51":[2,57],"56":[2,57],"58":[1,229]},{"51":[2,59],"56":[2,59],"58":[2,59]},{"1":[2,53],"3":[2,53],"26":[2,53],"27":[2,53],"48":[2,53],"56":[2,53],"58":[2,53],"73":[2,53],"75":[2,53],"78":[2,53],"88":[2,53],"92":[2,53],"100":[2,53],"103":[2,53],"104":[2,53],"105":[2,53],"108":[2,53],"110":[2,53],"117":[2,53],"120":[2,53],"123":[2,53],"124":[2,53],"126":[2,53],"127":[2,53],"130":[2,53],"131":[2,53],"132":[2,53],"133":[2,53],"134":[2,53],"135":[2,53],"136":[2,53],"137":[2,53],"138":[2,53],"139":[2,53],"140":[2,53],"141":[2,53],"142":[2,53],"143":[2,53],"144":[2,53],"145":[2,53],"146":[2,53],"147":[2,53],"148":[2,53],"149":[2,53],"150":[2,53],"151":[2,53],"152":[2,53],"153":[2,53],"154":[2,53],"155":[2,53]},{"24":81,"47":[1,55]},{"1":[2,151],"3":[2,151],"26":[2,151],"27":[2,151],"48":[1,105],"56":[2,151],"58":[2,151],"73":[2,151],"75":[2,151],"78":[2,151],"88":[2,151],"92":[2,151],"100":[2,151],"102":118,"103":[2,151],"104":[2,151],"105":[2,151],"108":[2,151],"110":[2,151],"117":[2,151],"120":[2,151],"123":[2,151],"124":[2,151],"130":[2,151],"131":[2,151],"132":[2,151],"133":[2,151],"134":[2,151],"135":[2,151],"136":[2,151],"137":[2,151],"138":[2,151],"139":[2,151],"140":[2,151],"141":[2,151],"142":[2,151],"143":[2,151],"144":[2,151],"145":[2,151],"146":[2,151],"147":[2,151],"148":[2,151],"149":[2,151],"150":[2,151],"151":[2,151],"152":[2,151],"153":[2,151],"154":[2,151],"155":[2,151]},{"1":[2,152],"3":[2,152],"26":[2,152],"27":[2,152],"48":[1,105],"56":[2,152],"58":[2,152],"73":[2,152],"75":[2,152],"78":[2,152],"88":[2,152],"92":[2,152],"100":[2,152],"102":118,"103":[2,152],"104":[2,152],"105":[2,152],"108":[2,152],"110":[2,152],"117":[2,152],"120":[2,152],"123":[2,152],"124":[2,152],"130":[2,152],"131":[2,152],"132":[2,152],"133":[2,152],"134":[2,152],"135":[2,152],"136":[2,152],"137":[2,152],"138":[2,152],"139":[2,152],"140":[2,152],"141":[2,152],"142":[2,152],"143":[2,152],"144":[2,152],"145":[2,152],"146":[2,152],"147":[2,152],"148":[2,152],"149":[2,152],"150":[2,152],"151":[2,152],"152":[2,152],"153":[2,152],"154":[2,152],"155":[2,152]},{"1":[2,153],"3":[2,153],"26":[2,153],"27":[2,153],"48":[1,105],"56":[2,153],"58":[2,153],"73":[2,153],"75":[2,153],"78":[2,153],"88":[2,153],"92":[2,153],"100":[2,153],"102":118,"103":[2,153],"104":[2,153],"105":[2,153],"108":[2,153],"110":[2,153],"117":[2,153],"120":[2,153],"123":[2,153],"124":[2,153],"130":[2,153],"131":[2,153],"132":[2,153],"133":[2,153],"134":[2,153],"135":[2,153],"136":[2,153],"137":[2,153],"138":[2,153],"139":[2,153],"140":[2,153],"141":[2,153],"142":[2,153],"143":[2,153],"144":[2,153],"145":[2,153],"146":[2,153],"147":[2,153],"148":[2,153],"149":[2,153],"150":[2,153],"151":[2,153],"152":[2,153],"153":[2,153],"154":[2,153],"155":[2,153]},{"1":[2,154],"3":[2,154],"26":[2,154],"27":[2,154],"48":[1,105],"56":[2,154],"58":[2,154],"73":[2,154],"75":[2,154],"78":[2,154],"88":[2,154],"92":[2,154],"100":[2,154],"102":118,"103":[2,154],"104":[2,154],"105":[2,154],"108":[2,154],"110":[2,154],"117":[2,154],"120":[2,154],"123":[2,154],"124":[2,154],"130":[2,154],"131":[2,154],"132":[2,154],"133":[2,154],"134":[2,154],"135":[2,154],"136":[2,154],"137":[2,154],"138":[2,154],"139":[2,154],"140":[2,154],"141":[2,154],"142":[2,154],"143":[2,154],"144":[2,154],"145":[2,154],"146":[2,154],"147":[2,154],"148":[2,154],"149":[2,154],"150":[2,154],"151":[2,154],"152":[2,154],"153":[2,154],"154":[2,154],"155":[2,154]},{"1":[2,155],"3":[2,155],"26":[2,155],"27":[2,155],"48":[1,105],"56":[2,155],"58":[2,155],"73":[2,155],"75":[2,155],"78":[2,155],"88":[2,155],"92":[2,155],"100":[2,155],"102":118,"103":[2,155],"104":[2,155],"105":[2,155],"108":[2,155],"110":[2,155],"117":[2,155],"120":[2,155],"123":[2,155],"124":[2,155],"130":[2,155],"131":[2,155],"132":[2,155],"133":[2,155],"134":[2,155],"135":[2,155],"136":[2,155],"137":[2,155],"138":[2,155],"139":[2,155],"140":[2,155],"141":[2,155],"142":[2,155],"143":[2,155],"144":[2,155],"145":[2,155],"146":[2,155],"147":[2,155],"148":[2,155],"149":[2,155],"150":[2,155],"151":[2,155],"152":[2,155],"153":[2,155],"154":[2,155],"155":[2,155]},{"1":[2,156],"3":[2,156],"26":[2,156],"27":[2,156],"48":[1,105],"56":[2,156],"58":[2,156],"73":[2,156],"75":[2,156],"78":[2,156],"88":[2,156],"92":[2,156],"100":[2,156],"102":118,"103":[2,156],"104":[2,156],"105":[2,156],"108":[2,156],"110":[2,156],"117":[2,156],"120":[2,156],"123":[2,156],"124":[2,156],"130":[2,156],"131":[2,156],"132":[2,156],"133":[2,156],"134":[2,156],"135":[2,156],"136":[2,156],"137":[2,156],"138":[2,156],"139":[2,156],"140":[2,156],"141":[2,156],"142":[2,156],"143":[2,156],"144":[2,156],"145":[2,156],"146":[2,156],"147":[2,156],"148":[2,156],"149":[2,156],"150":[2,156],"151":[2,156],"152":[2,156],"153":[2,156],"154":[2,156],"155":[2,156]},{"1":[2,157],"3":[2,157],"26":[2,157],"27":[2,157],"48":[1,105],"56":[2,157],"58":[2,157],"73":[2,157],"75":[2,157],"78":[2,157],"88":[2,157],"92":[2,157],"100":[2,157],"102":118,"103":[2,157],"104":[2,157],"105":[2,157],"108":[2,157],"110":[2,157],"117":[2,157],"120":[2,157],"123":[2,157],"124":[2,157],"130":[2,157],"131":[2,157],"132":[2,157],"133":[2,157],"134":[2,157],"135":[2,157],"136":[2,157],"137":[2,157],"138":[2,157],"139":[2,157],"140":[2,157],"141":[2,157],"142":[2,157],"143":[2,157],"144":[2,157],"145":[2,157],"146":[2,157],"147":[2,157],"148":[2,157],"149":[2,157],"150":[2,157],"151":[2,157],"152":[2,157],"153":[2,157],"154":[2,157],"155":[2,157]},{"1":[2,158],"3":[2,158],"26":[2,158],"27":[2,158],"48":[1,105],"56":[2,158],"58":[2,158],"73":[2,158],"75":[2,158],"78":[2,158],"88":[2,158],"92":[2,158],"100":[2,158],"102":118,"103":[2,158],"104":[2,158],"105":[2,158],"108":[2,158],"110":[2,158],"117":[2,158],"120":[2,158],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,158],"144":[2,158],"145":[2,158],"146":[2,158],"147":[2,158],"148":[2,158],"149":[2,158],"150":[2,158],"151":[2,158],"152":[2,158],"153":[2,158],"154":[2,158],"155":[1,114]},{"1":[2,159],"3":[2,159],"26":[2,159],"27":[2,159],"48":[1,105],"56":[2,159],"58":[2,159],"73":[2,159],"75":[2,159],"78":[2,159],"88":[2,159],"92":[2,159],"100":[2,159],"102":118,"103":[2,159],"104":[2,159],"105":[2,159],"108":[2,159],"110":[2,159],"117":[2,159],"120":[2,159],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,159],"144":[2,159],"145":[2,159],"146":[2,159],"147":[2,159],"148":[2,159],"149":[2,159],"150":[2,159],"151":[2,159],"152":[2,159],"153":[2,159],"154":[2,159],"155":[1,114]},{"95":230,"96":[1,231],"97":[1,232]},{"1":[2,121],"3":[2,121],"26":[2,121],"27":[2,121],"48":[1,105],"56":[2,121],"58":[1,120],"73":[2,121],"75":[2,121],"78":[2,121],"88":[2,121],"92":[2,121],"100":[2,121],"102":118,"103":[2,121],"104":[2,121],"105":[2,121],"108":[1,115],"110":[2,121],"117":[2,121],"120":[2,121],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,48],"3":[2,48],"26":[2,48],"27":[2,48],"48":[1,105],"56":[2,48],"58":[1,120],"73":[2,48],"75":[2,48],"78":[2,48],"88":[2,48],"92":[2,48],"100":[2,48],"102":118,"103":[2,48],"104":[2,48],"105":[1,119],"108":[1,115],"110":[2,48],"117":[2,48],"120":[2,48],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,126],"3":[2,126],"26":[2,126],"27":[2,126],"48":[2,126],"56":[2,126],"58":[2,126],"73":[2,126],"75":[2,126],"78":[2,126],"88":[2,126],"92":[2,126],"100":[2,126],"103":[2,126],"104":[2,126],"105":[2,126],"108":[2,126],"110":[2,126],"117":[2,126],"120":[2,126],"123":[2,126],"124":[2,126],"126":[2,126],"127":[2,126],"130":[2,126],"131":[2,126],"132":[2,126],"133":[2,126],"134":[2,126],"135":[2,126],"136":[2,126],"137":[2,126],"138":[2,126],"139":[2,126],"140":[2,126],"141":[2,126],"142":[2,126],"143":[2,126],"144":[2,126],"145":[2,126],"146":[2,126],"147":[2,126],"148":[2,126],"149":[2,126],"150":[2,126],"151":[2,126],"152":[2,126],"153":[2,126],"154":[2,126],"155":[2,126]},{"107":233,"108":[1,234],"109":[1,235]},{"56":[1,236],"108":[2,130],"109":[2,130]},{"26":[1,237],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,81],"3":[2,81],"26":[1,170],"27":[2,81],"48":[2,81],"56":[2,81],"58":[2,81],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,81],"74":[1,136],"75":[2,81],"78":[2,81],"79":239,"81":[1,238],"85":127,"86":[1,134],"88":[2,81],"92":[2,81],"100":[2,81],"103":[2,81],"104":[2,81],"105":[2,81],"108":[2,81],"110":[2,81],"117":[2,81],"120":[2,81],"123":[2,81],"124":[2,81],"126":[2,81],"127":[2,81],"130":[2,81],"131":[2,81],"132":[2,81],"133":[2,81],"134":[2,81],"135":[2,81],"136":[2,81],"137":[2,81],"138":[2,81],"139":[2,81],"140":[2,81],"141":[2,81],"142":[2,81],"143":[2,81],"144":[2,81],"145":[2,81],"146":[2,81],"147":[2,81],"148":[2,81],"149":[2,81],"150":[2,81],"151":[2,81],"152":[2,81],"153":[2,81],"154":[2,81],"155":[2,81]},{"64":137,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"74":[1,136],"85":138,"86":[1,134]},{"3":[1,242],"27":[1,243],"56":[1,241],"92":[1,240]},{"3":[2,108],"27":[2,108],"48":[1,105],"56":[2,108],"58":[1,244],"92":[2,108],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":245,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,248],"56":[1,247],"78":[1,246]},{"78":[1,249]},{"3":[2,86],"27":[2,86],"56":[2,86],"78":[2,86]},{"3":[2,85],"24":173,"27":[2,85],"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":169,"47":[1,55],"56":[2,85],"77":250},{"44":[1,251]},{"44":[1,252]},{"3":[2,47],"27":[2,47],"56":[2,47],"78":[2,47]},{"48":[1,105],"58":[1,120],"100":[1,253],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,101],"3":[2,101],"26":[2,101],"27":[2,101],"44":[2,101],"48":[2,101],"56":[2,101],"58":[2,101],"66":[2,101],"67":[2,101],"68":[2,101],"69":[2,101],"72":[2,101],"73":[2,101],"74":[2,101],"75":[2,101],"78":[2,101],"81":[2,101],"84":[2,101],"86":[2,101],"88":[2,101],"92":[2,101],"100":[2,101],"103":[2,101],"104":[2,101],"105":[2,101],"108":[2,101],"110":[2,101],"117":[2,101],"120":[2,101],"123":[2,101],"124":[2,101],"126":[2,101],"127":[2,101],"130":[2,101],"131":[2,101],"132":[2,101],"133":[2,101],"134":[2,101],"135":[2,101],"136":[2,101],"137":[2,101],"138":[2,101],"139":[2,101],"140":[2,101],"141":[2,101],"142":[2,101],"143":[2,101],"144":[2,101],"145":[2,101],"146":[2,101],"147":[2,101],"148":[2,101],"149":[2,101],"150":[2,101],"151":[2,101],"152":[2,101],"153":[2,101],"154":[2,101],"155":[2,101]},{"3":[2,107],"6":224,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,166],"27":[2,107],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,107],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"87":254,"88":[2,107],"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,145],"5":255,"26":[1,6],"117":[1,256]},{"1":[2,144],"3":[2,144],"26":[2,144],"27":[2,144],"48":[2,144],"56":[2,144],"58":[2,144],"73":[2,144],"75":[2,144],"78":[2,144],"88":[2,144],"92":[2,144],"100":[2,144],"103":[2,144],"104":[2,144],"105":[2,144],"108":[2,144],"110":[2,144],"113":[2,144],"117":[2,144],"120":[2,144],"123":[2,144],"124":[2,144],"126":[2,144],"127":[2,144],"130":[2,144],"131":[2,144],"132":[2,144],"133":[2,144],"134":[2,144],"135":[2,144],"136":[2,144],"137":[2,144],"138":[2,144],"139":[2,144],"140":[2,144],"141":[2,144],"142":[2,144],"143":[2,144],"144":[2,144],"145":[2,144],"146":[2,144],"147":[2,144],"148":[2,144],"149":[2,144],"150":[2,144],"151":[2,144],"152":[2,144],"153":[2,144],"154":[2,144],"155":[2,144]},{"1":[2,124],"3":[2,124],"26":[2,124],"27":[2,124],"48":[1,105],"56":[2,124],"58":[1,120],"73":[2,124],"75":[2,124],"78":[2,124],"88":[2,124],"92":[2,124],"100":[2,124],"102":118,"103":[1,77],"104":[1,257],"105":[1,119],"108":[1,115],"110":[2,124],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[1,145],"5":258,"26":[1,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,6],"3":[2,6],"27":[2,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,162],"3":[2,162],"26":[2,162],"27":[2,162],"48":[1,105],"56":[2,162],"58":[2,162],"73":[2,162],"75":[2,162],"78":[2,162],"88":[2,162],"92":[2,162],"100":[2,162],"102":118,"103":[2,162],"104":[2,162],"105":[2,162],"108":[2,162],"110":[2,162],"117":[2,162],"120":[2,162],"123":[2,162],"124":[2,162],"126":[1,84],"127":[1,85],"130":[2,162],"131":[2,162],"132":[2,162],"133":[2,162],"134":[2,162],"135":[2,162],"136":[2,162],"137":[2,162],"138":[2,162],"139":[2,162],"140":[2,162],"141":[2,162],"142":[2,162],"143":[2,162],"144":[2,162],"145":[2,162],"146":[2,162],"147":[2,162],"148":[2,162],"149":[2,162],"150":[2,162],"151":[2,162],"152":[2,162],"153":[2,162],"154":[2,162],"155":[2,162]},{"1":[2,163],"3":[2,163],"26":[2,163],"27":[2,163],"48":[1,105],"56":[2,163],"58":[2,163],"73":[2,163],"75":[2,163],"78":[2,163],"88":[2,163],"92":[2,163],"100":[2,163],"102":118,"103":[2,163],"104":[2,163],"105":[2,163],"108":[2,163],"110":[2,163],"117":[2,163],"120":[2,163],"123":[2,163],"124":[2,163],"126":[1,84],"127":[1,85],"130":[2,163],"131":[2,163],"132":[2,163],"133":[2,163],"134":[2,163],"135":[2,163],"136":[2,163],"137":[2,163],"138":[2,163],"139":[2,163],"140":[2,163],"141":[2,163],"142":[2,163],"143":[2,163],"144":[2,163],"145":[2,163],"146":[2,163],"147":[2,163],"148":[2,163],"149":[2,163],"150":[2,163],"151":[2,163],"152":[2,163],"153":[2,163],"154":[2,163],"155":[2,163]},{"1":[2,164],"3":[2,164],"26":[2,164],"27":[2,164],"48":[1,105],"56":[2,164],"58":[2,164],"73":[2,164],"75":[2,164],"78":[2,164],"88":[2,164],"92":[2,164],"100":[2,164],"102":118,"103":[2,164],"104":[2,164],"105":[2,164],"108":[2,164],"110":[2,164],"117":[2,164],"120":[2,164],"123":[2,164],"124":[2,164],"126":[1,84],"127":[1,85],"130":[2,164],"131":[2,164],"132":[2,164],"133":[2,164],"134":[2,164],"135":[2,164],"136":[2,164],"137":[2,164],"138":[2,164],"139":[2,164],"140":[2,164],"141":[2,164],"142":[2,164],"143":[2,164],"144":[2,164],"145":[2,164],"146":[2,164],"147":[2,164],"148":[2,164],"149":[2,164],"150":[2,164],"151":[2,164],"152":[2,164],"153":[2,164],"154":[2,164],"155":[2,164]},{"1":[2,165],"3":[2,165],"26":[2,165],"27":[2,165],"48":[1,105],"56":[2,165],"58":[2,165],"73":[2,165],"75":[2,165],"78":[2,165],"88":[2,165],"92":[2,165],"100":[2,165],"102":118,"103":[2,165],"104":[2,165],"105":[2,165],"108":[2,165],"110":[2,165],"117":[2,165],"120":[2,165],"123":[2,165],"124":[2,165],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,165],"134":[2,165],"135":[2,165],"136":[2,165],"137":[2,165],"138":[2,165],"139":[2,165],"140":[2,165],"141":[2,165],"142":[2,165],"143":[2,165],"144":[2,165],"145":[2,165],"146":[2,165],"147":[2,165],"148":[2,165],"149":[2,165],"150":[2,165],"151":[2,165],"152":[2,165],"153":[2,165],"154":[2,165],"155":[2,165]},{"1":[2,166],"3":[2,166],"26":[2,166],"27":[2,166],"48":[1,105],"56":[2,166],"58":[2,166],"73":[2,166],"75":[2,166],"78":[2,166],"88":[2,166],"92":[2,166],"100":[2,166],"102":118,"103":[2,166],"104":[2,166],"105":[2,166],"108":[2,166],"110":[2,166],"117":[2,166],"120":[2,166],"123":[2,166],"124":[2,166],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,166],"134":[2,166],"135":[2,166],"136":[2,166],"137":[2,166],"138":[2,166],"139":[2,166],"140":[2,166],"141":[2,166],"142":[2,166],"143":[2,166],"144":[2,166],"145":[2,166],"146":[2,166],"147":[2,166],"148":[2,166],"149":[2,166],"150":[2,166],"151":[2,166],"152":[2,166],"153":[2,166],"154":[2,166],"155":[2,166]},{"1":[2,167],"3":[2,167],"26":[2,167],"27":[2,167],"48":[1,105],"56":[2,167],"58":[2,167],"73":[2,167],"75":[2,167],"78":[2,167],"88":[2,167],"92":[2,167],"100":[2,167],"102":118,"103":[2,167],"104":[2,167],"105":[2,167],"108":[2,167],"110":[2,167],"117":[2,167],"120":[2,167],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,167],"134":[2,167],"135":[2,167],"136":[2,167],"137":[2,167],"138":[2,167],"139":[2,167],"140":[2,167],"141":[2,167],"142":[2,167],"143":[2,167],"144":[2,167],"145":[2,167],"146":[2,167],"147":[2,167],"148":[2,167],"149":[2,167],"150":[2,167],"151":[2,167],"152":[2,167],"153":[2,167],"154":[2,167],"155":[2,167]},{"1":[2,168],"3":[2,168],"26":[2,168],"27":[2,168],"48":[1,105],"56":[2,168],"58":[2,168],"73":[2,168],"75":[2,168],"78":[2,168],"88":[2,168],"92":[2,168],"100":[2,168],"102":118,"103":[2,168],"104":[2,168],"105":[2,168],"108":[2,168],"110":[2,168],"117":[2,168],"120":[2,168],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,168],"134":[2,168],"135":[2,168],"136":[2,168],"137":[2,168],"138":[2,168],"139":[2,168],"140":[2,168],"141":[2,168],"142":[2,168],"143":[2,168],"144":[2,168],"145":[2,168],"146":[2,168],"147":[2,168],"148":[2,168],"149":[2,168],"150":[2,168],"151":[2,168],"152":[2,168],"153":[2,168],"154":[2,168],"155":[2,168]},{"1":[2,169],"3":[2,169],"26":[2,169],"27":[2,169],"48":[1,105],"56":[2,169],"58":[2,169],"73":[2,169],"75":[2,169],"78":[2,169],"88":[2,169],"92":[2,169],"100":[2,169],"102":118,"103":[2,169],"104":[2,169],"105":[2,169],"108":[2,169],"110":[2,169],"117":[2,169],"120":[2,169],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[2,169],"134":[2,169],"135":[2,169],"136":[2,169],"137":[2,169],"138":[2,169],"139":[2,169],"140":[2,169],"141":[2,169],"142":[2,169],"143":[2,169],"144":[2,169],"145":[2,169],"146":[2,169],"147":[2,169],"148":[2,169],"149":[2,169],"150":[2,169],"151":[2,169],"152":[2,169],"153":[2,169],"154":[2,169],"155":[2,169]},{"1":[2,170],"3":[2,170],"26":[2,170],"27":[2,170],"48":[1,105],"56":[2,170],"58":[2,170],"73":[2,170],"75":[2,170],"78":[2,170],"88":[2,170],"92":[2,170],"100":[2,170],"102":118,"103":[2,170],"104":[2,170],"105":[2,170],"108":[2,170],"110":[2,170],"117":[2,170],"120":[2,170],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,170],"137":[2,170],"138":[2,170],"139":[2,170],"140":[2,170],"141":[2,170],"142":[2,170],"143":[2,170],"144":[2,170],"145":[2,170],"146":[2,170],"147":[2,170],"148":[2,170],"149":[2,170],"150":[2,170],"151":[2,170],"152":[2,170],"153":[2,170],"154":[2,170],"155":[2,170]},{"1":[2,171],"3":[2,171],"26":[2,171],"27":[2,171],"48":[1,105],"56":[2,171],"58":[2,171],"73":[2,171],"75":[2,171],"78":[2,171],"88":[2,171],"92":[2,171],"100":[2,171],"102":118,"103":[2,171],"104":[2,171],"105":[2,171],"108":[2,171],"110":[2,171],"117":[2,171],"120":[2,171],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,171],"137":[2,171],"138":[2,171],"139":[2,171],"140":[2,171],"141":[2,171],"142":[2,171],"143":[2,171],"144":[2,171],"145":[2,171],"146":[2,171],"147":[2,171],"148":[2,171],"149":[2,171],"150":[2,171],"151":[2,171],"152":[2,171],"153":[2,171],"154":[2,171],"155":[2,171]},{"1":[2,172],"3":[2,172],"26":[2,172],"27":[2,172],"48":[1,105],"56":[2,172],"58":[2,172],"73":[2,172],"75":[2,172],"78":[2,172],"88":[2,172],"92":[2,172],"100":[2,172],"102":118,"103":[2,172],"104":[2,172],"105":[2,172],"108":[2,172],"110":[2,172],"117":[2,172],"120":[2,172],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[2,172],"137":[2,172],"138":[2,172],"139":[2,172],"140":[2,172],"141":[2,172],"142":[2,172],"143":[2,172],"144":[2,172],"145":[2,172],"146":[2,172],"147":[2,172],"148":[2,172],"149":[2,172],"150":[2,172],"151":[2,172],"152":[2,172],"153":[2,172],"154":[2,172],"155":[2,172]},{"1":[2,173],"3":[2,173],"26":[2,173],"27":[2,173],"48":[1,105],"56":[2,173],"58":[2,173],"73":[2,173],"75":[2,173],"78":[2,173],"88":[2,173],"92":[2,173],"100":[2,173],"102":118,"103":[2,173],"104":[2,173],"105":[2,173],"108":[2,173],"110":[2,173],"117":[2,173],"120":[2,173],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,173],"140":[2,173],"141":[2,173],"142":[2,173],"143":[2,173],"144":[2,173],"145":[2,173],"146":[2,173],"147":[2,173],"148":[2,173],"149":[2,173],"150":[2,173],"151":[2,173],"152":[2,173],"153":[2,173],"154":[2,173],"155":[2,173]},{"1":[2,174],"3":[2,174],"26":[2,174],"27":[2,174],"48":[1,105],"56":[2,174],"58":[2,174],"73":[2,174],"75":[2,174],"78":[2,174],"88":[2,174],"92":[2,174],"100":[2,174],"102":118,"103":[2,174],"104":[2,174],"105":[2,174],"108":[2,174],"110":[2,174],"117":[2,174],"120":[2,174],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,174],"140":[2,174],"141":[2,174],"142":[2,174],"143":[2,174],"144":[2,174],"145":[2,174],"146":[2,174],"147":[2,174],"148":[2,174],"149":[2,174],"150":[2,174],"151":[2,174],"152":[2,174],"153":[2,174],"154":[2,174],"155":[2,174]},{"1":[2,175],"3":[2,175],"26":[2,175],"27":[2,175],"48":[1,105],"56":[2,175],"58":[2,175],"73":[2,175],"75":[2,175],"78":[2,175],"88":[2,175],"92":[2,175],"100":[2,175],"102":118,"103":[2,175],"104":[2,175],"105":[2,175],"108":[2,175],"110":[2,175],"117":[2,175],"120":[2,175],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,175],"140":[2,175],"141":[2,175],"142":[2,175],"143":[2,175],"144":[2,175],"145":[2,175],"146":[2,175],"147":[2,175],"148":[2,175],"149":[2,175],"150":[2,175],"151":[2,175],"152":[2,175],"153":[2,175],"154":[2,175],"155":[2,175]},{"1":[2,176],"3":[2,176],"26":[2,176],"27":[2,176],"48":[1,105],"56":[2,176],"58":[2,176],"73":[2,176],"75":[2,176],"78":[2,176],"88":[2,176],"92":[2,176],"100":[2,176],"102":118,"103":[2,176],"104":[2,176],"105":[2,176],"108":[2,176],"110":[2,176],"117":[2,176],"120":[2,176],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[2,176],"140":[2,176],"141":[2,176],"142":[2,176],"143":[2,176],"144":[2,176],"145":[2,176],"146":[2,176],"147":[2,176],"148":[2,176],"149":[2,176],"150":[2,176],"151":[2,176],"152":[2,176],"153":[2,176],"154":[2,176],"155":[2,176]},{"1":[2,177],"3":[2,177],"26":[2,177],"27":[2,177],"48":[1,105],"56":[2,177],"58":[2,177],"73":[2,177],"75":[2,177],"78":[2,177],"88":[2,177],"92":[2,177],"100":[2,177],"102":118,"103":[2,177],"104":[2,177],"105":[2,177],"108":[2,177],"110":[2,177],"117":[2,177],"120":[2,177],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,177],"144":[2,177],"145":[2,177],"146":[2,177],"147":[2,177],"148":[2,177],"149":[2,177],"150":[2,177],"151":[2,177],"152":[2,177],"153":[2,177],"154":[2,177],"155":[1,114]},{"1":[2,178],"3":[2,178],"26":[2,178],"27":[2,178],"48":[1,105],"56":[2,178],"58":[2,178],"73":[2,178],"75":[2,178],"78":[2,178],"88":[2,178],"92":[2,178],"100":[2,178],"102":118,"103":[2,178],"104":[2,178],"105":[2,178],"108":[2,178],"110":[2,178],"117":[2,178],"120":[2,178],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,178],"144":[2,178],"145":[2,178],"146":[2,178],"147":[2,178],"148":[2,178],"149":[2,178],"150":[2,178],"151":[2,178],"152":[2,178],"153":[2,178],"154":[2,178],"155":[1,114]},{"1":[2,179],"3":[2,179],"26":[2,179],"27":[2,179],"48":[1,105],"56":[2,179],"58":[2,179],"73":[2,179],"75":[2,179],"78":[2,179],"88":[2,179],"92":[2,179],"100":[2,179],"102":118,"103":[2,179],"104":[2,179],"105":[2,179],"108":[2,179],"110":[2,179],"117":[2,179],"120":[2,179],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[2,179],"146":[2,179],"147":[2,179],"148":[2,179],"149":[2,179],"150":[2,179],"151":[2,179],"152":[2,179],"153":[2,179],"154":[2,179],"155":[1,114]},{"1":[2,180],"3":[2,180],"26":[2,180],"27":[2,180],"48":[1,105],"56":[2,180],"58":[2,180],"73":[2,180],"75":[2,180],"78":[2,180],"88":[2,180],"92":[2,180],"100":[2,180],"102":118,"103":[2,180],"104":[2,180],"105":[2,180],"108":[2,180],"110":[2,180],"117":[2,180],"120":[2,180],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[2,180],"146":[2,180],"147":[2,180],"148":[2,180],"149":[2,180],"150":[2,180],"151":[2,180],"152":[2,180],"153":[2,180],"154":[2,180],"155":[1,114]},{"1":[2,181],"3":[2,181],"26":[2,181],"27":[2,181],"48":[2,181],"56":[2,181],"58":[2,181],"73":[2,181],"75":[2,181],"78":[2,181],"88":[2,181],"92":[2,181],"100":[2,181],"102":118,"103":[2,181],"104":[2,181],"105":[2,181],"108":[2,181],"110":[2,181],"117":[2,181],"120":[2,181],"123":[2,181],"124":[2,181],"126":[2,181],"127":[2,181],"130":[2,181],"131":[2,181],"132":[2,181],"133":[2,181],"134":[2,181],"135":[2,181],"136":[2,181],"137":[2,181],"138":[2,181],"139":[2,181],"140":[2,181],"141":[2,181],"142":[2,181],"143":[2,181],"144":[2,181],"145":[2,181],"146":[2,181],"147":[2,181],"148":[2,181],"149":[2,181],"150":[2,181],"151":[2,181],"152":[2,181],"153":[2,181],"154":[2,181],"155":[2,181]},{"1":[2,182],"3":[2,182],"26":[2,182],"27":[2,182],"48":[1,105],"56":[2,182],"58":[2,182],"73":[2,182],"75":[2,182],"78":[2,182],"88":[2,182],"92":[2,182],"100":[2,182],"102":118,"103":[2,182],"104":[2,182],"105":[2,182],"108":[2,182],"110":[2,182],"117":[2,182],"120":[2,182],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,183],"3":[2,183],"26":[2,183],"27":[2,183],"48":[1,105],"56":[2,183],"58":[2,183],"73":[2,183],"75":[2,183],"78":[2,183],"88":[2,183],"92":[2,183],"100":[2,183],"102":118,"103":[2,183],"104":[2,183],"105":[2,183],"108":[2,183],"110":[2,183],"117":[2,183],"120":[2,183],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,184],"3":[2,184],"26":[2,184],"27":[2,184],"48":[1,105],"56":[2,184],"58":[2,184],"73":[2,184],"75":[2,184],"78":[2,184],"88":[2,184],"92":[2,184],"100":[2,184],"102":118,"103":[2,184],"104":[2,184],"105":[2,184],"108":[2,184],"110":[2,184],"117":[2,184],"120":[2,184],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,185],"3":[2,185],"26":[2,185],"27":[2,185],"48":[1,105],"56":[2,185],"58":[2,185],"73":[2,185],"75":[2,185],"78":[2,185],"88":[2,185],"92":[2,185],"100":[2,185],"102":118,"103":[2,185],"104":[2,185],"105":[2,185],"108":[2,185],"110":[2,185],"117":[2,185],"120":[2,185],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,186],"3":[2,186],"26":[2,186],"27":[2,186],"48":[1,105],"56":[2,186],"58":[2,186],"73":[2,186],"75":[2,186],"78":[2,186],"88":[2,186],"92":[2,186],"100":[2,186],"102":118,"103":[2,186],"104":[2,186],"105":[2,186],"108":[2,186],"110":[2,186],"117":[2,186],"120":[2,186],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,187],"3":[2,187],"26":[2,187],"27":[2,187],"48":[1,105],"56":[2,187],"58":[2,187],"73":[2,187],"75":[2,187],"78":[2,187],"88":[2,187],"92":[2,187],"100":[2,187],"102":118,"103":[2,187],"104":[2,187],"105":[2,187],"108":[2,187],"110":[2,187],"117":[2,187],"120":[2,187],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,188],"3":[2,188],"26":[2,188],"27":[2,188],"48":[1,105],"56":[2,188],"58":[2,188],"73":[2,188],"75":[2,188],"78":[2,188],"88":[2,188],"92":[2,188],"100":[2,188],"102":118,"103":[2,188],"104":[2,188],"105":[2,188],"108":[2,188],"110":[2,188],"117":[2,188],"120":[2,188],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,189],"3":[2,189],"26":[2,189],"27":[2,189],"48":[1,105],"56":[2,189],"58":[2,189],"73":[2,189],"75":[2,189],"78":[2,189],"88":[2,189],"92":[2,189],"100":[2,189],"102":118,"103":[2,189],"104":[2,189],"105":[2,189],"108":[2,189],"110":[2,189],"117":[2,189],"120":[2,189],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,190],"3":[2,190],"26":[2,190],"27":[2,190],"48":[1,105],"56":[2,190],"58":[2,190],"73":[2,190],"75":[2,190],"78":[2,190],"88":[2,190],"92":[2,190],"100":[2,190],"102":118,"103":[2,190],"104":[2,190],"105":[2,190],"108":[2,190],"110":[2,190],"117":[2,190],"120":[2,190],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[2,190],"144":[2,190],"145":[2,190],"146":[2,190],"147":[2,190],"148":[2,190],"149":[2,190],"150":[2,190],"151":[2,190],"152":[2,190],"153":[2,190],"154":[2,190],"155":[1,114]},{"1":[2,191],"3":[2,191],"26":[2,191],"27":[2,191],"48":[1,105],"56":[2,191],"58":[1,120],"73":[2,191],"75":[2,191],"78":[2,191],"88":[2,191],"92":[2,191],"100":[2,191],"102":118,"103":[2,191],"104":[2,191],"105":[2,191],"108":[1,115],"110":[2,191],"117":[2,191],"120":[2,191],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,149],"3":[2,149],"26":[2,149],"27":[2,149],"48":[1,105],"56":[2,149],"58":[1,120],"73":[2,149],"75":[2,149],"78":[2,149],"88":[2,149],"92":[2,149],"100":[2,149],"102":118,"103":[1,77],"104":[2,149],"105":[1,119],"108":[1,115],"110":[2,149],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,150],"3":[2,150],"26":[2,150],"27":[2,150],"48":[1,105],"56":[2,150],"58":[1,120],"73":[2,150],"75":[2,150],"78":[2,150],"88":[2,150],"92":[2,150],"100":[2,150],"102":118,"103":[1,77],"104":[2,150],"105":[1,119],"108":[1,115],"110":[2,150],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"107":259,"108":[1,234],"109":[1,235]},{"58":[1,260]},{"1":[2,27],"3":[2,27],"26":[2,27],"27":[2,27],"47":[2,27],"48":[2,27],"56":[2,27],"58":[2,27],"73":[2,27],"75":[2,27],"78":[2,27],"88":[2,27],"92":[2,27],"96":[2,27],"97":[2,27],"100":[2,27],"103":[2,27],"104":[2,27],"105":[2,27],"108":[2,27],"110":[2,27],"113":[2,27],"115":[2,27],"117":[2,27],"120":[2,27],"123":[2,27],"124":[2,27],"126":[2,27],"127":[2,27],"130":[2,27],"131":[2,27],"132":[2,27],"133":[2,27],"134":[2,27],"135":[2,27],"136":[2,27],"137":[2,27],"138":[2,27],"139":[2,27],"140":[2,27],"141":[2,27],"142":[2,27],"143":[2,27],"144":[2,27],"145":[2,27],"146":[2,27],"147":[2,27],"148":[2,27],"149":[2,27],"150":[2,27],"151":[2,27],"152":[2,27],"153":[2,27],"154":[2,27],"155":[2,27]},{"1":[2,94],"3":[2,94],"26":[2,94],"27":[2,94],"48":[2,94],"56":[2,94],"58":[2,94],"73":[2,94],"75":[2,94],"78":[2,94],"88":[2,94],"92":[2,94],"100":[2,94],"103":[2,94],"104":[2,94],"105":[2,94],"108":[2,94],"110":[2,94],"117":[2,94],"120":[2,94],"123":[2,94],"124":[2,94],"126":[2,94],"127":[2,94],"130":[2,94],"131":[2,94],"132":[2,94],"133":[2,94],"134":[2,94],"135":[2,94],"136":[2,94],"137":[2,94],"138":[2,94],"139":[2,94],"140":[2,94],"141":[2,94],"142":[2,94],"143":[2,94],"144":[2,94],"145":[2,94],"146":[2,94],"147":[2,94],"148":[2,94],"149":[2,94],"150":[2,94],"151":[2,94],"152":[2,94],"153":[2,94],"154":[2,94],"155":[2,94]},{"1":[2,44],"3":[2,44],"26":[2,44],"27":[2,44],"48":[1,105],"56":[2,44],"58":[1,120],"73":[2,44],"75":[2,44],"78":[2,44],"88":[2,44],"92":[2,44],"100":[2,44],"102":118,"103":[2,44],"104":[2,44],"105":[1,119],"108":[1,115],"110":[2,44],"117":[2,44],"120":[2,44],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,95],"3":[2,95],"26":[2,95],"27":[2,95],"48":[2,95],"56":[2,95],"58":[2,95],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,95],"74":[1,136],"75":[2,95],"78":[2,95],"85":127,"86":[1,134],"88":[2,95],"92":[2,95],"100":[2,95],"103":[2,95],"104":[2,95],"105":[2,95],"108":[2,95],"110":[2,95],"117":[2,95],"120":[2,95],"123":[2,95],"124":[2,95],"126":[2,95],"127":[2,95],"130":[2,95],"131":[2,95],"132":[2,95],"133":[2,95],"134":[2,95],"135":[2,95],"136":[2,95],"137":[2,95],"138":[2,95],"139":[2,95],"140":[2,95],"141":[2,95],"142":[2,95],"143":[2,95],"144":[2,95],"145":[2,95],"146":[2,95],"147":[2,95],"148":[2,95],"149":[2,95],"150":[2,95],"151":[2,95],"152":[2,95],"153":[2,95],"154":[2,95],"155":[2,95]},{"1":[2,71],"3":[2,71],"26":[2,71],"27":[2,71],"44":[2,71],"48":[2,71],"56":[2,71],"58":[2,71],"66":[2,71],"67":[2,71],"68":[2,71],"69":[2,71],"72":[2,71],"73":[2,71],"74":[2,71],"75":[2,71],"78":[2,71],"81":[2,71],"84":[2,71],"86":[2,71],"88":[2,71],"92":[2,71],"100":[2,71],"103":[2,71],"104":[2,71],"105":[2,71],"108":[2,71],"110":[2,71],"117":[2,71],"120":[2,71],"123":[2,71],"124":[2,71],"126":[2,71],"127":[2,71],"130":[2,71],"131":[2,71],"132":[2,71],"133":[2,71],"134":[2,71],"135":[2,71],"136":[2,71],"137":[2,71],"138":[2,71],"139":[2,71],"140":[2,71],"141":[2,71],"142":[2,71],"143":[2,71],"144":[2,71],"145":[2,71],"146":[2,71],"147":[2,71],"148":[2,71],"149":[2,71],"150":[2,71],"151":[2,71],"152":[2,71],"153":[2,71],"154":[2,71],"155":[2,71]},{"1":[2,72],"3":[2,72],"26":[2,72],"27":[2,72],"44":[2,72],"48":[2,72],"56":[2,72],"58":[2,72],"66":[2,72],"67":[2,72],"68":[2,72],"69":[2,72],"72":[2,72],"73":[2,72],"74":[2,72],"75":[2,72],"78":[2,72],"81":[2,72],"84":[2,72],"86":[2,72],"88":[2,72],"92":[2,72],"100":[2,72],"103":[2,72],"104":[2,72],"105":[2,72],"108":[2,72],"110":[2,72],"117":[2,72],"120":[2,72],"123":[2,72],"124":[2,72],"126":[2,72],"127":[2,72],"130":[2,72],"131":[2,72],"132":[2,72],"133":[2,72],"134":[2,72],"135":[2,72],"136":[2,72],"137":[2,72],"138":[2,72],"139":[2,72],"140":[2,72],"141":[2,72],"142":[2,72],"143":[2,72],"144":[2,72],"145":[2,72],"146":[2,72],"147":[2,72],"148":[2,72],"149":[2,72],"150":[2,72],"151":[2,72],"152":[2,72],"153":[2,72],"154":[2,72],"155":[2,72]},{"1":[2,74],"3":[2,74],"26":[2,74],"27":[2,74],"44":[2,74],"48":[2,74],"56":[2,74],"58":[2,74],"66":[2,74],"67":[2,74],"68":[2,74],"69":[2,74],"72":[2,74],"73":[2,74],"74":[2,74],"75":[2,74],"78":[2,74],"81":[2,74],"84":[2,74],"86":[2,74],"88":[2,74],"92":[2,74],"100":[2,74],"103":[2,74],"104":[2,74],"105":[2,74],"108":[2,74],"110":[2,74],"117":[2,74],"120":[2,74],"123":[2,74],"124":[2,74],"126":[2,74],"127":[2,74],"130":[2,74],"131":[2,74],"132":[2,74],"133":[2,74],"134":[2,74],"135":[2,74],"136":[2,74],"137":[2,74],"138":[2,74],"139":[2,74],"140":[2,74],"141":[2,74],"142":[2,74],"143":[2,74],"144":[2,74],"145":[2,74],"146":[2,74],"147":[2,74],"148":[2,74],"149":[2,74],"150":[2,74],"151":[2,74],"152":[2,74],"153":[2,74],"154":[2,74],"155":[2,74]},{"3":[1,242],"27":[1,243],"56":[1,241],"88":[1,261]},{"3":[2,108],"27":[2,108],"48":[1,105],"56":[2,108],"58":[1,120],"88":[2,108],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,263],"73":[1,262],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,120],"75":[1,264],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"52":265,"53":[1,74],"54":[1,75]},{"55":266,"57":[1,143]},{"58":[1,267]},{"1":[2,117],"3":[2,117],"26":[2,117],"27":[2,117],"48":[2,117],"56":[2,117],"58":[2,117],"73":[2,117],"75":[2,117],"78":[2,117],"88":[2,117],"92":[2,117],"96":[1,268],"100":[2,117],"103":[2,117],"104":[2,117],"105":[2,117],"108":[2,117],"110":[2,117],"117":[2,117],"120":[2,117],"123":[2,117],"124":[2,117],"126":[2,117],"127":[2,117],"130":[2,117],"131":[2,117],"132":[2,117],"133":[2,117],"134":[2,117],"135":[2,117],"136":[2,117],"137":[2,117],"138":[2,117],"139":[2,117],"140":[2,117],"141":[2,117],"142":[2,117],"143":[2,117],"144":[2,117],"145":[2,117],"146":[2,117],"147":[2,117],"148":[2,117],"149":[2,117],"150":[2,117],"151":[2,117],"152":[2,117],"153":[2,117],"154":[2,117],"155":[2,117]},{"3":[1,145],"5":269,"26":[1,6]},{"28":270,"29":[1,57]},{"3":[1,145],"5":271,"26":[1,6],"104":[1,272],"110":[1,273]},{"6":274,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":275,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"28":276,"29":[1,57]},{"24":280,"47":[1,55],"112":277,"114":278,"115":[1,279]},{"7":281,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"59":28,"60":29,"61":30,"62":31,"63":32,"65":163,"76":[1,70],"90":[1,72],"91":[1,69],"99":[1,71]},{"1":[2,83],"3":[2,83],"26":[2,83],"27":[2,83],"48":[2,83],"56":[2,83],"58":[2,83],"73":[2,83],"75":[2,83],"78":[2,83],"88":[2,83],"92":[2,83],"100":[2,83],"103":[2,83],"104":[2,83],"105":[2,83],"108":[2,83],"110":[2,83],"117":[2,83],"120":[2,83],"123":[2,83],"124":[2,83],"126":[2,83],"127":[2,83],"130":[2,83],"131":[2,83],"132":[2,83],"133":[2,83],"134":[2,83],"135":[2,83],"136":[2,83],"137":[2,83],"138":[2,83],"139":[2,83],"140":[2,83],"141":[2,83],"142":[2,83],"143":[2,83],"144":[2,83],"145":[2,83],"146":[2,83],"147":[2,83],"148":[2,83],"149":[2,83],"150":[2,83],"151":[2,83],"152":[2,83],"153":[2,83],"154":[2,83],"155":[2,83]},{"1":[2,106],"3":[2,106],"26":[2,106],"27":[2,106],"44":[2,106],"48":[2,106],"56":[2,106],"58":[2,106],"66":[2,106],"67":[2,106],"68":[2,106],"69":[2,106],"72":[2,106],"73":[2,106],"74":[2,106],"75":[2,106],"78":[2,106],"81":[2,106],"84":[2,106],"86":[2,106],"88":[2,106],"92":[2,106],"100":[2,106],"103":[2,106],"104":[2,106],"105":[2,106],"108":[2,106],"110":[2,106],"117":[2,106],"120":[2,106],"123":[2,106],"124":[2,106],"126":[2,106],"127":[2,106],"130":[2,106],"131":[2,106],"132":[2,106],"133":[2,106],"134":[2,106],"135":[2,106],"136":[2,106],"137":[2,106],"138":[2,106],"139":[2,106],"140":[2,106],"141":[2,106],"142":[2,106],"143":[2,106],"144":[2,106],"145":[2,106],"146":[2,106],"147":[2,106],"148":[2,106],"149":[2,106],"150":[2,106],"151":[2,106],"152":[2,106],"153":[2,106],"154":[2,106],"155":[2,106]},{"3":[1,283],"6":282,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":[1,284],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":285,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,114],"27":[2,114],"56":[2,114],"88":[2,114],"92":[2,114]},{"58":[1,286]},{"3":[2,109],"27":[2,109],"48":[1,105],"56":[2,109],"58":[1,120],"88":[2,109],"92":[2,109],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,79],"3":[2,79],"26":[2,79],"27":[2,79],"44":[2,79],"48":[2,79],"56":[2,79],"58":[2,79],"66":[2,79],"67":[2,79],"68":[2,79],"69":[2,79],"72":[2,79],"73":[2,79],"74":[2,79],"75":[2,79],"78":[2,79],"81":[2,79],"84":[2,79],"86":[2,79],"88":[2,79],"92":[2,79],"100":[2,79],"103":[2,79],"104":[2,79],"105":[2,79],"108":[2,79],"110":[2,79],"117":[2,79],"120":[2,79],"123":[2,79],"124":[2,79],"126":[2,79],"127":[2,79],"130":[2,79],"131":[2,79],"132":[2,79],"133":[2,79],"134":[2,79],"135":[2,79],"136":[2,79],"137":[2,79],"138":[2,79],"139":[2,79],"140":[2,79],"141":[2,79],"142":[2,79],"143":[2,79],"144":[2,79],"145":[2,79],"146":[2,79],"147":[2,79],"148":[2,79],"149":[2,79],"150":[2,79],"151":[2,79],"152":[2,79],"153":[2,79],"154":[2,79],"155":[2,79]},{"3":[1,288],"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":287,"47":[1,55]},{"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":289,"47":[1,55]},{"1":[2,80],"3":[2,80],"26":[2,80],"27":[2,80],"44":[2,80],"48":[2,80],"56":[2,80],"58":[2,80],"66":[2,80],"67":[2,80],"68":[2,80],"69":[2,80],"72":[2,80],"73":[2,80],"74":[2,80],"75":[2,80],"78":[2,80],"81":[2,80],"84":[2,80],"86":[2,80],"88":[2,80],"92":[2,80],"100":[2,80],"103":[2,80],"104":[2,80],"105":[2,80],"108":[2,80],"110":[2,80],"117":[2,80],"120":[2,80],"123":[2,80],"124":[2,80],"126":[2,80],"127":[2,80],"130":[2,80],"131":[2,80],"132":[2,80],"133":[2,80],"134":[2,80],"135":[2,80],"136":[2,80],"137":[2,80],"138":[2,80],"139":[2,80],"140":[2,80],"141":[2,80],"142":[2,80],"143":[2,80],"144":[2,80],"145":[2,80],"146":[2,80],"147":[2,80],"148":[2,80],"149":[2,80],"150":[2,80],"151":[2,80],"152":[2,80],"153":[2,80],"154":[2,80],"155":[2,80]},{"3":[1,248],"27":[1,290],"56":[1,247]},{"6":291,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":292,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,122],"3":[2,122],"26":[2,122],"27":[2,122],"44":[2,122],"48":[2,122],"56":[2,122],"58":[2,122],"66":[2,122],"67":[2,122],"68":[2,122],"69":[2,122],"72":[2,122],"73":[2,122],"74":[2,122],"75":[2,122],"78":[2,122],"81":[2,122],"84":[2,122],"86":[2,122],"88":[2,122],"92":[2,122],"100":[2,122],"103":[2,122],"104":[2,122],"105":[2,122],"108":[2,122],"110":[2,122],"117":[2,122],"120":[2,122],"123":[2,122],"124":[2,122],"126":[2,122],"127":[2,122],"130":[2,122],"131":[2,122],"132":[2,122],"133":[2,122],"134":[2,122],"135":[2,122],"136":[2,122],"137":[2,122],"138":[2,122],"139":[2,122],"140":[2,122],"141":[2,122],"142":[2,122],"143":[2,122],"144":[2,122],"145":[2,122],"146":[2,122],"147":[2,122],"148":[2,122],"149":[2,122],"150":[2,122],"151":[2,122],"152":[2,122],"153":[2,122],"154":[2,122],"155":[2,122]},{"3":[1,242],"27":[1,243],"56":[1,241],"88":[1,293]},{"1":[2,146],"3":[2,146],"26":[2,146],"27":[2,146],"48":[2,146],"56":[2,146],"58":[2,146],"73":[2,146],"75":[2,146],"78":[2,146],"88":[2,146],"92":[2,146],"100":[2,146],"103":[2,146],"104":[2,146],"105":[2,146],"108":[2,146],"110":[2,146],"117":[2,146],"120":[2,146],"123":[2,146],"124":[2,146],"126":[2,146],"127":[2,146],"130":[2,146],"131":[2,146],"132":[2,146],"133":[2,146],"134":[2,146],"135":[2,146],"136":[2,146],"137":[2,146],"138":[2,146],"139":[2,146],"140":[2,146],"141":[2,146],"142":[2,146],"143":[2,146],"144":[2,146],"145":[2,146],"146":[2,146],"147":[2,146],"148":[2,146],"149":[2,146],"150":[2,146],"151":[2,146],"152":[2,146],"153":[2,146],"154":[2,146],"155":[2,146]},{"6":294,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":295,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,143],"3":[2,143],"26":[2,143],"27":[2,143],"48":[2,143],"56":[2,143],"58":[2,143],"73":[2,143],"75":[2,143],"78":[2,143],"88":[2,143],"92":[2,143],"100":[2,143],"103":[2,143],"104":[2,143],"105":[2,143],"108":[2,143],"110":[2,143],"113":[2,143],"117":[2,143],"120":[2,143],"123":[2,143],"124":[2,143],"126":[2,143],"127":[2,143],"130":[2,143],"131":[2,143],"132":[2,143],"133":[2,143],"134":[2,143],"135":[2,143],"136":[2,143],"137":[2,143],"138":[2,143],"139":[2,143],"140":[2,143],"141":[2,143],"142":[2,143],"143":[2,143],"144":[2,143],"145":[2,143],"146":[2,143],"147":[2,143],"148":[2,143],"149":[2,143],"150":[2,143],"151":[2,143],"152":[2,143],"153":[2,143],"154":[2,143],"155":[2,143]},{"1":[2,128],"3":[2,128],"26":[2,128],"27":[2,128],"48":[2,128],"56":[2,128],"58":[2,128],"73":[2,128],"75":[2,128],"78":[2,128],"88":[2,128],"92":[2,128],"100":[2,128],"103":[2,128],"104":[1,272],"105":[2,128],"108":[2,128],"110":[1,273],"117":[2,128],"120":[2,128],"123":[2,128],"124":[2,128],"126":[2,128],"127":[2,128],"130":[2,128],"131":[2,128],"132":[2,128],"133":[2,128],"134":[2,128],"135":[2,128],"136":[2,128],"137":[2,128],"138":[2,128],"139":[2,128],"140":[2,128],"141":[2,128],"142":[2,128],"143":[2,128],"144":[2,128],"145":[2,128],"146":[2,128],"147":[2,128],"148":[2,128],"149":[2,128],"150":[2,128],"151":[2,128],"152":[2,128],"153":[2,128],"154":[2,128],"155":[2,128]},{"1":[2,61],"3":[2,61],"26":[2,61],"27":[2,61],"48":[2,61],"56":[2,61],"58":[2,61],"73":[2,61],"75":[2,61],"78":[2,61],"88":[2,61],"92":[2,61],"100":[2,61],"103":[2,61],"104":[2,61],"105":[2,61],"108":[2,61],"110":[2,61],"117":[2,61],"120":[2,61],"123":[2,61],"124":[2,61],"126":[2,61],"127":[2,61],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"1":[2,98],"3":[2,98],"26":[2,98],"27":[2,98],"48":[2,98],"56":[2,98],"58":[2,98],"66":[2,98],"67":[2,98],"68":[2,98],"69":[2,98],"72":[2,98],"73":[2,98],"74":[2,98],"75":[2,98],"78":[2,98],"86":[2,98],"88":[2,98],"92":[2,98],"100":[2,98],"103":[2,98],"104":[2,98],"105":[2,98],"108":[2,98],"110":[2,98],"117":[2,98],"120":[2,98],"123":[2,98],"124":[2,98],"126":[2,98],"127":[2,98],"130":[2,98],"131":[2,98],"132":[2,98],"133":[2,98],"134":[2,98],"135":[2,98],"136":[2,98],"137":[2,98],"138":[2,98],"139":[2,98],"140":[2,98],"141":[2,98],"142":[2,98],"143":[2,98],"144":[2,98],"145":[2,98],"146":[2,98],"147":[2,98],"148":[2,98],"149":[2,98],"150":[2,98],"151":[2,98],"152":[2,98],"153":[2,98],"154":[2,98],"155":[2,98]},{"1":[2,77],"3":[2,77],"26":[2,77],"27":[2,77],"44":[2,77],"48":[2,77],"56":[2,77],"58":[2,77],"66":[2,77],"67":[2,77],"68":[2,77],"69":[2,77],"72":[2,77],"73":[2,77],"74":[2,77],"75":[2,77],"78":[2,77],"81":[2,77],"84":[2,77],"86":[2,77],"88":[2,77],"92":[2,77],"100":[2,77],"103":[2,77],"104":[2,77],"105":[2,77],"108":[2,77],"110":[2,77],"117":[2,77],"120":[2,77],"123":[2,77],"124":[2,77],"126":[2,77],"127":[2,77],"130":[2,77],"131":[2,77],"132":[2,77],"133":[2,77],"134":[2,77],"135":[2,77],"136":[2,77],"137":[2,77],"138":[2,77],"139":[2,77],"140":[2,77],"141":[2,77],"142":[2,77],"143":[2,77],"144":[2,77],"145":[2,77],"146":[2,77],"147":[2,77],"148":[2,77],"149":[2,77],"150":[2,77],"151":[2,77],"152":[2,77],"153":[2,77],"154":[2,77],"155":[2,77]},{"58":[1,296]},{"1":[2,78],"3":[2,78],"26":[2,78],"27":[2,78],"44":[2,78],"48":[2,78],"56":[2,78],"58":[2,78],"66":[2,78],"67":[2,78],"68":[2,78],"69":[2,78],"72":[2,78],"73":[2,78],"74":[2,78],"75":[2,78],"78":[2,78],"81":[2,78],"84":[2,78],"86":[2,78],"88":[2,78],"92":[2,78],"100":[2,78],"103":[2,78],"104":[2,78],"105":[2,78],"108":[2,78],"110":[2,78],"117":[2,78],"120":[2,78],"123":[2,78],"124":[2,78],"126":[2,78],"127":[2,78],"130":[2,78],"131":[2,78],"132":[2,78],"133":[2,78],"134":[2,78],"135":[2,78],"136":[2,78],"137":[2,78],"138":[2,78],"139":[2,78],"140":[2,78],"141":[2,78],"142":[2,78],"143":[2,78],"144":[2,78],"145":[2,78],"146":[2,78],"147":[2,78],"148":[2,78],"149":[2,78],"150":[2,78],"151":[2,78],"152":[2,78],"153":[2,78],"154":[2,78],"155":[2,78]},{"3":[1,145],"5":297,"26":[1,6]},{"51":[2,58],"56":[2,58],"58":[1,229]},{"58":[1,298]},{"3":[1,145],"5":299,"26":[1,6]},{"1":[2,118],"3":[2,118],"26":[2,118],"27":[2,118],"48":[2,118],"56":[2,118],"58":[2,118],"73":[2,118],"75":[2,118],"78":[2,118],"88":[2,118],"92":[2,118],"100":[2,118],"103":[2,118],"104":[2,118],"105":[2,118],"108":[2,118],"110":[2,118],"117":[2,118],"120":[2,118],"123":[2,118],"124":[2,118],"126":[2,118],"127":[2,118],"130":[2,118],"131":[2,118],"132":[2,118],"133":[2,118],"134":[2,118],"135":[2,118],"136":[2,118],"137":[2,118],"138":[2,118],"139":[2,118],"140":[2,118],"141":[2,118],"142":[2,118],"143":[2,118],"144":[2,118],"145":[2,118],"146":[2,118],"147":[2,118],"148":[2,118],"149":[2,118],"150":[2,118],"151":[2,118],"152":[2,118],"153":[2,118],"154":[2,118],"155":[2,118]},{"3":[1,145],"5":300,"26":[1,6]},{"1":[2,129],"3":[2,129],"26":[2,129],"27":[2,129],"48":[2,129],"56":[2,129],"58":[2,129],"73":[2,129],"75":[2,129],"78":[2,129],"88":[2,129],"92":[2,129],"100":[2,129],"103":[2,129],"104":[2,129],"105":[2,129],"108":[2,129],"110":[2,129],"117":[2,129],"120":[2,129],"123":[2,129],"124":[2,129],"126":[2,129],"127":[2,129],"130":[2,129],"131":[2,129],"132":[2,129],"133":[2,129],"134":[2,129],"135":[2,129],"136":[2,129],"137":[2,129],"138":[2,129],"139":[2,129],"140":[2,129],"141":[2,129],"142":[2,129],"143":[2,129],"144":[2,129],"145":[2,129],"146":[2,129],"147":[2,129],"148":[2,129],"149":[2,129],"150":[2,129],"151":[2,129],"152":[2,129],"153":[2,129],"154":[2,129],"155":[2,129]},{"6":301,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":302,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,132],"3":[2,132],"26":[2,132],"27":[2,132],"48":[1,105],"56":[2,132],"58":[1,120],"73":[2,132],"75":[2,132],"78":[2,132],"88":[2,132],"92":[2,132],"100":[2,132],"102":118,"103":[2,132],"104":[2,132],"105":[2,132],"108":[1,115],"110":[2,132],"117":[2,132],"120":[2,132],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,133],"3":[2,133],"26":[2,133],"27":[2,133],"48":[1,105],"56":[2,133],"58":[1,120],"73":[2,133],"75":[2,133],"78":[2,133],"88":[2,133],"92":[2,133],"100":[2,133],"102":118,"103":[2,133],"104":[2,133],"105":[2,133],"108":[1,115],"110":[2,133],"117":[2,133],"120":[2,133],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"108":[2,131],"109":[2,131]},{"24":280,"27":[1,303],"47":[1,55],"113":[1,304],"114":305,"115":[1,279]},{"27":[2,138],"47":[2,138],"113":[2,138],"115":[2,138]},{"6":307,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"93":306,"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[1,308]},{"1":[2,82],"3":[2,82],"26":[1,170],"27":[2,82],"48":[2,82],"56":[2,82],"58":[2,82],"64":123,"66":[1,128],"67":[1,129],"68":[1,130],"69":[1,131],"70":132,"71":133,"72":[1,135],"73":[2,82],"74":[1,136],"75":[2,82],"78":[2,82],"79":309,"85":127,"86":[1,134],"88":[2,82],"92":[2,82],"100":[2,82],"103":[2,82],"104":[2,82],"105":[2,82],"108":[2,82],"110":[2,82],"117":[2,82],"120":[2,82],"123":[2,82],"124":[2,82],"126":[2,82],"127":[2,82],"130":[2,82],"131":[2,82],"132":[2,82],"133":[2,82],"134":[2,82],"135":[2,82],"136":[2,82],"137":[2,82],"138":[2,82],"139":[2,82],"140":[2,82],"141":[2,82],"142":[2,82],"143":[2,82],"144":[2,82],"145":[2,82],"146":[2,82],"147":[2,82],"148":[2,82],"149":[2,82],"150":[2,82],"151":[2,82],"152":[2,82],"153":[2,82],"154":[2,82],"155":[2,82]},{"3":[2,110],"27":[2,110],"48":[1,105],"56":[2,110],"58":[1,120],"88":[2,110],"92":[2,110],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":310,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"6":311,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,111],"27":[2,111],"48":[1,105],"56":[2,111],"58":[1,120],"88":[2,111],"92":[2,111],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":312,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[1,313],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"3":[2,87],"27":[2,87],"56":[2,87],"78":[2,87]},{"24":173,"28":171,"29":[1,57],"30":172,"31":[1,78],"32":[1,79],"45":314,"47":[1,55]},{"3":[2,88],"27":[2,88],"56":[2,88],"78":[2,88]},{"1":[2,90],"3":[2,90],"26":[2,90],"27":[2,90],"48":[2,90],"56":[2,90],"58":[2,90],"73":[2,90],"75":[2,90],"78":[2,90],"88":[2,90],"92":[2,90],"100":[2,90],"103":[2,90],"104":[2,90],"105":[2,90],"108":[2,90],"110":[2,90],"117":[2,90],"120":[2,90],"123":[2,90],"124":[2,90],"126":[2,90],"127":[2,90],"130":[2,90],"131":[2,90],"132":[2,90],"133":[2,90],"134":[2,90],"135":[2,90],"136":[2,90],"137":[2,90],"138":[2,90],"139":[2,90],"140":[2,90],"141":[2,90],"142":[2,90],"143":[2,90],"144":[2,90],"145":[2,90],"146":[2,90],"147":[2,90],"148":[2,90],"149":[2,90],"150":[2,90],"151":[2,90],"152":[2,90],"153":[2,90],"154":[2,90],"155":[2,90]},{"3":[2,45],"27":[2,45],"48":[1,105],"56":[2,45],"58":[1,120],"78":[2,45],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,46],"27":[2,46],"48":[1,105],"56":[2,46],"58":[1,120],"78":[2,46],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,99],"3":[2,99],"26":[2,99],"27":[2,99],"48":[2,99],"56":[2,99],"58":[2,99],"73":[2,99],"75":[2,99],"78":[2,99],"88":[2,99],"92":[2,99],"100":[2,99],"103":[2,99],"104":[2,99],"105":[2,99],"108":[2,99],"110":[2,99],"117":[2,99],"120":[2,99],"123":[2,99],"124":[2,99],"126":[2,99],"127":[2,99],"130":[2,99],"131":[2,99],"132":[2,99],"133":[2,99],"134":[2,99],"135":[2,99],"136":[2,99],"137":[2,99],"138":[2,99],"139":[2,99],"140":[2,99],"141":[2,99],"142":[2,99],"143":[2,99],"144":[2,99],"145":[2,99],"146":[2,99],"147":[2,99],"148":[2,99],"149":[2,99],"150":[2,99],"151":[2,99],"152":[2,99],"153":[2,99],"154":[2,99],"155":[2,99]},{"3":[1,145],"5":315,"26":[1,6],"48":[1,105],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,125],"3":[2,125],"26":[2,125],"27":[2,125],"48":[1,105],"56":[2,125],"58":[1,120],"73":[2,125],"75":[2,125],"78":[2,125],"88":[2,125],"92":[2,125],"100":[2,125],"102":118,"103":[1,77],"104":[2,125],"105":[1,119],"108":[1,115],"110":[2,125],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":316,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[1,317],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"1":[2,52],"3":[2,52],"26":[2,52],"27":[2,52],"48":[2,52],"56":[2,52],"58":[2,52],"73":[2,52],"75":[2,52],"78":[2,52],"88":[2,52],"92":[2,52],"100":[2,52],"103":[2,52],"104":[2,52],"105":[2,52],"108":[2,52],"110":[2,52],"117":[2,52],"120":[2,52],"123":[2,52],"124":[2,52],"126":[2,52],"127":[2,52],"130":[2,52],"131":[2,52],"132":[2,52],"133":[2,52],"134":[2,52],"135":[2,52],"136":[2,52],"137":[2,52],"138":[2,52],"139":[2,52],"140":[2,52],"141":[2,52],"142":[2,52],"143":[2,52],"144":[2,52],"145":[2,52],"146":[2,52],"147":[2,52],"148":[2,52],"149":[2,52],"150":[2,52],"151":[2,52],"152":[2,52],"153":[2,52],"154":[2,52],"155":[2,52]},{"51":[2,60],"56":[2,60],"58":[2,60]},{"1":[2,119],"3":[2,119],"26":[2,119],"27":[2,119],"48":[2,119],"56":[2,119],"58":[2,119],"73":[2,119],"75":[2,119],"78":[2,119],"88":[2,119],"92":[2,119],"100":[2,119],"103":[2,119],"104":[2,119],"105":[2,119],"108":[2,119],"110":[2,119],"117":[2,119],"120":[2,119],"123":[2,119],"124":[2,119],"126":[2,119],"127":[2,119],"130":[2,119],"131":[2,119],"132":[2,119],"133":[2,119],"134":[2,119],"135":[2,119],"136":[2,119],"137":[2,119],"138":[2,119],"139":[2,119],"140":[2,119],"141":[2,119],"142":[2,119],"143":[2,119],"144":[2,119],"145":[2,119],"146":[2,119],"147":[2,119],"148":[2,119],"149":[2,119],"150":[2,119],"151":[2,119],"152":[2,119],"153":[2,119],"154":[2,119],"155":[2,119]},{"1":[2,120],"3":[2,120],"26":[2,120],"27":[2,120],"48":[2,120],"56":[2,120],"58":[2,120],"73":[2,120],"75":[2,120],"78":[2,120],"88":[2,120],"92":[2,120],"96":[2,120],"100":[2,120],"103":[2,120],"104":[2,120],"105":[2,120],"108":[2,120],"110":[2,120],"117":[2,120],"120":[2,120],"123":[2,120],"124":[2,120],"126":[2,120],"127":[2,120],"130":[2,120],"131":[2,120],"132":[2,120],"133":[2,120],"134":[2,120],"135":[2,120],"136":[2,120],"137":[2,120],"138":[2,120],"139":[2,120],"140":[2,120],"141":[2,120],"142":[2,120],"143":[2,120],"144":[2,120],"145":[2,120],"146":[2,120],"147":[2,120],"148":[2,120],"149":[2,120],"150":[2,120],"151":[2,120],"152":[2,120],"153":[2,120],"154":[2,120],"155":[2,120]},{"1":[2,134],"3":[2,134],"26":[2,134],"27":[2,134],"48":[1,105],"56":[2,134],"58":[1,120],"73":[2,134],"75":[2,134],"78":[2,134],"88":[2,134],"92":[2,134],"100":[2,134],"102":118,"103":[2,134],"104":[2,134],"105":[2,134],"108":[1,115],"110":[2,134],"117":[2,134],"120":[2,134],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,135],"3":[2,135],"26":[2,135],"27":[2,135],"48":[1,105],"56":[2,135],"58":[1,120],"73":[2,135],"75":[2,135],"78":[2,135],"88":[2,135],"92":[2,135],"100":[2,135],"102":118,"103":[2,135],"104":[2,135],"105":[2,135],"108":[1,115],"110":[2,135],"117":[2,135],"120":[2,135],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,136],"3":[2,136],"26":[2,136],"27":[2,136],"48":[2,136],"56":[2,136],"58":[2,136],"73":[2,136],"75":[2,136],"78":[2,136],"88":[2,136],"92":[2,136],"100":[2,136],"103":[2,136],"104":[2,136],"105":[2,136],"108":[2,136],"110":[2,136],"117":[2,136],"120":[2,136],"123":[2,136],"124":[2,136],"126":[2,136],"127":[2,136],"130":[2,136],"131":[2,136],"132":[2,136],"133":[2,136],"134":[2,136],"135":[2,136],"136":[2,136],"137":[2,136],"138":[2,136],"139":[2,136],"140":[2,136],"141":[2,136],"142":[2,136],"143":[2,136],"144":[2,136],"145":[2,136],"146":[2,136],"147":[2,136],"148":[2,136],"149":[2,136],"150":[2,136],"151":[2,136],"152":[2,136],"153":[2,136],"154":[2,136],"155":[2,136]},{"3":[1,145],"5":318,"26":[1,6]},{"27":[2,139],"47":[2,139],"113":[2,139],"115":[2,139]},{"3":[1,145],"5":319,"26":[1,6],"56":[1,320]},{"3":[2,115],"26":[2,115],"48":[1,105],"56":[2,115],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"24":280,"47":[1,55],"114":321,"115":[1,279]},{"1":[2,84],"3":[2,84],"26":[2,84],"27":[2,84],"48":[2,84],"56":[2,84],"58":[2,84],"73":[2,84],"75":[2,84],"78":[2,84],"88":[2,84],"92":[2,84],"100":[2,84],"103":[2,84],"104":[2,84],"105":[2,84],"108":[2,84],"110":[2,84],"117":[2,84],"120":[2,84],"123":[2,84],"124":[2,84],"126":[2,84],"127":[2,84],"130":[2,84],"131":[2,84],"132":[2,84],"133":[2,84],"134":[2,84],"135":[2,84],"136":[2,84],"137":[2,84],"138":[2,84],"139":[2,84],"140":[2,84],"141":[2,84],"142":[2,84],"143":[2,84],"144":[2,84],"145":[2,84],"146":[2,84],"147":[2,84],"148":[2,84],"149":[2,84],"150":[2,84],"151":[2,84],"152":[2,84],"153":[2,84],"154":[2,84],"155":[2,84]},{"3":[2,112],"27":[2,112],"48":[1,105],"56":[2,112],"58":[1,120],"88":[2,112],"92":[2,112],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,113],"27":[2,113],"48":[1,105],"56":[2,113],"58":[1,120],"88":[2,113],"92":[2,113],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"48":[1,105],"58":[1,120],"92":[1,322],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"3":[2,61],"6":323,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"27":[2,61],"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,61],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"56":[2,61],"58":[2,61],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"92":[2,61],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[2,61],"105":[2,61],"108":[2,61],"111":[1,53],"116":76,"117":[2,61],"119":47,"120":[2,61],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"3":[2,89],"27":[2,89],"56":[2,89],"78":[2,89]},{"1":[2,147],"3":[2,147],"26":[2,147],"27":[2,147],"48":[2,147],"56":[2,147],"58":[2,147],"73":[2,147],"75":[2,147],"78":[2,147],"88":[2,147],"92":[2,147],"100":[2,147],"103":[2,147],"104":[2,147],"105":[2,147],"108":[2,147],"110":[2,147],"113":[2,147],"117":[2,147],"120":[2,147],"123":[2,147],"124":[2,147],"126":[2,147],"127":[2,147],"130":[2,147],"131":[2,147],"132":[2,147],"133":[2,147],"134":[2,147],"135":[2,147],"136":[2,147],"137":[2,147],"138":[2,147],"139":[2,147],"140":[2,147],"141":[2,147],"142":[2,147],"143":[2,147],"144":[2,147],"145":[2,147],"146":[2,147],"147":[2,147],"148":[2,147],"149":[2,147],"150":[2,147],"151":[2,147],"152":[2,147],"153":[2,147],"154":[2,147],"155":[2,147]},{"48":[1,105],"58":[1,120],"73":[1,324],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"6":325,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"48":[2,61],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"58":[2,61],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"73":[2,61],"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[2,61],"105":[2,61],"108":[2,61],"111":[1,53],"116":76,"117":[2,61],"119":47,"120":[2,61],"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46],"130":[2,61],"131":[2,61],"132":[2,61],"133":[2,61],"134":[2,61],"135":[2,61],"136":[2,61],"137":[2,61],"138":[2,61],"139":[2,61],"140":[2,61],"141":[2,61],"142":[2,61],"143":[2,61],"144":[2,61],"145":[2,61],"146":[2,61],"147":[2,61],"148":[2,61],"149":[2,61],"150":[2,61],"151":[2,61],"152":[2,61],"153":[2,61],"154":[2,61],"155":[2,61]},{"27":[1,326]},{"3":[1,327],"27":[2,140],"47":[2,140],"113":[2,140],"115":[2,140]},{"6":328,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"28":26,"29":[1,57],"30":58,"31":[1,78],"32":[1,79],"33":27,"34":[1,59],"35":[1,60],"36":[1,61],"37":[1,62],"38":[1,63],"39":[1,64],"40":[1,65],"41":[1,66],"42":[1,67],"43":[1,68],"46":[1,50],"47":[1,55],"49":[1,36],"52":37,"53":[1,74],"54":[1,75],"59":28,"60":29,"61":30,"62":31,"63":32,"65":33,"76":[1,70],"80":[1,54],"82":[1,34],"83":35,"89":[1,73],"90":[1,72],"91":[1,69],"94":[1,48],"98":[1,49],"99":[1,71],"101":[1,56],"102":51,"103":[1,77],"105":[1,52],"111":[1,53],"116":76,"117":[1,80],"119":47,"121":[1,38],"122":[1,39],"123":[1,40],"124":[1,41],"125":[1,42],"126":[1,43],"127":[1,44],"128":[1,45],"129":[1,46]},{"27":[2,142],"47":[2,142],"113":[2,142],"115":[2,142]},{"1":[2,102],"3":[2,102],"26":[2,102],"27":[2,102],"44":[2,102],"48":[2,102],"56":[2,102],"58":[2,102],"66":[2,102],"67":[2,102],"68":[2,102],"69":[2,102],"72":[2,102],"73":[2,102],"74":[2,102],"75":[2,102],"78":[2,102],"81":[2,102],"84":[2,102],"86":[2,102],"88":[2,102],"92":[2,102],"100":[2,102],"103":[2,102],"104":[2,102],"105":[2,102],"108":[2,102],"110":[2,102],"117":[2,102],"120":[2,102],"123":[2,102],"124":[2,102],"126":[2,102],"127":[2,102],"130":[2,102],"131":[2,102],"132":[2,102],"133":[2,102],"134":[2,102],"135":[2,102],"136":[2,102],"137":[2,102],"138":[2,102],"139":[2,102],"140":[2,102],"141":[2,102],"142":[2,102],"143":[2,102],"144":[2,102],"145":[2,102],"146":[2,102],"147":[2,102],"148":[2,102],"149":[2,102],"150":[2,102],"151":[2,102],"152":[2,102],"153":[2,102],"154":[2,102],"155":[2,102]},{"48":[1,105],"58":[1,120],"92":[1,329],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,104],"3":[2,104],"26":[2,104],"27":[2,104],"44":[2,104],"48":[2,104],"56":[2,104],"58":[2,104],"66":[2,104],"67":[2,104],"68":[2,104],"69":[2,104],"72":[2,104],"73":[2,104],"74":[2,104],"75":[2,104],"78":[2,104],"81":[2,104],"84":[2,104],"86":[2,104],"88":[2,104],"92":[2,104],"100":[2,104],"103":[2,104],"104":[2,104],"105":[2,104],"108":[2,104],"110":[2,104],"117":[2,104],"120":[2,104],"123":[2,104],"124":[2,104],"126":[2,104],"127":[2,104],"130":[2,104],"131":[2,104],"132":[2,104],"133":[2,104],"134":[2,104],"135":[2,104],"136":[2,104],"137":[2,104],"138":[2,104],"139":[2,104],"140":[2,104],"141":[2,104],"142":[2,104],"143":[2,104],"144":[2,104],"145":[2,104],"146":[2,104],"147":[2,104],"148":[2,104],"149":[2,104],"150":[2,104],"151":[2,104],"152":[2,104],"153":[2,104],"154":[2,104],"155":[2,104]},{"48":[1,105],"58":[1,120],"73":[1,330],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,137],"3":[2,137],"26":[2,137],"27":[2,137],"48":[2,137],"56":[2,137],"58":[2,137],"73":[2,137],"75":[2,137],"78":[2,137],"88":[2,137],"92":[2,137],"100":[2,137],"103":[2,137],"104":[2,137],"105":[2,137],"108":[2,137],"110":[2,137],"117":[2,137],"120":[2,137],"123":[2,137],"124":[2,137],"126":[2,137],"127":[2,137],"130":[2,137],"131":[2,137],"132":[2,137],"133":[2,137],"134":[2,137],"135":[2,137],"136":[2,137],"137":[2,137],"138":[2,137],"139":[2,137],"140":[2,137],"141":[2,137],"142":[2,137],"143":[2,137],"144":[2,137],"145":[2,137],"146":[2,137],"147":[2,137],"148":[2,137],"149":[2,137],"150":[2,137],"151":[2,137],"152":[2,137],"153":[2,137],"154":[2,137],"155":[2,137]},{"27":[2,141],"47":[2,141],"113":[2,141],"115":[2,141]},{"3":[2,116],"26":[2,116],"48":[1,105],"56":[2,116],"58":[1,120],"102":118,"103":[1,77],"105":[1,119],"108":[1,115],"117":[1,116],"120":[1,117],"123":[1,90],"124":[1,89],"126":[1,84],"127":[1,85],"130":[1,86],"131":[1,87],"132":[1,88],"133":[1,91],"134":[1,92],"135":[1,93],"136":[1,94],"137":[1,95],"138":[1,96],"139":[1,97],"140":[1,98],"141":[1,99],"142":[1,100],"143":[1,101],"144":[1,102],"145":[1,103],"146":[1,104],"147":[1,106],"148":[1,107],"149":[1,108],"150":[1,109],"151":[1,110],"152":[1,111],"153":[1,112],"154":[1,113],"155":[1,114]},{"1":[2,103],"3":[2,103],"26":[2,103],"27":[2,103],"44":[2,103],"48":[2,103],"56":[2,103],"58":[2,103],"66":[2,103],"67":[2,103],"68":[2,103],"69":[2,103],"72":[2,103],"73":[2,103],"74":[2,103],"75":[2,103],"78":[2,103],"81":[2,103],"84":[2,103],"86":[2,103],"88":[2,103],"92":[2,103],"100":[2,103],"103":[2,103],"104":[2,103],"105":[2,103],"108":[2,103],"110":[2,103],"117":[2,103],"120":[2,103],"123":[2,103],"124":[2,103],"126":[2,103],"127":[2,103],"130":[2,103],"131":[2,103],"132":[2,103],"133":[2,103],"134":[2,103],"135":[2,103],"136":[2,103],"137":[2,103],"138":[2,103],"139":[2,103],"140":[2,103],"141":[2,103],"142":[2,103],"143":[2,103],"144":[2,103],"145":[2,103],"146":[2,103],"147":[2,103],"148":[2,103],"149":[2,103],"150":[2,103],"151":[2,103],"152":[2,103],"153":[2,103],"154":[2,103],"155":[2,103]},{"1":[2,105],"3":[2,105],"26":[2,105],"27":[2,105],"44":[2,105],"48":[2,105],"56":[2,105],"58":[2,105],"66":[2,105],"67":[2,105],"68":[2,105],"69":[2,105],"72":[2,105],"73":[2,105],"74":[2,105],"75":[2,105],"78":[2,105],"81":[2,105],"84":[2,105],"86":[2,105],"88":[2,105],"92":[2,105],"100":[2,105],"103":[2,105],"104":[2,105],"105":[2,105],"108":[2,105],"110":[2,105],"117":[2,105],"120":[2,105],"123":[2,105],"124":[2,105],"126":[2,105],"127":[2,105],"130":[2,105],"131":[2,105],"132":[2,105],"133":[2,105],"134":[2,105],"135":[2,105],"136":[2,105],"137":[2,105],"138":[2,105],"139":[2,105],"140":[2,105],"141":[2,105],"142":[2,105],"143":[2,105],"144":[2,105],"145":[2,105],"146":[2,105],"147":[2,105],"148":[2,105],"149":[2,105],"150":[2,105],"151":[2,105],"152":[2,105],"153":[2,105],"154":[2,105],"155":[2,105]}], parseError: function parseError(str, hash) { throw new Error(str); }, diff --git a/lib/repl.js b/lib/repl.js index fd751be00e..2c73cfe585 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -1,15 +1,16 @@ (function(){ - var CoffeeScript, prompt, run; + var CoffeeScript, helpers, prompt, run; // A very simple Read-Eval-Print-Loop. Compiles one line at a time to JavaScript // and evaluates it. Good for simple tests, or poking around the **Node.js** API. // Using it looks like this: // coffee> puts "$num bottles of beer" for num in [99..1] // Require the **coffee-script** module to get access to the compiler. - CoffeeScript = require('coffee-script'); + CoffeeScript = require('./coffee-script'); + helpers = require('./helpers').helpers; // Our prompt. prompt = 'coffee> '; // Quick alias for quitting the REPL. - process.mixin({ + helpers.extend(global, { quit: function quit() { return process.exit(0); } diff --git a/lib/rewriter.js b/lib/rewriter.js index cbf63c262a..92eb54221e 100644 --- a/lib/rewriter.js +++ b/lib/rewriter.js @@ -1,17 +1,21 @@ (function(){ - var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, INVERSES, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, include, pair; + var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, INVERSES, Rewriter, SINGLE_CLOSERS, SINGLE_LINERS, _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, helpers, include, pair; var __hasProp = Object.prototype.hasOwnProperty; - // The CoffeeScript language has a decent amount of optional syntax, - // implicit syntax, and shorthand syntax. These things can greatly complicate a - // grammar and bloat the resulting parse table. Instead of making the parser - // handle it all, we take a series of passes over the token stream, - // using this **Rewriter** to convert shorthand into the unambiguous long form, - // add implicit indentation and parentheses, balance incorrect nestings, and - // generally clean things up. + // The CoffeeScript language has a good deal of optional syntax, implicit syntax, + // and shorthand syntax. This can greatly complicate a grammar and bloat + // the resulting parse table. Instead of making the parser handle it all, we take + // a series of passes over the token stream, using this **Rewriter** to convert + // shorthand into the unambiguous long form, add implicit indentation and + // parentheses, balance incorrect nestings, and generally clean things up. // Set up exported variables for both Node.js and the browser. - if (!((typeof process !== "undefined" && process !== null))) { + if ((typeof process !== "undefined" && process !== null)) { + helpers = require('./helpers').helpers; + } else { this.exports = this; + helpers = this.helpers; } + // Import the helpers we need. + include = helpers.include; // The **Rewriter** class is used by the [Lexer](lexer.html), directly against // its internal array of tokens. exports.Rewriter = (function() { @@ -81,7 +85,7 @@ Rewriter.prototype.remove_leading_newlines = function remove_leading_newlines() { var _a; _a = []; - while (this.tokens[0][0] === 'TERMINATOR') { + while (this.tokens[0] && this.tokens[0][0] === 'TERMINATOR') { _a.push(this.tokens.shift()); } return _a; @@ -146,24 +150,34 @@ // Insert the implicit parentheses here, so that the parser doesn't have to // deal with them. Rewriter.prototype.add_implicit_parentheses = function add_implicit_parentheses() { - var stack; + var calls, stack; stack = [0]; + calls = 0; return this.scan_tokens((function(__this) { var __func = function(prev, token, post, i) { - var _a, _b, _c, _d, idx, last, size, stack_pointer, tag, tmp; + var _a, _b, _c, _d, idx, last, open, size, stack_pointer, tag, tmp; tag = token[0]; - if (tag === 'INDENT') { + if (tag === 'CALL_START') { + calls += 1; + } else if (tag === 'CALL_END') { + calls -= 1; + } else if (tag === 'INDENT') { stack.push(0); - } - if (tag === 'OUTDENT') { + } else if (tag === 'OUTDENT') { last = stack.pop(); stack[stack.length - 1] += last; } + open = stack[stack.length - 1] > 0; + if (tag === 'CALL_END' && calls < 0 && open) { + stack[stack.length - 1] -= 1; + this.tokens.splice(i, 0, ['CALL_END', ')', token[2]]); + return 2; + } if (!(typeof post !== "undefined" && post !== null) || include(IMPLICIT_END, tag)) { if (tag === 'INDENT' && prev && include(IMPLICIT_BLOCK, prev[0])) { return 1; } - if (stack[stack.length - 1] > 0 || tag === 'INDENT') { + if (open || tag === 'INDENT') { idx = tag === 'OUTDENT' ? i + 1 : i; stack_pointer = tag === 'INDENT' ? 2 : 1; _c = 0; _d = stack[stack.length - stack_pointer]; @@ -178,6 +192,7 @@ if (!(prev && include(IMPLICIT_FUNC, prev[0]) && include(IMPLICIT_CALL, tag))) { return 1; } + calls = 0; this.tokens.splice(i, 0, ['CALL_START', '(', token[2]]); stack[stack.length - 1] += 1; return 2; @@ -232,8 +247,9 @@ // Ensure that all listed pairs of tokens are correctly balanced throughout // the course of the token stream. Rewriter.prototype.ensure_balance = function ensure_balance(pairs) { - var _a, _b, key, levels, unclosed, value; + var _a, _b, key, levels, line, open, open_line, unclosed, value; levels = {}; + open_line = {}; this.scan_tokens((function(__this) { var __func = function(prev, token, post, i) { var _a, _b, _c, _d, close, open, pair; @@ -245,6 +261,9 @@ close = _d[1]; levels[open] = levels[open] || 0; if (token[0] === open) { + if (levels[open] === 0) { + open_line[open] = token[2]; + } levels[open] += 1; } if (token[0] === close) { @@ -264,14 +283,14 @@ _a = []; _b = levels; for (key in _b) { if (__hasProp.call(_b, key)) { value = _b[key]; - if (value > 0) { - _a.push(key); - } + value > 0 ? _a.push(key) : null; }} return _a; }).call(this); if (unclosed.length) { - throw new Error("unclosed " + (unclosed[0])); + open = unclosed[0]; + line = open_line[open] + 1; + throw new Error("unclosed " + open + " on line " + line); } }; // We'd like to support syntax like this: @@ -292,7 +311,7 @@ _a = INVERSES; for (key in _a) { if (__hasProp.call(_a, key)) { val = _a[key]; - ((debt[key] = 0)); + (debt[key] = 0); }} return this.scan_tokens((function(__this) { var __func = function(prev, token, post, i) { @@ -363,9 +382,9 @@ // Tokens that indicate the close of a clause of an expression. EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END); // Tokens that, if followed by an `IMPLICIT_CALL`, indicate a function invocation. - IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END']; + IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '<-']; // If preceded by an `IMPLICIT_FUNC`, indicates a function invocation. - IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT', '@', '->', '=>', '[', '(', '{']; + IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'EXTENSION', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT', '@', '->', '=>', '[', '(', '{']; // Tokens indicating that the implicit call must enclose a block of expressions. IMPLICIT_BLOCK = ['->', '=>', '{', '[', ',']; // Tokens that always mark the end of an implicit call for single-liners. @@ -374,10 +393,4 @@ // The grammar can't disambiguate them, so we insert the implicit indentation. SINGLE_LINERS = ['ELSE', "->", "=>", 'TRY', 'FINALLY', 'THEN']; SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']; - // Utility Functions - // ----------------- - // Does a list include a value? - include = function include(list, value) { - return list.indexOf(value) >= 0; - }; })(); diff --git a/lib/scope.js b/lib/scope.js index b0930b6232..aeded3579f 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -38,7 +38,8 @@ // Reserve a variable name as originating from a function parameter for this // scope. No `var` required for internal references. Scope.prototype.parameter = function parameter(name) { - return this.variables[name] = 'param'; + this.variables[name] = 'param'; + return this.variables[name]; }; // Just check to see if a variable has already been declared, without reserving. Scope.prototype.check = function check(name) { @@ -64,10 +65,11 @@ if (top_level && this.parent) { return this.parent.assign(name, value, top_level); } - return this.variables[name] = { + this.variables[name] = { value: value, assigned: true }; + return this.variables[name]; }; // Does this scope reference any variables that need to be declared in the // given function body? @@ -86,9 +88,7 @@ _a = []; _b = this.variables; for (key in _b) { if (__hasProp.call(_b, key)) { val = _b[key]; - if (val === 'var') { - _a.push(key); - } + val === 'var' ? _a.push(key) : null; }} return _a; }).call(this).sort(); @@ -100,9 +100,7 @@ _a = []; _b = this.variables; for (key in _b) { if (__hasProp.call(_b, key)) { val = _b[key]; - if (val.assigned) { - _a.push(key + " = " + (val.value)); - } + val.assigned ? _a.push("" + key + " = " + (val.value)) : null; }} return _a; }; diff --git a/package.json b/package.json index 4babddf910..ea97adcffd 100644 --- a/package.json +++ b/package.json @@ -3,5 +3,5 @@ "description": "Unfancy JavaScript", "keywords": ["javascript", "language"], "author": "Jeremy Ashkenas", - "version": "0.5.5" + "version": "0.5.6" } diff --git a/src/cake.coffee b/src/cake.coffee index 07dec7d1ee..53c4d226f2 100644 --- a/src/cake.coffee +++ b/src/cake.coffee @@ -9,8 +9,9 @@ # External dependencies. fs: require 'fs' path: require 'path' -optparse: require 'optparse' -CoffeeScript: require 'coffee-script' +helpers: require('./helpers').helpers +optparse: require './optparse' +CoffeeScript: require './coffee-script' # Keep track of the list of defined tasks, the accepted options, and so on. tasks: {} @@ -19,7 +20,7 @@ switches: [] oparse: null # Mixin the top-level Cake functions for Cakefiles to use directly. -process.mixin { +helpers.extend global, { # Define a Cake task with a short name, a sentence description, # and the function to run as the action itself. diff --git a/src/coffee-script.coffee b/src/coffee-script.coffee index 3f240cbf38..26516029f9 100644 --- a/src/coffee-script.coffee +++ b/src/coffee-script.coffee @@ -8,21 +8,29 @@ # Set up dependencies correctly for both the server and the browser. if process? - process.mixin require 'nodes' path: require 'path' - lexer: new (require('lexer').Lexer)() - parser: require('parser').parser + Lexer: require('./lexer').Lexer + parser: require('./parser').parser + helpers: require('./helpers').helpers + helpers.extend global, require './nodes' + if require.registerExtension + require.registerExtension '.coffee', (content) -> compile content else - lexer: new Lexer() - parser: exports.parser this.exports: this.CoffeeScript: {} + Lexer: this.Lexer + parser: this.parser + helpers: this.helpers # The current CoffeeScript version number. -exports.VERSION: '0.5.5' +exports.VERSION: '0.5.6' + +# Instantiate a Lexer for our use here. +lexer: new Lexer() # Compile a string of CoffeeScript code to JavaScript, using the Coffee/Jison # compiler. -exports.compile: (code, options) -> +exports.compile: compile: (code, options) -> + options: or {} try (parser.parse lexer.tokenize code).compile options catch err @@ -41,10 +49,18 @@ exports.nodes: (code) -> # Compile and execute a string of CoffeeScript (on the server), correctly # setting `__filename`, `__dirname`, and relative `require()`. -exports.run: (code, options) -> +exports.run: ((code, options) -> module.filename: __filename: options.source __dirname: path.dirname __filename eval exports.compile code, options +) + +# Extend CoffeeScript with a custom language extension. It should hook in to +# the **Lexer** (as a peer of any of the lexer's tokenizing methods), and +# push a token on to the stack that contains a **Node** as the value (as a +# peer of the nodes in [nodes.coffee](nodes.html)). +exports.extend: (func) -> + Lexer.extensions.push func # The real Lexer produces a generic stream of tokens. This object provides a # thin wrapper around it, compatible with the Jison API. We can then pass it @@ -52,7 +68,7 @@ exports.run: (code, options) -> parser.lexer: { lex: -> token: @tokens[@pos] or [""] - @pos += 1 + @pos: + 1 this.yylineno: token[2] this.yytext: token[1] token[0] diff --git a/src/command.coffee b/src/command.coffee index 0e87b2b29b..739784f81a 100644 --- a/src/command.coffee +++ b/src/command.coffee @@ -7,8 +7,8 @@ # External dependencies. fs: require 'fs' path: require 'path' -optparse: require 'optparse' -CoffeeScript: require 'coffee-script' +optparse: require './optparse' +CoffeeScript: require './coffee-script' # The help banner that is printed when `coffee` is called without arguments. BANNER: ''' @@ -47,7 +47,7 @@ exports.run: -> parse_options() return usage() if options.help return version() if options.version - return require 'repl' if options.interactive + return require './repl' if options.interactive return compile_stdio() if options.stdio return compile_script 'console', sources[0] if options.eval return usage() unless sources.length @@ -94,7 +94,7 @@ compile_stdio: -> code: '' process.stdio.open() process.stdio.addListener 'data', (string) -> - code += string if string + code: + string if string process.stdio.addListener 'close', -> compile_script 'stdio', code diff --git a/src/grammar.coffee b/src/grammar.coffee index 2762dcef70..0834357c16 100644 --- a/src/grammar.coffee +++ b/src/grammar.coffee @@ -74,6 +74,7 @@ grammar: { Expression: [ o "Value" o "Call" + o "Curry" o "Code" o "Operation" o "Assign" @@ -89,6 +90,7 @@ grammar: { o "Splat" o "Existence" o "Comment" + o "Extension" ] # A an indented block of expressions. Note that the [Rewriter](rewriter.html) @@ -97,6 +99,7 @@ grammar: { Block: [ o "INDENT Expressions OUTDENT", -> $2 o "INDENT OUTDENT", -> new Expressions() + o "TERMINATOR Comment", -> Expressions.wrap [$2] ] # A literal identifier, a variable name or property. @@ -211,6 +214,7 @@ grammar: { Accessor: [ o "PROPERTY_ACCESS Identifier", -> new AccessorNode $2 o "PROTOTYPE_ACCESS Identifier", -> new AccessorNode $2, 'prototype' + o "::", -> new AccessorNode(new LiteralNode('prototype')) o "SOAK_ACCESS Identifier", -> new AccessorNode $2, 'soak' o "Index" o "Slice", -> new SliceNode $1 @@ -260,6 +264,10 @@ grammar: { o "Super" ] + Curry: [ + o "Value <- Arguments", -> new CurryNode $1, $3 + ] + # Extending an object by setting its prototype chain to reference a parent # object. Extends: [ @@ -353,6 +361,12 @@ grammar: { o "( Expression )", -> new ParentheticalNode $2 ] + # A language extension to CoffeeScript from the outside. We simply pass + # it through unaltered. + Extension: [ + o "EXTENSION", -> yytext + ] + # The condition portion of a while loop. WhileSource: [ o "WHILE Expression", -> new WhileNode $2 @@ -363,7 +377,7 @@ grammar: { # or postfix, with a single expression. There is no do..while. While: [ o "WhileSource Block", -> $1.add_body $2 - o "Expression WhileSource", -> $2.add_body $1 + o "Expression WhileSource", -> $2.add_body Expressions.wrap [$1] ] # Array, object, and range comprehensions, at the most generic level. @@ -451,7 +465,6 @@ grammar: { o "!! Expression", -> new OpNode '!!', $2 o("- Expression", (-> new OpNode('-', $2)), {prec: 'UMINUS'}) o("+ Expression", (-> new OpNode('+', $2)), {prec: 'UPLUS'}) - o "NOT Expression", -> new OpNode 'not', $2 o "~ Expression", -> new OpNode '~', $2 o "-- Expression", -> new OpNode '--', $2 o "++ Expression", -> new OpNode '++', $2 @@ -481,13 +494,9 @@ grammar: { o "Expression == Expression", -> new OpNode '==', $1, $3 o "Expression != Expression", -> new OpNode '!=', $1, $3 - o "Expression IS Expression", -> new OpNode 'is', $1, $3 - o "Expression ISNT Expression", -> new OpNode 'isnt', $1, $3 o "Expression && Expression", -> new OpNode '&&', $1, $3 o "Expression || Expression", -> new OpNode '||', $1, $3 - o "Expression AND Expression", -> new OpNode 'and', $1, $3 - o "Expression OR Expression", -> new OpNode 'or', $1, $3 o "Expression ? Expression", -> new OpNode '?', $1, $3 o "Expression -= Expression", -> new OpNode '-=', $1, $3 @@ -518,15 +527,15 @@ grammar: { # (2 + 3) * 4 operators: [ ["left", '?'] - ["nonassoc", 'UMINUS', 'UPLUS', 'NOT', '!', '!!', '~', '++', '--'] + ["nonassoc", 'UMINUS', 'UPLUS', '!', '!!', '~', '++', '--'] ["left", '*', '/', '%'] ["left", '+', '-'] ["left", '<<', '>>', '>>>'] ["left", '&', '|', '^'] ["left", '<=', '<', '>', '>='] ["right", 'DELETE', 'INSTANCEOF', 'TYPEOF'] - ["left", '==', '!=', 'IS', 'ISNT'] - ["left", '&&', '||', 'AND', 'OR'] + ["left", '==', '!='] + ["left", '&&', '||'] ["right", '-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?='] ["left", '.'] ["right", 'INDENT'] @@ -535,7 +544,7 @@ operators: [ ["right", 'FOR', 'NEW', 'SUPER', 'CLASS'] ["left", 'EXTENDS'] ["right", 'ASSIGN', 'RETURN'] - ["right", '->', '=>', 'UNLESS', 'IF', 'ELSE', 'WHILE'] + ["right", '->', '=>', '<-', 'UNLESS', 'IF', 'ELSE', 'WHILE'] ] # Wrapping Up diff --git a/src/helpers.coffee b/src/helpers.coffee new file mode 100644 index 0000000000..0f34a2d0e2 --- /dev/null +++ b/src/helpers.coffee @@ -0,0 +1,87 @@ +# This file contains the common helper functions that we'd like to share among +# the **Lexer**, **Rewriter**, and the **Nodes**. Merge objects, flatten +# arrays, count characters, that sort of thing. + +# Set up exported variables for both **Node.js** and the browser. +this.exports: this unless process? +helpers: exports.helpers: {} + +# Does a list include a value? +helpers.include: include: (list, value) -> + list.indexOf(value) >= 0 + +# Peek at the beginning of a given string to see if it matches a sequence. +helpers.starts: starts: (string, literal, start) -> + string.substring(start, (start or 0) + literal.length) is literal + +# Trim out all falsy values from an array. +helpers.compact: compact: (array) -> item for item in array when item + +# Count the number of occurences of a character in a string. +helpers.count: count: (string, letter) -> + num: 0 + pos: string.indexOf(letter) + while pos isnt -1 + num: + 1 + pos: string.indexOf(letter, pos + 1) + num + +# Merge objects, returning a fresh copy with attributes from both sides. +# Used every time `BaseNode#compile` is called, to allow properties in the +# options hash to propagate down the tree without polluting other branches. +helpers.merge: merge: (options, overrides) -> + fresh: {} + (fresh[key]: val) for key, val of options + (fresh[key]: val) for key, val of overrides if overrides + fresh + +# Extend a source object with the properties of another object (shallow copy). +# We use this to simulate Node's deprecated `process.mixin` +helpers.extend: extend: (object, properties) -> + (object[key]: val) for key, val of properties + +# Return a completely flattened version of an array. Handy for getting a +# list of `children` from the nodes. +helpers.flatten: flatten: (array) -> + memo: [] + for item in array + if item instanceof Array then memo: memo.concat(item) else memo.push(item) + memo + +# Delete a key from an object, returning the value. Useful when a node is +# looking for a particular method in an options hash. +helpers.del: del: (obj, key) -> + val: obj[key] + delete obj[key] + val + +# Matches a balanced group such as a single or double-quoted string. Pass in +# a series of delimiters, all of which must be nested correctly within the +# contents of the string. This method allows us to have strings within +# interpolations within strings, ad infinitum. +helpers.balanced_string: balanced_string: (str, delimited, options) -> + options: or {} + slash: delimited[0][0] is '/' + levels: [] + i: 0 + while i < str.length + if levels.length and starts str, '\\', i + i: + 1 + else + for pair in delimited + [open, close]: pair + if levels.length and starts(str, close, i) and levels[levels.length - 1] is pair + levels.pop() + i: + close.length - 1 + i: + 1 unless levels.length + break + else if starts str, open, i + levels.push(pair) + i: + open.length - 1 + break + break if not levels.length or slash and starts str, '\n', i + i: + 1 + if levels.length + return false if slash + throw new Error "SyntaxError: Unterminated ${levels.pop()[0]} starting on line ${@line + 1}" + if not i then false else str.substring(0, i) \ No newline at end of file diff --git a/src/lexer.coffee b/src/lexer.coffee index 30ba0d9b78..6f6de8949e 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -10,9 +10,18 @@ # Set up the Lexer for both Node.js and the browser, depending on where we are. if process? Rewriter: require('./rewriter').Rewriter + helpers: require('./helpers').helpers else this.exports: this - Rewriter: this.Rewriter + Rewriter: this.Rewriter + helpers: this.helpers + +# Import the helpers we need. +include: helpers.include +count: helpers.count +starts: helpers.starts +compact: helpers.compact +balanced_string: helpers.balanced_string # The Lexer Class # --------------- @@ -35,6 +44,7 @@ exports.Lexer: class Lexer # Before returning the token stream, run it through the [Rewriter](rewriter.html) # unless explicitly asked not to. tokenize: (code, options) -> + code : code.replace(/(\r|\s+$)/g, '') o : options or {} @code : code # The remainder of the source code. @i : 0 # Current character position we're parsing. @@ -53,6 +63,7 @@ exports.Lexer: class Lexer # short-circuiting if any of them succeed. Their order determines precedence: # `@literal_token` is the fallback catch-all. extract_next_token: -> + return if @extension_token() return if @identifier_token() return if @number_token() return if @heredoc_token() @@ -67,6 +78,13 @@ exports.Lexer: class Lexer # Tokenizers # ---------- + # Language extensions get the highest priority, first chance to tag tokens + # as something else. + extension_token: -> + for extension in Lexer.extensions + return true if extension.call this + false + # Matches identifying literals: variables, keywords, method names, etc. # Check to ensure that JavaScript reserved words aren't being used as # identifiers. Because CoffeeScript reserves a handful of keywords that are @@ -76,42 +94,46 @@ exports.Lexer: class Lexer identifier_token: -> return false unless id: @match IDENTIFIER, 1 @name_access_type() + accessed: include ACCESSORS, @tag(0) tag: 'IDENTIFIER' - tag: id.toUpperCase() if include(KEYWORDS, id) and - not (include(ACCESSORS, @tag(0)) and not @prev().spaced) - @identifier_error id if include RESERVED, id - tag: 'LEADING_WHEN' if tag is 'WHEN' and include BEFORE_WHEN, @tag() + tag: id.toUpperCase() if not accessed and include(KEYWORDS, id) + @identifier_error id if include RESERVED, id + tag: 'LEADING_WHEN' if tag is 'WHEN' and include LINE_BREAK, @tag() + @i: + id.length + if not accessed + tag: id: CONVERSIONS[id] if include COFFEE_ALIASES, id + return @tag_half_assignment(tag) if @prev() and @prev()[0] is 'ASSIGN' and include HALF_ASSIGNMENTS, tag @token(tag, id) - @i += id.length true # Matches numbers, including decimals, hex, and exponential notation. number_token: -> return false unless number: @match NUMBER, 1 @token 'NUMBER', number - @i += number.length + @i: + number.length true # Matches strings, including multi-line strings. Ensures that quotation marks # are balanced within the string's contents, and within nested interpolations. string_token: -> return false unless starts(@chunk, '"') or starts(@chunk, "'") - string: @balanced_token ['"', '"'], ['${', '}'] - string: @balanced_token ["'", "'"] unless string - return false unless string - @interpolate_string string.replace STRING_NEWLINES, " \\\n" - @line += count string, "\n" - @i += string.length + return false unless string: + @balanced_token(['"', '"'], ['${', '}']) or + @balanced_token ["'", "'"] + @interpolate_string string.replace(STRING_NEWLINES, " \\\n") + @line: + count string, "\n" + @i: + string.length true # Matches heredocs, adjusting indentation to the correct level, as heredocs # preserve whitespace, but ignore indentation to the left. heredoc_token: -> - return false unless match = @chunk.match(HEREDOC) - doc: @sanitize_heredoc match[2] or match[4] - @token 'STRING', "\"$doc\"" - @line += count match[1], "\n" - @i += match[1].length + return false unless match: @chunk.match(HEREDOC) + quote: match[1].substr(0, 1) + doc: @sanitize_heredoc match[2] or match[4], quote + @interpolate_string "$quote$doc$quote" + @line: + count match[1], "\n" + @i: + match[1].length true # Matches JavaScript interpolated directly into the source via backticks. @@ -119,33 +141,45 @@ exports.Lexer: class Lexer return false unless starts @chunk, '`' return false unless script: @balanced_token ['`', '`'] @token 'JS', script.replace(JS_CLEANER, '') - @i += script.length + @i: + script.length true # Matches regular expression literals. Lexing regular expressions is difficult # to distinguish from division, so we borrow some basic heuristics from - # JavaScript and Ruby. + # JavaScript and Ruby, borrow slash balancing from `@balanced_token`, and + # borrow interpolation from `@interpolate_string`. regex_token: -> - return false unless regex: @match REGEX, 1 - return false if include NOT_REGEX, @tag() - @token 'REGEX', regex - @i += regex.length + return false unless @chunk.match REGEX_START + return false if include NOT_REGEX, @tag() + return false unless regex: @balanced_token ['/', '/'] + regex: + (flags: @chunk.substr(regex.length).match(REGEX_FLAGS)) + if regex.match REGEX_INTERPOLATION + str: regex.substring(1).split('/')[0] + str: str.replace REGEX_ESCAPE, (escaped) -> '\\' + escaped + @tokens: @tokens.concat [['(', '('], ['NEW', 'new'], ['IDENTIFIER', 'RegExp'], ['CALL_START', '(']] + @interpolate_string "\"$str\"", yes + @tokens: @tokens.concat [[',', ','], ['STRING', "\"$flags\""], [')', ')'], [')', ')']] + else + @token 'REGEX', regex + @i: + regex.length true # Matches a token in which which the passed delimiter pairs must be correctly # balanced (ie. strings, JS literals). balanced_token: (delimited...) -> - @balanced_string @chunk, delimited... + balanced_string @chunk, delimited # Matches and conumes comments. We pass through comments into JavaScript, # so they're treated as real tokens, like any other part of the language. comment_token: -> return false unless comment: @match COMMENT, 1 - @line += (comment.match(MULTILINER) or []).length - lines: comment.replace(COMMENT_CLEANER, '').split(MULTILINER) - @token 'COMMENT', compact lines - @token 'TERMINATOR', "\n" - @i += comment.length + @line: + (comment.match(MULTILINER) or []).length + lines: compact comment.replace(COMMENT_CLEANER, '').split(MULTILINER) + i: @tokens.length - 1 + if @unfinished() + i: - 1 while @tokens[i] and not include LINE_BREAK, @tokens[i][0] + @tokens.splice(i + 1, 0, ['COMMENT', lines, @line], ['TERMINATOR', '\n', @line]) + @i: + comment.length true # Matches newlines, indents, and outdents, and determines which is which. @@ -160,13 +194,12 @@ exports.Lexer: class Lexer # can close multiple indents, so we need to know how far in we happen to be. line_token: -> return false unless indent: @match MULTI_DENT, 1 - @line += indent.match(MULTILINER).length - @i += indent.length + @line: + indent.match(MULTILINER).length + @i : + indent.length prev: @prev(2) size: indent.match(LAST_DENTS).reverse()[0].match(LAST_DENT)[1].length next_character: @chunk.match(MULTI_DENT)[4] - no_newlines: next_character is '.' or (@value() and @value().match(NO_NEWLINE) and - prev and (prev[0] isnt '.') and not @value().match(CODE)) + no_newlines: next_character is '.' or @unfinished() if size is @indent return @suppress_newlines() if no_newlines return @newline_token(indent) @@ -186,7 +219,7 @@ exports.Lexer: class Lexer while move_out > 0 and @indents.length last_indent: @indents.pop() @token 'OUTDENT', last_indent - move_out -= last_indent + move_out: - last_indent @token 'TERMINATOR', "\n" unless @tag() is 'TERMINATOR' or no_newlines true @@ -196,7 +229,7 @@ exports.Lexer: class Lexer return false unless space: @match WHITESPACE, 1 prev: @prev() prev.spaced: true if prev - @i += space.length + @i: + space.length true # Generate a newline token. Consecutive newlines get merged together. @@ -218,27 +251,29 @@ exports.Lexer: class Lexer literal_token: -> match: @chunk.match(OPERATOR) value: match and match[1] + space: match and match[2] @tag_parameters() if value and value.match(CODE) - value ||= @chunk.substr(0, 1) - not_spaced: not @prev() or not @prev().spaced + value: or @chunk.substr(0, 1) + prev_spaced: @prev() and @prev().spaced tag: value if value.match(ASSIGNMENT) tag: 'ASSIGN' @assignment_error() if include JS_FORBIDDEN, @value else if value is ';' tag: 'TERMINATOR' - else if value is '[' and @tag() is '?' and not_spaced + else if value is '[' and @tag() is '?' and not prev_spaced tag: 'SOAKED_INDEX_START' @soaked_index: true @tokens.pop() else if value is ']' and @soaked_index tag: 'SOAKED_INDEX_END' @soaked_index: false - else if include(CALLABLE, @tag()) and not_spaced + else if include(CALLABLE, @tag()) and not prev_spaced tag: 'CALL_START' if value is '(' tag: 'INDEX_START' if value is '[' + @i: + value.length + return @tag_half_assignment(tag) if space and prev_spaced and @prev()[0] is 'ASSIGN' and include HALF_ASSIGNMENTS, tag @token tag, value - @i += value.length true # Token Manipulators @@ -257,11 +292,17 @@ exports.Lexer: class Lexer # Sanitize a heredoc by escaping internal double quotes and erasing all # external indentation on the left-hand side. - sanitize_heredoc: (doc) -> + sanitize_heredoc: (doc, quote) -> indent: (doc.match(HEREDOC_INDENT) or ['']).sort()[0] doc.replace(new RegExp("^" +indent, 'gm'), '') .replace(MULTILINER, "\\n") - .replace(/"/g, '\\"') + .replace(new RegExp(quote, 'g'), '\\"') + + # Tag a half assignment. + tag_half_assignment: (tag) -> + last: @tokens.pop() + @tokens.push ["$tag=", "$tag=", last[2]] + true # A source of ambiguity in our grammar used to be parameter lists in function # definitions versus argument lists in function calls. Walk backwards, tagging @@ -270,7 +311,7 @@ exports.Lexer: class Lexer return if @tag() isnt ')' i: 0 while true - i += 1 + i: + 1 tok: @prev(i) return if not tok switch tok[0] @@ -293,34 +334,6 @@ exports.Lexer: class Lexer assignment_error: -> throw new Error "SyntaxError: Reserved word \"${@value()}\" on line ${@line + 1} can't be assigned" - # Matches a balanced group such as a single or double-quoted string. Pass in - # a series of delimiters, all of which must be nested correctly within the - # contents of the string. This method allows us to have strings within - # interpolations within strings etc... - balanced_string: (str, delimited...) -> - levels: [] - i: 0 - while i < str.length - for pair in delimited - [open, close]: pair - if levels.length and starts str, '\\', i - i += 1 - break - else if levels.length and starts(str, close, i) and levels[levels.length - 1] is pair - levels.pop() - i += close.length - 1 - i += 1 unless levels.length - break - else if starts str, open, i - levels.push(pair) - i += open.length - 1 - break - break unless levels.length - i += 1 - throw new Error "SyntaxError: Unterminated ${levels.pop()[0]} starting on line ${@line + 1}" if levels.length - return false if i is 0 - return str.substring(0, i) - # Expand variables and expressions inside double-quoted strings using # [ECMA Harmony's interpolation syntax](http://wiki.ecmascript.org/doku.php?id=strawman:string_interpolation) # for substitution of bare variables as well as arbitrary expressions. @@ -331,7 +344,7 @@ exports.Lexer: class Lexer # If it encounters an interpolation, this method will recursively create a # new Lexer, tokenize the interpolated contents, and merge them into the # token stream. - interpolate_string: (str) -> + interpolate_string: (str, escape_quotes) -> if str.length < 3 or not starts str, '"' @token 'STRING', str else @@ -341,15 +354,15 @@ exports.Lexer: class Lexer [i, pi]: [1, 1] while i < str.length - 1 if starts str, '\\', i - i += 1 + i: + 1 else if match: str.substring(i).match INTERPOLATION [group, interp]: match interp: "this.${ interp.substring(1) }" if starts interp, '@' tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i tokens.push ['IDENTIFIER', interp] - i += group.length - 1 + i: + group.length - 1 pi: i + 1 - else if (expr: @balanced_string str.substring(i), ['${', '}']) + else if (expr: balanced_string str.substring(i), [['${', '}']]) tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i inner: expr.substring(2, expr.length - 1) if inner.length @@ -358,16 +371,22 @@ exports.Lexer: class Lexer tokens.push ['TOKENS', nested] else tokens.push ['STRING', "$quote$quote"] - i += expr.length - 1 + i: + expr.length - 1 pi: i + 1 - i += 1 + i: + 1 tokens.push ['STRING', "$quote${ str.substring(pi, i) }$quote"] if pi < i and pi < str.length - 1 - for each, i in tokens - if each[0] is 'TOKENS' - @tokens: @tokens.concat each[1] + tokens.unshift ['STRING', '""'] unless tokens[0][0] is 'STRING' + for token, i in tokens + [tag, value]: token + if tag is 'TOKENS' + @tokens: @tokens.concat value + else if tag is 'STRING' and escape_quotes + escaped: value.substring(1, value.length - 1).replace(/"/g, '\\"') + @token tag, "\"$escaped\"" else - @token each[0], each[1] + @token tag, value @token '+', '+' if i < tokens.length - 1 + tokens # Helpers # ------- @@ -398,6 +417,15 @@ exports.Lexer: class Lexer return false unless m: @chunk.match(regex) if m then m[index] else false + # Are we in the midst of an unfinished expression? + unfinished: -> + prev: @prev(2) + @value() and @value().match and @value().match(NO_NEWLINE) and + prev and (prev[0] isnt '.') and not @value().match(CODE) + +# There are no exensions to the core lexer by default. +Lexer.extensions: [] + # Constants # --------- @@ -415,10 +443,10 @@ JS_KEYWORDS: [ # CoffeeScript-only keywords, which we're more relaxed about allowing. They can't # be used standalone, but you can reference them as an attached property. -COFFEE_KEYWORDS: [ +COFFEE_ALIASES: ["and", "or", "is", "isnt", "not"] +COFFEE_KEYWORDS: COFFEE_ALIASES.concat [ "then", "unless", "yes", "no", "on", "off", - "and", "or", "is", "isnt", "not", "of", "by", "where", "when" ] @@ -440,20 +468,25 @@ RESERVED: [ JS_FORBIDDEN: JS_KEYWORDS.concat RESERVED # Token matching regexes. -IDENTIFIER : /^([a-zA-Z$_](\w|\$)*)/ +IDENTIFIER : /^([a-zA-Z\$_](\w|\$)*)/ NUMBER : /^(\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?)))\b/i HEREDOC : /^("{6}|'{6}|"{3}\n?([\s\S]*?)\n?([ \t]*)"{3}|'{3}\n?([\s\S]*?)\n?([ \t]*)'{3})/ INTERPOLATION : /^\$([a-zA-Z_@]\w*(\.\w+)*)/ -OPERATOR : /^([+\*&|\/\-%=<>:!?]+)/ +OPERATOR : /^([+\*&|\/\-%=<>:!?]+)([ \t]*)/ WHITESPACE : /^([ \t]+)/ COMMENT : /^(((\n?[ \t]*)?#[^\n]*)+)/ CODE : /^((-|=)>)/ -REGEX : /^(\/(\S.*?)?([^\\]|\\\\)\/[imgy]{0,4})/ MULTI_DENT : /^((\n([ \t]*))+)(\.)?/ LAST_DENTS : /\n([ \t]*)/g LAST_DENT : /\n([ \t]*)/ ASSIGNMENT : /^(:|=)$/ +# Regex-matching-regexes. +REGEX_START : /^\/[^\/ ]/ +REGEX_INTERPOLATION: /([^\\]\$[a-zA-Z_@]|[^\\]\$\{.*[^\\]\})/ +REGEX_FLAGS : /^[imgy]{0,4}/ +REGEX_ESCAPE : /\\[^\$]/g + # Token cleaning regexes. JS_CLEANER : /(^`|`$)/g MULTILINER : /\n/g @@ -484,27 +517,16 @@ ACCESSORS: ['PROPERTY_ACCESS', 'PROTOTYPE_ACCESS', 'SOAK_ACCESS', '@'] # Tokens that, when immediately preceding a `WHEN`, indicate that the `WHEN` # occurs at the start of a line. We disambiguate these from trailing whens to # avoid an ambiguity in the grammar. -BEFORE_WHEN: ['INDENT', 'OUTDENT', 'TERMINATOR'] - -# Utility Functions -# ----------------- - -# Does a list include a value? -include: (list, value) -> - list.indexOf(value) >= 0 - -# Peek at the beginning of a given string to see if it matches a sequence. -starts: (string, literal, start) -> - string.substring(start, (start or 0) + literal.length) is literal - -# Trim out all falsy values from an array. -compact: (array) -> item for item in array when item - -# Count the number of occurences of a character in a string. -count: (string, letter) -> - num: 0 - pos: string.indexOf(letter) - while pos isnt -1 - num += 1 - pos: string.indexOf(letter, pos + 1) - num +LINE_BREAK: ['INDENT', 'OUTDENT', 'TERMINATOR'] + +# Half-assignments... +HALF_ASSIGNMENTS: ['-', '+', '/', '*', '%', '||', '&&', '?'] + +# Conversions from CoffeeScript operators into JavaScript ones. +CONVERSIONS: { + 'and': '&&' + 'or': '||' + 'is': '==' + 'isnt': '!=' + 'not': '!' +} diff --git a/src/nodes.coffee b/src/nodes.coffee index 142928f3ac..d05e70a413 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -6,9 +6,18 @@ # Set up for both **Node.js** and the browser, by # including the [Scope](scope.html) class. if process? - process.mixin require 'scope' + Scope: require('./scope').Scope + helpers: require('./helpers').helpers else this.exports: this + helpers: this.helpers + Scope: this.Scope + +# Import the helpers we need. +compact: helpers.compact +flatten: helpers.flatten +merge: helpers.merge +del: helpers.del # Helper function that marks a node as a JavaScript *statement*, or as a # *pure_statement*. Statements must be wrapped in a closure when used as an @@ -44,11 +53,11 @@ exports.BaseNode: class BaseNode compile: (o) -> @options: merge o or {} @tab: o.indent - del @options, 'operation' unless @operation_sensitive() + del @options, 'operation' unless this instanceof ValueNode top: if @top_sensitive() then @options.top else del @options, 'top' closure: @is_statement() and not @is_pure_statement() and not top and - not @options.returns and not (this instanceof CommentNode) and - not @contains (node) -> node.is_pure_statement() + not @options.as_statement and not (this instanceof CommentNode) and + not @contains_pure_statement() if closure then @compile_closure(@options) else @compile_node(@options) # Statements converted into expressions via closure-wrapping share a scope @@ -70,9 +79,15 @@ exports.BaseNode: class BaseNode idt: (tabs) -> idt: @tab or '' num: (tabs or 0) + 1 - idt += TAB while num -= 1 + idt: + TAB while num: - 1 idt + # Construct a node that returns the current node's result. + # Note that this is overridden for smarter behavior for + # many statement nodes (eg IfNode, ForNode)... + make_return: -> + new ReturnNode this + # Does this node, or any of its children, contain a node of a certain kind? # Recursively traverses down the *children* of the nodes, yielding to a block # and returning true when the block finds a match. `contains` does not cross @@ -83,6 +98,11 @@ exports.BaseNode: class BaseNode return true if node.contains and node.contains block false + # Convenience for the most common use of contains. Does the node contain + # a pure statement? + contains_pure_statement: -> + @is_pure_statement() or @contains (n) -> n.is_pure_statement() + # Perform an in-order traversal of the AST. Crosses scope boundaries. traverse: (block) -> for node in @children @@ -92,7 +112,7 @@ exports.BaseNode: class BaseNode # `toString` representation of the node, for inspecting the parse tree. # This is what `coffee --nodes` prints out. toString: (idt) -> - idt ||= '' + idt: or '' '\n' + idt + @type + (child.toString(idt + TAB) for child in @children).join('') # Default implementations of the common node identification methods. Nodes @@ -102,7 +122,6 @@ exports.BaseNode: class BaseNode is_statement: -> false is_pure_statement: -> false top_sensitive: -> false - operation_sensitive: -> false #### Expressions @@ -134,15 +153,23 @@ exports.Expressions: class Expressions extends BaseNode empty: -> @expressions.length is 0 - # Is the given node the last one in this block of expressions? - is_last: (node) -> - l: @expressions.length - last_index: if @expressions[l - 1] instanceof CommentNode then 2 else 1 - node is @expressions[l - last_index] + # Make a copy of this node. + copy: -> + new Expressions @children.slice() + + # An Expressions node does not return its entire body, rather it + # ensures that the final expression is returned. + make_return: -> + idx: @expressions.length - 1 + last: @expressions[idx] + last: @expressions[idx: - 1] if last instanceof CommentNode + return this if not last or last instanceof ReturnNode + @expressions[idx]: last.make_return() unless last.contains_pure_statement() + this # An **Expressions** is the only node that can serve as the root. compile: (o) -> - o ||= {} + o: or {} if o.scope then super(o) else @compile_root(o) compile_node: (o) -> @@ -161,8 +188,6 @@ exports.Expressions: class Expressions extends BaseNode # declarations of all inner variables pushed up to the top. compile_with_declarations: (o) -> code: @compile_node(o) - args: @contains (node) -> node instanceof ValueNode and node.is_arguments() - code: "${@tab}arguments = Array.prototype.slice.call(arguments, 0);\n$code" if args code: "${@tab}var ${o.scope.compiled_assignments()};\n$code" if o.scope.has_assignments(this) code: "${@tab}var ${o.scope.compiled_declarations()};\n$code" if o.scope.has_declarations(this) code @@ -172,11 +197,8 @@ exports.Expressions: class Expressions extends BaseNode # statement, ask the statement to do so. compile_expression: (node, o) -> @tab: o.indent - stmt: node.is_statement() - returns: del(o, 'returns') and @is_last(node) and not node.is_pure_statement() - return (if stmt then '' else @idt()) + node.compile(merge(o, {top: true})) + (if stmt then '' else ';') unless returns - return node.compile(merge(o, {returns: true})) if node.is_statement() - "${@tab}return ${node.compile(o)};" + compiled_node: node.compile merge o, {top: true} + if node.is_statement() then compiled_node else "${@idt()}$compiled_node;" # Wrap up the given nodes as an **Expressions**, unless it already happens # to be one. @@ -222,7 +244,7 @@ exports.ReturnNode: class ReturnNode extends BaseNode @children: [@expression: expression] compile_node: (o) -> - return @expression.compile(merge(o, {returns: true})) if @expression.is_statement() + o.as_statement: true if @expression.is_statement() "${@tab}return ${@expression.compile(o)};" statement ReturnNode, true @@ -246,9 +268,6 @@ exports.ValueNode: class ValueNode extends BaseNode @children.push(prop) this - operation_sensitive: -> - true - has_properties: -> !!@properties.length @@ -263,8 +282,8 @@ exports.ValueNode: class ValueNode extends BaseNode is_splice: -> @has_properties() and @properties[@properties.length - 1] instanceof SliceNode - is_arguments: -> - @base.value is 'arguments' + make_return: -> + if @has_properties() then super() else @base.make_return() # The value can be unwrapped as its inner node, if there are no attached # properties. @@ -296,11 +315,11 @@ exports.ValueNode: class ValueNode extends BaseNode temp: o.scope.free_variable() complete: "($temp = $complete)$@SOAK" + (baseline: temp + prop.compile(o)) else - complete: complete + @SOAK + (baseline += prop.compile(o)) + complete: complete + @SOAK + (baseline: + prop.compile(o)) else part: prop.compile(o) - baseline += part - complete += part + baseline: + part + complete: + part @last: part if op and soaked then "($complete)" else complete @@ -316,6 +335,9 @@ exports.CommentNode: class CommentNode extends BaseNode @lines: lines this + make_return: -> + this + compile_node: (o) -> "$@tab//" + @lines.join("\n$@tab//") @@ -329,26 +351,27 @@ exports.CallNode: class CallNode extends BaseNode type: 'Call' constructor: (variable, args) -> - @children: flatten [@variable: variable, @args: (args or [])] - @prefix: '' + @is_new: false + @is_super: variable is 'super' + @variable: if @is_super then null else variable + @children: compact flatten [@variable, @args: (args or [])] + @compile_splat_arguments: SplatNode.compile_mixed_array <- @, @args # Tag this invocation as creating a new instance. new_instance: -> - @prefix: 'new ' + @is_new: true this - # Add an argument to the call's arugment list. - push: (arg) -> - @args.push(arg) - @children.push(arg) - this + prefix: -> + if @is_new then 'new ' else '' # Compile a vanilla function call. compile_node: (o) -> - return @compile_splat(o) if @args[@args.length - 1] instanceof SplatNode + for arg in @args + return @compile_splat(o) if arg instanceof SplatNode args: (arg.compile(o) for arg in @args).join(', ') - return @compile_super(args, o) if @variable is 'super' - "$@prefix${@variable.compile(o)}($args)" + return @compile_super(args, o) if @is_super + "${@prefix()}${@variable.compile(o)}($args)" # `super()` is converted into a call against the superclass's implementation # of the current function. @@ -361,7 +384,7 @@ exports.CallNode: class CallNode extends BaseNode "${meth}.call(this${ if args.length then ', ' else '' }$args)" # If you call a function with a splat, it's converted into a JavaScript - # `.apply()` call to allow the variable-length arguments. + # `.apply()` call to allow an array of arguments to be passed. compile_splat: (o) -> meth: @variable.compile o obj: @variable.source or 'this' @@ -369,11 +392,35 @@ exports.CallNode: class CallNode extends BaseNode temp: o.scope.free_variable() obj: temp meth: "($temp = ${ @variable.source })${ @variable.last }" - args: for arg, i in @args - code: arg.compile o - code: if arg instanceof SplatNode then code else "[$code]" - if i is 0 then code else ".concat($code)" - "$@prefix${meth}.apply($obj, ${ args.join('') })" + "${@prefix()}${meth}.apply($obj, ${ @compile_splat_arguments(o) })" + + +#### CurryNode + +# Binds a context object and a list of arguments to a function, +# returning the bound function. After ECMAScript 5, Prototype.js, and +# Underscore's `bind` functions. +exports.CurryNode: class CurryNode extends CallNode + type: 'Curry' + + body: 'func.apply(obj, args.concat(Array.prototype.slice.call(arguments, 0)))' + + constructor: (meth, args) -> + @children: flatten [@meth: meth, @context: args[0], @args: (args.slice(1) or [])] + @compile_splat_arguments: SplatNode.compile_mixed_array <- @, @args + + arguments: (o) -> + for arg in @args + return @compile_splat_arguments(o) if arg instanceof SplatNode + (new ArrayNode(@args)).compile o + + compile_node: (o) -> + body: Expressions.wrap([literal @body]) + curried: new CodeNode([], body) + curry: new CodeNode([literal('func'), literal('obj'), literal('args')], Expressions.wrap([curried])) + (new ParentheticalNode(new CallNode(curry, [@meth, @context, literal(@arguments(o))]))).compile o + + #### ExtendsNode @@ -417,11 +464,12 @@ exports.AccessorNode: class AccessorNode extends BaseNode this compile_node: (o) -> - '.' + (if @prototype then 'prototype.' else '') + @name.compile(o) + proto_part: if @prototype then 'prototype.' else '' + ".$proto_part${@name.compile(o)}" #### IndexNode -# An indexed accessor into an array or object. +# A `[ ... ]` indexed accessor into an array or object. exports.IndexNode: class IndexNode extends BaseNode type: 'Index' @@ -473,7 +521,7 @@ exports.RangeNode: class RangeNode extends BaseNode name: o.scope.free_variable() body: Expressions.wrap([literal(name)]) arr: Expressions.wrap([new ForNode(body, {source: (new ValueNode(this))}, literal(name))]) - (new ParentheticalNode(new CallNode(new CodeNode([], arr)))).compile(o) + (new ParentheticalNode(new CallNode(new CodeNode([], arr.make_return())))).compile(o) #### SliceNode @@ -529,17 +577,21 @@ exports.ArrayNode: class ArrayNode extends BaseNode constructor: (objects) -> @children: @objects: objects or [] + @compile_splat_literal: SplatNode.compile_mixed_array <- @, @objects compile_node: (o) -> o.indent: @idt(1) - objects: for obj, i in @objects + objects: [] + for obj, i in @objects code: obj.compile(o) - if obj instanceof CommentNode - "\n$code\n$o.indent" + if obj instanceof SplatNode + return @compile_splat_literal(@objects, o) + else if obj instanceof CommentNode + objects.push "\n$code\n$o.indent" else if i is @objects.length - 1 - code + objects.push code else - "$code, " + objects.push "$code, " objects: objects.join('') ending: if objects.indexOf('\n') >= 0 then "\n$@tab]" else ']' "[$objects$ending" @@ -554,6 +606,11 @@ exports.ClassNode: class ClassNode extends BaseNode # list of prototype property assignments. constructor: (variable, parent, props) -> @children: compact flatten [@variable: variable, @parent: parent, @properties: props or []] + @returns: false + + make_return: -> + @returns: true + this # Instead of generating the JavaScript string directly, we build up the # equivalent syntax tree and compile that, in pieces. You can see the @@ -563,7 +620,6 @@ exports.ClassNode: class ClassNode extends BaseNode constructor: null props: new Expressions() o.top: true - ret: del o, 'returns' for prop in @properties if prop.variable and prop.variable.base.value is 'constructor' @@ -588,39 +644,11 @@ exports.ClassNode: class ClassNode extends BaseNode construct: @idt() + constructor.compile(o) + ';\n' props: if props.empty() then '' else props.compile(o) + '\n' extension: if extension then @idt() + extension.compile(o) + ';\n' else '' - returns: if ret then '\n' + @idt() + 'return ' + @variable.compile(o) + ';' else '' + returns: if @returns then new ReturnNode(@variable).compile(o) else '' "$construct$extension$props$returns" statement ClassNode -#### PushNode - -# A faux-node that is never created by the grammar, but is used during -# code generation to generate a quick `array.push(value)` tree of nodes. -# Helpful for recording the result arrays from comprehensions. -PushNode: exports.PushNode: { - - wrap: (array, expressions) -> - expr: expressions.unwrap() - return expressions if expr.is_pure_statement() or expr.contains (n) -> n.is_pure_statement() - Expressions.wrap([new CallNode( - new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr] - )]) - -} - -#### ClosureNode - -# A faux-node used to wrap an expressions body in a closure. -ClosureNode: exports.ClosureNode: { - - wrap: (expressions, statement) -> - func: new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions]))) - call: new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')]) - if statement then Expressions.wrap([call]) else call - -} - #### AssignNode # The **AssignNode** is used to assign a local variable to value, or to set the @@ -642,6 +670,9 @@ exports.AssignNode: class AssignNode extends BaseNode is_value: -> @variable instanceof ValueNode + make_return: -> + return new Expressions [this, new ReturnNode(@variable)] + is_statement: -> @is_value() and (@variable.is_array() or @variable.is_object()) @@ -666,9 +697,7 @@ exports.AssignNode: class AssignNode extends BaseNode o.scope.find name unless @is_value() and @variable.has_properties() val: "$name = $val" return "$@tab$val;" if stmt - val: "($val)" if not top or o.returns - val: "${@tab}return $val" if o.returns - val + if top then val else "($val)" # Brief implementation of recursive pattern matching, when assigning array or # object literals to a value. Peeks at their properties to assign inner names. @@ -680,18 +709,21 @@ exports.AssignNode: class AssignNode extends BaseNode assigns: ["$@tab$val_var = ${ value.compile(o) };"] o.top: true o.as_statement: true + splat: false for obj, i in @variable.base.objects idx: i [obj, idx]: [obj.value, obj.variable.base] if @variable.is_object() access_class: if @variable.is_array() then IndexNode else AccessorNode - if obj instanceof SplatNode - val: literal(obj.compile_value(o, val_var, @variable.base.objects.indexOf(obj))) + if obj instanceof SplatNode and not splat + val: literal(obj.compile_value(o, val_var, + (oindex: @variable.base.objects.indexOf(obj)), + (olength: @variable.base.objects.length) - oindex - 1)) + splat: true else - idx: literal(idx) unless typeof idx is 'object' + idx: literal(if splat then "${val_var}.length - ${olength - idx}" else idx) if typeof idx isnt 'object' val: new ValueNode(literal(val_var), [new access_class(idx)]) assigns.push(new AssignNode(obj, val).compile(o)) code: assigns.join("\n") - code += "\n${@tab}return ${ @variable.compile(o) };" if o.returns code # Compile the assignment from an array splice literal, using JavaScript's @@ -728,16 +760,26 @@ exports.CodeNode: class CodeNode extends BaseNode shared_scope: del o, 'shared_scope' top: del o, 'top' o.scope: shared_scope or new Scope(o.scope, @body, this) - o.returns: true o.top: true o.indent: @idt(if @bound then 2 else 1) del o, 'no_wrap' del o, 'globals' - if @params[@params.length - 1] instanceof SplatNode - splat: @params.pop() - splat.index: @params.length - @body.unshift(splat) - params: (param.compile(o) for param in @params) + i: 0 + splat: undefined + params: [] + for param in @params + if param instanceof SplatNode and not splat? + splat: param + splat.index: i + @body.unshift(splat) + splat.trailings: [] + else if splat? + splat.trailings.push(param) + else + params.push(param) + i: + 1 + params: (param.compile(o) for param in params) + @body.make_return() (o.scope.parameter(param)) for param in params code: if @body.expressions.length then "\n${ @body.compile_with_declarations(o) }\n" else '' name_part: if @name then ' ' + @name else '' @@ -758,10 +800,10 @@ exports.CodeNode: class CodeNode extends BaseNode # Custom `traverse` implementation that uses the `real_children`. traverse: (block) -> block this - block(child) for child in @real_children() + child.traverse block for child in @real_children() toString: (idt) -> - idt ||= '' + idt: or '' children: (child.toString(idt + TAB) for child in @real_children()).join('') "\n$idt$children" @@ -784,12 +826,38 @@ exports.SplatNode: class SplatNode extends BaseNode compile_param: (o) -> name: @name.compile(o) o.scope.find name - "$name = Array.prototype.slice.call(arguments, $@index)" + i: 0 + for trailing in @trailings + o.scope.assign(trailing.compile(o), "arguments[arguments.length - $@trailings.length + $i]") + i: + 1 + "$name = Array.prototype.slice.call(arguments, $@index, arguments.length - ${@trailings.length})" # A compiling a splat as a destructuring assignment means slicing arguments # from the right-hand-side's corresponding array. - compile_value: (o, name, index) -> - "Array.prototype.slice.call($name, $index)" + compile_value: (o, name, index, trailings) -> + if trailings? then "Array.prototype.slice.call($name, $index, ${name}.length - $trailings)" \ + else "Array.prototype.slice.call($name, $index)" + +# Utility function that converts arbitrary number of elements, mixed with +# splats, to a proper array +SplatNode.compile_mixed_array: (list, o) -> + args: [] + i: 0 + for arg in list + code: arg.compile o + if not (arg instanceof SplatNode) + prev: args[i - 1] + if i is 1 and prev.substr(0, 1) is '[' and prev.substr(prev.length - 1, 1) is ']' + args[i - 1]: "${prev.substr(0, prev.length - 1)}, $code]" + continue + else if i > 1 and prev.substr(0, 9) is '.concat([' and prev.substr(prev.length - 2, 2) is '])' + args[i - 1]: "${prev.substr(0, prev.length - 2)}, $code])" + continue + else + code: "[$code]" + args.push(if i is 0 then code else ".concat($code)") + i: + 1 + args.join('') #### WhileNode @@ -807,6 +875,10 @@ exports.WhileNode: class WhileNode extends BaseNode @children.push @body: body this + make_return: -> + @returns: true + this + top_sensitive: -> true @@ -814,8 +886,7 @@ exports.WhileNode: class WhileNode extends BaseNode # *while* can be used as a part of a larger expression -- while loops may # return an array containing the computed result of each iteration. compile_node: (o) -> - returns: del(o, 'returns') - top: del(o, 'top') and not returns + top: del(o, 'top') and not @returns o.indent: @idt(1) o.top: true cond: @condition.compile(o) @@ -824,11 +895,14 @@ exports.WhileNode: class WhileNode extends BaseNode rvar: o.scope.free_variable() set: "$@tab$rvar = [];\n" @body: PushNode.wrap(rvar, @body) if @body - post: if returns then "\n${@tab}return $rvar;" else '' pre: "$set${@tab}while ($cond)" - return "$pre null;$post" if not @body + return "$pre null;$post" if not @body @body: Expressions.wrap([new IfNode(@filter, @body)]) if @filter - "$pre {\n${ @body.compile(o) }\n$@tab}$post" + if @returns + post: new ReturnNode(literal(rvar)).compile(merge(o, {indent: @idt()})) + else + post: '' + "$pre {\n${ @body.compile(o) }\n$@tab}\n$post" statement WhileNode @@ -841,13 +915,8 @@ exports.OpNode: class OpNode extends BaseNode # The map of conversions from CoffeeScript to JavaScript symbols. CONVERSIONS: { - '==': '===' - '!=': '!==' - 'and': '&&' - 'or': '||' - 'is': '===' - 'isnt': '!==' - 'not': '!' + '==': '===' + '!=': '!==' } # The list of operators for which we perform @@ -861,7 +930,7 @@ exports.OpNode: class OpNode extends BaseNode PREFIX_OPERATORS: ['typeof', 'delete'] constructor: (operator, first, second, flip) -> - @type += ' ' + operator + @type: + ' ' + operator @children: compact [@first: first, @second: second] @operator: @CONVERSIONS[operator] or operator @flip: !!flip @@ -925,6 +994,11 @@ exports.TryNode: class TryNode extends BaseNode @error: error this + make_return: -> + @attempt: @attempt.make_return() if @attempt + @recovery: @recovery.make_return() if @recovery + this + # Compilation is more or less as you would expect -- the *finally* clause # is optional, the *catch* is not. compile_node: (o) -> @@ -932,8 +1006,8 @@ exports.TryNode: class TryNode extends BaseNode o.top: true attempt_part: @attempt.compile(o) error_part: if @error then " (${ @error.compile(o) }) " else ' ' - catch_part: "${ (@recovery or '') and ' catch' }$error_part{\n${ @recovery.compile(o) }\n$@tab}" - finally_part: (@ensure or '') and ' finally {\n' + @ensure.compile(merge(o, {returns: null})) + "\n$@tab}" + catch_part: if @recovery then " catch$error_part{\n${ @recovery.compile(o) }\n$@tab}" else '' + finally_part: (@ensure or '') and ' finally {\n' + @ensure.compile(merge(o)) + "\n$@tab}" "${@tab}try {\n$attempt_part\n$@tab}$catch_part$finally_part" statement TryNode @@ -947,6 +1021,10 @@ exports.ThrowNode: class ThrowNode extends BaseNode constructor: (expression) -> @children: [@expression: expression] + # A **ThrowNode** is already a return, of sorts... + make_return: -> + return this + compile_node: (o) -> "${@tab}throw ${@expression.compile(o)};" @@ -992,12 +1070,15 @@ exports.ParentheticalNode: class ParentheticalNode extends BaseNode is_statement: -> @expression.is_statement() + make_return: -> + @expression.make_return() + compile_node: (o) -> code: @expression.compile(o) return code if @is_statement() l: code.length code: code.substr(o, l-1) if code.substr(l-1, 1) is ';' - "($code)" + if @expression instanceof AssignNode then code else "($code)" #### ForNode @@ -1021,23 +1102,32 @@ exports.ForNode: class ForNode extends BaseNode @object: !!source.object [@name, @index]: [@index, @name] if @object @children: compact [@body, @source, @filter] + @returns: false top_sensitive: -> true + make_return: -> + @returns: true + this + + compile_return_value: (val, o) -> + return new ReturnNode(literal(val)).compile(o) if @returns + val or '' + # Welcome to the hairiest method in all of CoffeeScript. Handles the inner # loop, filtering, stepping, and result saving for array, object, and range # comprehensions. Some of the generated code can be shared in common, and # some cannot. compile_node: (o) -> - top_level: del(o, 'top') and not o.returns + top_level: del(o, 'top') and not @returns range: @source instanceof ValueNode and @source.base instanceof RangeNode and not @source.properties.length source: if range then @source.base else @source scope: o.scope name: @name and @name.compile o index: @index and @index.compile o - name_found: name and scope.find name - index_found: index and scope.find index + scope.find name if name + scope.find index if index body_dent: @idt(1) rvar: scope.free_variable() unless top_level svar: scope.free_variable() @@ -1058,23 +1148,19 @@ exports.ForNode: class ForNode extends BaseNode step_part: if @step then "$ivar += ${ @step.compile(o) }" else "$ivar++" for_part: "$ivar = 0, $lvar = ${svar}.length; $ivar < $lvar; $step_part" set_result: if rvar then @idt() + rvar + ' = []; ' else @idt() - return_result: rvar or '' - body: ClosureNode.wrap(body, true) if top_level and @contains (n) -> n instanceof CodeNode + return_result: @compile_return_value(rvar, o) + + body: ClosureNode.wrap(body, true) if top_level and body.contains (n) -> n instanceof CodeNode body: PushNode.wrap(rvar, body) unless top_level - if o.returns - return_result: 'return ' + return_result - del o, 'returns' - body: new IfNode(@filter, body, null, {statement: true}) if @filter - else if @filter + if @filter body: Expressions.wrap([new IfNode(@filter, body)]) if @object o.scope.assign('__hasProp', 'Object.prototype.hasOwnProperty', true) for_part: "$ivar in $svar) { if (__hasProp.call($svar, $ivar)" - return_result: "\n$@tab$return_result;" unless top_level body: body.compile(merge(o, {indent: body_dent, top: true})) vars: if range then name else "$name, $ivar" close: if @object then '}}\n' else '}\n' - "$set_result${source_part}for ($for_part) {\n$var_part$body\n$@tab$close$@tab$return_result" + "$set_result${source_part}for ($for_part) {\n$var_part$body\n$@tab$close$return_result" statement ForNode @@ -1092,7 +1178,7 @@ exports.IfNode: class IfNode extends BaseNode @condition: condition @body: body and body.unwrap() @else_body: else_body and else_body.unwrap() - @children: compact [@condition, @body, @else_body] + @children: compact flatten [@condition, @body, @else_body] @tags: tags or {} @multiple: true if @condition instanceof Array @condition: new OpNode('!', new ParentheticalNode(@condition)) if @tags.invert @@ -1124,9 +1210,9 @@ exports.IfNode: class IfNode extends BaseNode @switcher: variable @condition: if @multiple for cond, i in @condition - new OpNode('is', (if i is 0 then assigner else @switcher), cond) + new OpNode('==', (if i is 0 then assigner else @switcher), cond) else - new OpNode('is', assigner, @condition) + new OpNode('==', assigner, @condition) @else_body.rewrite_condition(@switcher) if @is_chain() this @@ -1141,12 +1227,12 @@ exports.IfNode: class IfNode extends BaseNode # If the `else_body` is an **IfNode** itself, then we've got an *if-else* chain. is_chain: -> - @chain ||= @else_body and @else_body instanceof IfNode + @chain: or @else_body and @else_body instanceof IfNode # The **IfNode** only compiles into a statement if either of its bodies needs # to be a statement. Otherwise a ternary is safe. is_statement: -> - @statement ||= !!(@comment or @tags.statement or @body.is_statement() or (@else_body and @else_body.is_statement())) + @statement: or !!(@comment or @tags.statement or @body.is_statement() or (@else_body and @else_body.is_statement())) compile_condition: (o) -> (cond.compile(o) for cond in flatten([@condition])).join(' || ') @@ -1154,13 +1240,17 @@ exports.IfNode: class IfNode extends BaseNode compile_node: (o) -> if @is_statement() then @compile_statement(o) else @compile_ternary(o) + make_return: -> + @body: and @body.make_return() + @else_body: and @else_body.make_return() + this + # Compile the **IfNode** as a regular *if-else* statement. Flattened chains # force inner *else* bodies into statement form. compile_statement: (o) -> @rewrite_switch(o) if @switcher child: del o, 'chain_child' cond_o: merge o - del cond_o, 'returns' o.indent: @idt(1) o.top: true if_dent: if child then '' else @idt() @@ -1181,6 +1271,41 @@ exports.IfNode: class IfNode extends BaseNode else_part: if @else_body then @else_body.compile(o) else 'null' "$if_part : $else_part" +# Faux-Nodes +# ---------- + +#### PushNode + +# Faux-nodes are never created by the grammar, but are used during code +# generation to generate other combinations of nodes. The **PushNode** creates +# the tree for `array.push(value)`, which is helpful for recording the result +# arrays from comprehensions. +PushNode: exports.PushNode: { + + wrap: (array, expressions) -> + expr: expressions.unwrap() + return expressions if expr.is_pure_statement() or expr.contains_pure_statement() + Expressions.wrap([new CallNode( + new ValueNode(literal(array), [new AccessorNode(literal('push'))]), [expr] + )]) + +} + +#### ClosureNode + +# A faux-node used to wrap an expressions body in a closure. +ClosureNode: exports.ClosureNode: { + + # Wrap the expressions body, unless it contains a pure statement, + # in which case, no dice. + wrap: (expressions, statement) -> + return expressions if expressions.contains_pure_statement() + func: new ParentheticalNode(new CodeNode([], Expressions.wrap([expressions]))) + call: new CallNode(new ValueNode(func, [new AccessorNode(literal('call'))]), [literal('this')]) + if statement then Expressions.wrap([call]) else call + +} + # Constants # --------- @@ -1192,38 +1317,11 @@ TAB: ' ' TRAILING_WHITESPACE: /\s+$/gm # Keep this identifier regex in sync with the Lexer. -IDENTIFIER: /^[a-zA-Z$_](\w|\$)*$/ +IDENTIFIER: /^[a-zA-Z\$_](\w|\$)*$/ # Utility Functions # ----------------- -# Merge objects, returning a fresh copy with attributes from both sides. -# Used every time `compile` is called, to allow properties in the options hash -# to propagate down the tree without polluting other branches. -merge: (options, overrides) -> - fresh: {} - (fresh[key]: val) for key, val of options - (fresh[key]: val) for key, val of overrides if overrides - fresh - -# Trim out all falsy values from an array. -compact: (array) -> item for item in array when item - -# Return a completely flattened version of an array. Handy for getting a -# list of `children`. -flatten: (array) -> - memo: [] - for item in array - if item instanceof Array then memo: memo.concat(item) else memo.push(item) - memo - -# Delete a key from an object, returning the value. Useful when a node is -# looking for a particular method in an options hash. -del: (obj, key) -> - val: obj[key] - delete obj[key] - val - # Handy helper for a generating LiteralNode. literal: (name) -> new LiteralNode(name) diff --git a/src/repl.coffee b/src/repl.coffee index f2f789cf3f..f0cb54df01 100644 --- a/src/repl.coffee +++ b/src/repl.coffee @@ -5,13 +5,14 @@ # coffee> puts "$num bottles of beer" for num in [99..1] # Require the **coffee-script** module to get access to the compiler. -CoffeeScript: require 'coffee-script' +CoffeeScript: require './coffee-script' +helpers: require('./helpers').helpers # Our prompt. prompt: 'coffee> ' # Quick alias for quitting the REPL. -process.mixin { +helpers.extend global, { quit: -> process.exit(0) } diff --git a/src/rewriter.coffee b/src/rewriter.coffee index 1fe3a8d8d6..ecb6ca158f 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -1,13 +1,19 @@ -# The CoffeeScript language has a decent amount of optional syntax, -# implicit syntax, and shorthand syntax. These things can greatly complicate a -# grammar and bloat the resulting parse table. Instead of making the parser -# handle it all, we take a series of passes over the token stream, -# using this **Rewriter** to convert shorthand into the unambiguous long form, -# add implicit indentation and parentheses, balance incorrect nestings, and -# generally clean things up. +# The CoffeeScript language has a good deal of optional syntax, implicit syntax, +# and shorthand syntax. This can greatly complicate a grammar and bloat +# the resulting parse table. Instead of making the parser handle it all, we take +# a series of passes over the token stream, using this **Rewriter** to convert +# shorthand into the unambiguous long form, add implicit indentation and +# parentheses, balance incorrect nestings, and generally clean things up. # Set up exported variables for both Node.js and the browser. -this.exports: this unless process? +if process? + helpers: require('./helpers').helpers +else + this.exports: this + helpers: this.helpers + +# Import the helpers we need. +include: helpers.include # The **Rewriter** class is used by the [Lexer](lexer.html), directly against # its internal array of tokens. @@ -40,7 +46,7 @@ exports.Rewriter: class Rewriter while true break unless @tokens[i] move: block(@tokens[i - 1], @tokens[i], @tokens[i + 1], i) - i += move + i: + move true # Massage newlines and indentations so that comments don't have to be @@ -50,11 +56,11 @@ exports.Rewriter: class Rewriter return 1 unless token[0] is 'COMMENT' after: @tokens[i + 2] if after and after[0] is 'INDENT' - @tokens.splice(i + 2, 1) - @tokens.splice(i, 0, after) + @tokens.splice i + 2, 1 + @tokens.splice i, 0, after return 1 else if prev and prev[0] isnt 'TERMINATOR' and prev[0] isnt 'INDENT' and prev[0] isnt 'OUTDENT' - @tokens.splice(i, 0, ['TERMINATOR', "\n", prev[2]]) + @tokens.splice i, 0, ['TERMINATOR', "\n", prev[2]] return 2 else return 1 @@ -62,7 +68,7 @@ exports.Rewriter: class Rewriter # Leading newlines would introduce an ambiguity in the grammar, so we # dispatch them here. remove_leading_newlines: -> - @tokens.shift() while @tokens[0][0] is 'TERMINATOR' + @tokens.shift() while @tokens[0] and @tokens[0][0] is 'TERMINATOR' # Some blocks occur in the middle of expressions -- when we're expecting # this, remove their trailing newlines. @@ -82,20 +88,20 @@ exports.Rewriter: class Rewriter switch token[0] when 'CALL_START' then parens.push(0) when 'INDEX_START' then brackets.push(0) - when '(' then parens[parens.length - 1] += 1 - when '[' then brackets[brackets.length - 1] += 1 + when '(' then parens[parens.length - 1]: + 1 + when '[' then brackets[brackets.length - 1]: + 1 when ')' if parens[parens.length - 1] is 0 parens.pop() token[0]: 'CALL_END' else - parens[parens.length - 1] -= 1 + parens[parens.length - 1]: - 1 when ']' if brackets[brackets.length - 1] == 0 brackets.pop() token[0]: 'INDEX_END' else - brackets[brackets.length - 1] -= 1 + brackets[brackets.length - 1]: - 1 return 1 # Methods may be optionally called without parentheses, for simple cases. @@ -103,15 +109,24 @@ exports.Rewriter: class Rewriter # deal with them. add_implicit_parentheses: -> stack: [0] + calls: 0 @scan_tokens (prev, token, post, i) => tag: token[0] - stack.push(0) if tag is 'INDENT' - if tag is 'OUTDENT' - last: stack.pop() - stack[stack.length - 1] += last + switch tag + when 'CALL_START' then calls: + 1 + when 'CALL_END' then calls: - 1 + when 'INDENT' then stack.push(0) + when 'OUTDENT' + last: stack.pop() + stack[stack.length - 1]: + last + open: stack[stack.length - 1] > 0 + if tag is 'CALL_END' and calls < 0 and open + stack[stack.length - 1]: - 1 + @tokens.splice(i, 0, ['CALL_END', ')', token[2]]) + return 2 if !post? or include IMPLICIT_END, tag return 1 if tag is 'INDENT' and prev and include IMPLICIT_BLOCK, prev[0] - if stack[stack.length - 1] > 0 or tag is 'INDENT' + if open or tag is 'INDENT' idx: if tag is 'OUTDENT' then i + 1 else i stack_pointer: if tag is 'INDENT' then 2 else 1 for tmp in [0...stack[stack.length - stack_pointer]] @@ -120,8 +135,9 @@ exports.Rewriter: class Rewriter stack[stack.length - stack_pointer]: 0 return size return 1 unless prev and include(IMPLICIT_FUNC, prev[0]) and include IMPLICIT_CALL, tag + calls: 0 @tokens.splice(i, 0, ['CALL_START', '(', token[2]]) - stack[stack.length - 1] += 1 + stack[stack.length - 1]: + 1 return 2 # Because our grammar is LALR(1), it can't handle some single-line @@ -138,7 +154,7 @@ exports.Rewriter: class Rewriter idx: i + 1 parens: 0 while true - idx += 1 + idx: + 1 tok: @tokens[idx] pre: @tokens[idx - 1] if (not tok or @@ -148,8 +164,8 @@ exports.Rewriter: class Rewriter insertion: if pre[0] is "," then idx - 1 else idx @tokens.splice(insertion, 0, ['OUTDENT', 2, token[2]]) break - parens += 1 if tok[0] is '(' - parens -= 1 if tok[0] is ')' + parens: + 1 if tok[0] is '(' + parens: - 1 if tok[0] is ')' return 1 unless token[0] is 'THEN' @tokens.splice(i, 1) return 0 @@ -158,16 +174,22 @@ exports.Rewriter: class Rewriter # the course of the token stream. ensure_balance: (pairs) -> levels: {} + open_line: {} @scan_tokens (prev, token, post, i) => for pair in pairs [open, close]: pair - levels[open] ||= 0 - levels[open] += 1 if token[0] is open - levels[open] -= 1 if token[0] is close + levels[open]: or 0 + if token[0] is open + open_line[open]: token[2] if levels[open] == 0 + levels[open]: + 1 + levels[open]: - 1 if token[0] is close throw new Error("too many ${token[1]} on line ${token[2] + 1}") if levels[open] < 0 return 1 unclosed: key for key, value of levels when value > 0 - throw new Error("unclosed ${unclosed[0]}") if unclosed.length + if unclosed.length + open: unclosed[0] + line: open_line[open] + 1 + throw new Error "unclosed $open on line $line" # We'd like to support syntax like this: # @@ -196,14 +218,14 @@ exports.Rewriter: class Rewriter return 1 else if include EXPRESSION_END, tag if debt[inv] > 0 - debt[inv] -= 1 + debt[inv]: - 1 @tokens.splice i, 1 return 0 else match: stack.pop() mtag: match[0] return 1 if tag is INVERSES[mtag] - debt[mtag] += 1 + debt[mtag]: + 1 val: if mtag is 'INDENT' then match[1] else INVERSES[mtag] @tokens.splice i, 0, [INVERSES[mtag], val] return 1 @@ -235,11 +257,11 @@ EXPRESSION_END: pair[1] for pair in BALANCED_PAIRS EXPRESSION_CLOSE: ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END # Tokens that, if followed by an `IMPLICIT_CALL`, indicate a function invocation. -IMPLICIT_FUNC: ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END'] +IMPLICIT_FUNC: ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '<-'] # If preceded by an `IMPLICIT_FUNC`, indicates a function invocation. IMPLICIT_CALL: ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', - 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', + 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'EXTENSION', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT', '@', '->', '=>', '[', '(', '{'] @@ -253,10 +275,3 @@ IMPLICIT_END: ['IF', 'UNLESS', 'FOR', 'WHILE', 'TERMINATOR', 'INDENT', 'OUTDEN # The grammar can't disambiguate them, so we insert the implicit indentation. SINGLE_LINERS: ['ELSE', "->", "=>", 'TRY', 'FINALLY', 'THEN'] SINGLE_CLOSERS: ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'] - -# Utility Functions -# ----------------- - -# Does a list include a value? -include: (list, value) -> - list.indexOf(value) >= 0 diff --git a/test/test_arguments.coffee b/test/test_arguments.coffee index 7915a980b0..66b6c8ac4c 100644 --- a/test/test_arguments.coffee +++ b/test/test_arguments.coffee @@ -17,18 +17,9 @@ ok(area( ) is 100, 'newline delimited arguments') -curried: -> - ok area.apply(this, arguments.concat(20, 20)) is 100, 'arguments converted into an array' +sum_of_args: -> + sum: 0 + sum: + val for val in arguments + sum -curried 10, 10 - - -func: -> - arguments: 25 - arguments - -ok func(100) is 25, 'arguments as a regular identifier' - - -this.arguments: 10 -ok @arguments is 10, 'arguments accessed as a property' +ok sum_of_args(1, 2, 3, 4, 5) is 15 \ No newline at end of file diff --git a/test/test_bind.coffee b/test/test_bind.coffee new file mode 100644 index 0000000000..3f370588e3 --- /dev/null +++ b/test/test_bind.coffee @@ -0,0 +1,20 @@ +f: (x,y,z) -> + x * y * z * ((@num or 4) + 5) + +obj: {num: 5} + +func: f <- obj, 1, 1 +ok func(2) is 20 + +func: f <- {}, 1, 2 +ok func(2) is 36 + +func: f <- obj +ok func(1, 2, 3) is 60 + +in_first_ten: helpers.include <- null, [0...10] + +ok in_first_ten 3 +ok in_first_ten 9 +ok not in_first_ten -1 +ok not in_first_ten 12 \ No newline at end of file diff --git a/test/test_break.coffee b/test/test_break.coffee new file mode 100644 index 0000000000..303a7f722a --- /dev/null +++ b/test/test_break.coffee @@ -0,0 +1,28 @@ +# Test with break at the top level. +array: [1,2,3] +call_with_lambda: (l) -> null +for i in array + result: call_with_lambda(->) + if i == 2 + puts "i = 2" + else + break + +ok result is null + + +# Test with break *not* at the top level. +some_func: (input) -> + takes_lambda: (l) -> null + for i in [1,2] + result: takes_lambda(->) + if input == 1 + return 1 + else + break + + return 2 + +ok some_func(1) is 1 +ok some_func(2) is 2 + diff --git a/test/test_funky_comments.coffee b/test/test_comments.coffee similarity index 63% rename from test/test_funky_comments.coffee rename to test/test_comments.coffee index babd7181e3..5c43aaea7b 100644 --- a/test/test_funky_comments.coffee +++ b/test/test_comments.coffee @@ -33,3 +33,23 @@ obj: { two: 2 # comment } + +result: if true # comment + false + +ok not result + +result: if false + false +else # comment + 45 + +ok result is 45 + + +test: + 'test ' + + 'test ' + # comment + 'test' + +ok test is 'test test test' diff --git a/test/test_compilation.coffee b/test/test_compilation.coffee new file mode 100644 index 0000000000..1f40a7346e --- /dev/null +++ b/test/test_compilation.coffee @@ -0,0 +1,58 @@ +# Ensure that carriage returns don't break compilation on Windows. + +js: CoffeeScript.compile("one\r\ntwo", {no_wrap: on}) + +ok js is "one;\ntwo;" + + +# Try out language extensions to CoffeeScript. + +# Create the Node were going to add -- a literal syntax for splitting +# strings into letters. +class SplitNode extends BaseNode + type: 'Split' + + constructor: (variable) -> + @variable: variable + + compile_node: (o) -> + "'${@variable}'.split('')" + +# Extend CoffeeScript with our lexing function that matches --wordgoeshere-- +# and creates a SplitNode. +CoffeeScript.extend -> + return false unless variable: @match(/^--(\w+)--/, 1) + @i: + variable.length + 4 + @token 'EXTENSION', new SplitNode(variable) + true + +# Compile with the extension. +js: CoffeeScript.compile 'return --tobesplit--', {no_wrap: on} + +ok js is "return 'tobesplit'.split('');" + + +# Let's try a different extension, for Ruby-style array literals. + +class WordArrayNode extends BaseNode + type: 'WordArray' + + constructor: (words) -> + @words: words + + compile_node: (o) -> + strings = ("\"$word\"" for word in @words).join ', ' + "[$strings]" + +CoffeeScript.extend -> + return false unless words: @chunk.match(/^%w\{(.*?)\}/) + @i: + words[0].length + @token 'EXTENSION', new WordArrayNode(words[1].split(/\s+/)) + true + +js: CoffeeScript.compile 'puts %w{one two three}', {no_wrap: on} + +ok js is 'puts(["one", "two", "three"]);' + +Lexer.extensions: [] + diff --git a/test/test_fancy_if_statement.coffee b/test/test_fancy_if_statement.coffee index f4359a3ed2..f31e2d1498 100644 --- a/test/test_fancy_if_statement.coffee +++ b/test/test_fancy_if_statement.coffee @@ -23,4 +23,15 @@ else if NaN else true -ok result \ No newline at end of file +ok result + + +# If statement with a comment-only clause. + + +result: if false + # comment +else + 27 + +ok result is 27 diff --git a/test/test_functions.coffee b/test/test_functions.coffee index 86be8f579e..a48d087a1b 100644 --- a/test/test_functions.coffee +++ b/test/test_functions.coffee @@ -73,6 +73,23 @@ result: call -> ok result is 10 +# More fun with optional parens. + +fn: (arg) -> arg + +ok fn(fn {prop: 101}).prop is 101 + + +# Multi-blocks with optional parens. + +result: fn( -> + fn -> + "Wrapped" +) + +ok result()() is 'Wrapped' + + # And even with strange things like this: funcs: [((x) -> x), ((x) -> x * x)] @@ -89,3 +106,8 @@ ok result is 'lo' func: (x) -> (x) -> (x) -> x ok func(1)(2)(3) is 3 + + +# Ensure that functions with the same name don't clash with helper functions. +del: -> 5 +ok del() is 5 diff --git a/test/test_half_assignments.coffee b/test/test_half_assignments.coffee new file mode 100644 index 0000000000..7ad8e267a9 --- /dev/null +++ b/test/test_half_assignments.coffee @@ -0,0 +1,45 @@ +num: 10 +num: - 5 + +ok num is 5 + +num: -3 + +ok num is -3 + +num: +3 + +ok num is 3 + +num = * 10 + +ok num is 30 + +num: / 10 + +ok num is 3 + + +val: false +val: or 'value' + +ok val is 'value' + +val = and 'other' + +ok val is 'other' + + +val: null +val: ? 'value' + +ok val is 'value' + + +val: 6 +val: -(10) + +ok val is -10 + +val: - (10) +ok val is -20 \ No newline at end of file diff --git a/test/test_heredocs.coffee b/test/test_heredocs.coffee index b9cd2e2c5e..01421d6a9b 100644 --- a/test/test_heredocs.coffee +++ b/test/test_heredocs.coffee @@ -49,4 +49,20 @@ ok a is "a\n\n\nb c" a: '''more"than"one"quote''' -ok a is 'more"than"one"quote' \ No newline at end of file +ok a is 'more"than"one"quote' + + +val: 10 + +a: """ + basic heredoc $val + on two lines + """ + +b: ''' + basic heredoc $val + on two lines + ''' + +ok a is "basic heredoc 10\non two lines" +ok b is "basic heredoc \$val\non two lines" diff --git a/test/test_importing.coffee b/test/test_importing.coffee new file mode 100644 index 0000000000..c7f3391ea0 --- /dev/null +++ b/test/test_importing.coffee @@ -0,0 +1,2 @@ +# Check if it can import and execute a coffeescript-only module successfully. +ok require('./test_module').func() is "from over there" \ No newline at end of file diff --git a/test/test_literals.coffee b/test/test_literals.coffee index 03e483b7b5..1ad0efa9bb 100644 --- a/test/test_literals.coffee +++ b/test/test_literals.coffee @@ -31,6 +31,13 @@ money$: 'dollars' ok money$ is 'dollars' +multiline: "one + two + three" + +ok multiline is 'one two three' + + ok {a: (num) -> num is 10 }.a 10 diff --git a/test/test_module.coffee b/test/test_module.coffee new file mode 100644 index 0000000000..e776984787 --- /dev/null +++ b/test/test_module.coffee @@ -0,0 +1,5 @@ +# This file is imported by `test_importing.coffee` + +local: "from over there" + +exports.func: -> local \ No newline at end of file diff --git a/test/test_operations.coffee b/test/test_operations.coffee index 7c09c2c170..5294867a50 100644 --- a/test/test_operations.coffee +++ b/test/test_operations.coffee @@ -18,3 +18,13 @@ i: 0 func: -> i++ ok 1 > func() < 1 + + +# `:` and `=` should be interchangeable, as should be `==` and `is`. + +a: 1 +b: 1 + +ok a is 1 and b is 1 +ok a == b +ok a is b diff --git a/test/test_pattern_matching.coffee b/test/test_pattern_matching.coffee index 856c9e7867..63b025a63a 100644 --- a/test/test_pattern_matching.coffee +++ b/test/test_pattern_matching.coffee @@ -28,6 +28,20 @@ ok a is 1 ok b is 2 ok c is 3 +[x,y...,z]: [1,2,3,4,5] + +ok x is 1 +ok y.length is 3 +ok z is 5 + +[x, [y, mids..., last], z..., end]: [1, [10, 20, 30, 40], 2,3,4, 5] + +ok x is 1 +ok y is 10 +ok mids.length is 2 and mids[1] is 30 +ok last is 40 +ok z.length is 3 and z[2] is 4 +ok end is 5 obj: {x: 10, y: 20, z: 30} @@ -72,4 +86,10 @@ test: { {person: {address: [ignore, addr...]}}: test -ok addr.join(', ') is "Street 101, Apt 101, City 101" \ No newline at end of file +ok addr.join(', ') is "Street 101, Apt 101, City 101" + + +[a, b]: if true then [2, 1] else [1, 2] + +ok a is 2 +ok b is 1 diff --git a/test/test_regexp_interpolation.coffee b/test/test_regexp_interpolation.coffee new file mode 100644 index 0000000000..c9a9b939f7 --- /dev/null +++ b/test/test_regexp_interpolation.coffee @@ -0,0 +1,19 @@ +name: 'Bob' + +ok not not '"Bob"'.match(/^"${name}"$/i) +ok '"Bobby"'.match(/^"${name}"$/i) is null + +ok not not 'Bob'.match(/^$name$/) +ok 'Bobby'.match(/^$name/) + +ok 'Bobby'.match(/${"${"${"$name"}"}"}/imgy) + +ok '$a$b$c'.match(/\$A\$B\$C/i) + +a: 1 +b: 2 +c: 3 +ok '123'.match(/$a$b$c/i) + +[a, b, c]: [1, 2, /\d+/] +ok (/$a$b$c$/i).toString() is '/12/\\d+/$/i' diff --git a/test/test_regexps.coffee b/test/test_regexps.coffee index bce336fd3e..6ef0018f92 100644 --- a/test/test_regexps.coffee +++ b/test/test_regexps.coffee @@ -9,4 +9,6 @@ y: 4 x: 2 g: 1 -ok y / x/g is 2 \ No newline at end of file +ok y / x/g is 2 + +ok 'http://google.com'.match(/:\/\/goog/) \ No newline at end of file diff --git a/test/test_splats.coffee b/test/test_splats.coffee index 87b0afd7fb..a679a2a4b2 100644 --- a/test/test_splats.coffee +++ b/test/test_splats.coffee @@ -6,13 +6,14 @@ result: func 1, 2, 3, 4, 5 ok result is "3 4 5" -gold: silver: bronze: the_field: null +gold: silver: bronze: the_field: last: null -medalists: (first, second, third, rest...) -> +medalists: (first, second, third, rest..., unlucky) -> gold: first silver: second bronze: third - the_field: rest + the_field: rest.concat([last]) + last: unlucky contenders: [ "Michael Phelps" @@ -32,8 +33,21 @@ medalists "Mighty Mouse", contenders... ok gold is "Mighty Mouse" ok silver is "Michael Phelps" ok bronze is "Liu Xiang" +ok last is "Usain Bolt" ok the_field.length is 8 +contenders.reverse() +medalists contenders[0...2]..., "Mighty Mouse", contenders[2...contenders.length]... + +ok gold is "Usain Bolt" +ok silver is "Asafa Powell" +ok bronze is "Mighty Mouse" +ok last is "Michael Phelps" +ok the_field.length is 8 + +medalists contenders..., 'Tim', 'Bob', 'Jim' +ok last is 'Jim' + obj: { name: 'bob' @@ -44,4 +58,21 @@ obj: { @accessor(args...) } -ok obj.getNames() is 'bob jane ted' \ No newline at end of file +ok obj.getNames() is 'bob jane ted' + + +crowd: [ + contenders... + "Mighty Mouse" +] + +bests: [ + "Mighty Mouse" + contenders[0..3]... +] + +ok crowd[0] is contenders[0] +ok crowd[10] is "Mighty Mouse" + +ok bests[1] is contenders[0] +ok bests[4] is contenders[3] \ No newline at end of file diff --git a/test/test_string_interpolation.coffee b/test/test_string_interpolation.coffee index 5c45454491..a69c2780a4 100644 --- a/test/test_string_interpolation.coffee +++ b/test/test_string_interpolation.coffee @@ -61,3 +61,8 @@ ok "Where is ${"the nested ${obj["name"]}"}?" is 'Where is the nested Joe?' ok "Hello ${world ? "$hello"}" is 'Hello World' ok "Hello ${"${"${obj["name"]}" + '!'}"}" is 'Hello Joe!' + +a: 1 +b: 2 +c: 3 +ok "$a$b$c" is '123' diff --git a/test/test_switch.coffee b/test/test_switch.coffee index 97475cbcfe..fe3d7bb379 100644 --- a/test/test_switch.coffee +++ b/test/test_switch.coffee @@ -33,7 +33,7 @@ ok !func(8) # Should cache the switch value, if anything fancier than a literal. num: 5 -result: switch num += 5 +result: switch num: + 5 when 5 then false when 15 then false when 10 then true diff --git a/test/test_try_catch.coffee b/test/test_try_catch.coffee new file mode 100644 index 0000000000..ccc2e4a76f --- /dev/null +++ b/test/test_try_catch.coffee @@ -0,0 +1,14 @@ +result: try + 10 +finally + 15 + +ok result is 10 + + +result: try + throw 'up' +catch err + err.length + +ok result is 2 \ No newline at end of file

scope.coffee

#

The Scope class regulates lexical scoping within CoffeeScript. As you generate code, you create a tree of scopes in the same shape as the nested function bodies. Each scope knows about the variables declared within it, and has a reference to its parent enclosing scope. In this way, we know which diff --git a/documentation/docs/underscore.html b/documentation/docs/underscore.html new file mode 100644 index 0000000000..2626e1dabe --- /dev/null +++ b/documentation/docs/underscore.html @@ -0,0 +1,282 @@ + underscore.coffee

underscore.coffee

#
#

Underscore.coffee +(c) 2010 Jeremy Ashkenas, DocumentCloud Inc. +Underscore is freely distributable under the terms of the +MIT license. +Portions of Underscore are inspired by or borrowed from +Prototype.js, Oliver Steele's +Functional, and John Resig's +Micro-Templating. +For all details and documentation: +http://documentcloud.github.com/underscore/

#

Baseline setup

#

Establish the root object, window in the browser, or global on the server.

  root: this
#

Save the previous value of the _ variable.

  previousUnderscore: root._
#

Establish the object that gets thrown to break out of a loop iteration. +StopIteration is SOP on Mozilla.

  breaker: if typeof(StopIteration) is 'undefined' then '__break__' else StopIteration
#

Helper function to escape RegExp contents, because JS doesn't have one.

  escapeRegExp: (string) -> string.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1')
#

Save bytes in the minified (but not gzipped) version:

  ArrayProto:           Array.prototype
+  ObjProto:             Object.prototype
#

Create quick reference variables for speed access to core prototypes.

  slice:                ArrayProto.slice
+  unshift:              ArrayProto.unshift
+  toString:             ObjProto.toString
+  hasOwnProperty:       ObjProto.hasOwnProperty
+  propertyIsEnumerable: ObjProto.propertyIsEnumerable
#

All ECMA5 native implementations we hope to use are declared here.

  nativeForEach:        ArrayProto.forEach
+  nativeMap:            ArrayProto.map
+  nativeReduce:         ArrayProto.reduce
+  nativeReduceRight:    ArrayProto.reduceRight
+  nativeFilter:         ArrayProto.filter
+  nativeEvery:          ArrayProto.every
+  nativeSome:           ArrayProto.some
+  nativeIndexOf:        ArrayProto.indexOf
+  nativeLastIndexOf:    ArrayProto.lastIndexOf
+  nativeIsArray:        Array.isArray
+  nativeKeys:           Object.keys
#

Create a safe reference to the Underscore object for use below.

  _: (obj) -> new wrapper(obj)
#

Export the Underscore object for CommonJS.

  if typeof(exports) != 'undefined' then exports._: _
#

Export Underscore to global scope.

  root._: _
#

Current version.

  _.VERSION: '0.6.0'
#

Collection Functions

#

The cornerstone, an each implementation. +Handles objects implementing forEach, arrays, and raw objects.

  _.each: (obj, iterator, context) ->
+    try
+      if nativeForEach and obj.forEach is nativeForEach
+        obj.forEach iterator, context
+      else if _.isNumber obj.length
+        iterator.call(context, obj[i], i, obj) for i in [0...obj.length]
+      else
+        iterator.call(context, val, key, obj) for key, val of obj
+    catch e
+      throw e if e isnt breaker
+    obj
#

Return the results of applying the iterator to each element. Use JavaScript +1.6's version of map, if possible.

  _.map: (obj, iterator, context) ->
+    return obj.map(iterator, context) if nativeMap and obj.map is nativeMap
+    results: []
+    _.each obj, (value, index, list) ->
+      results.push iterator.call context, value, index, list
+    results
#

Reduce builds up a single result from a list of values. Also known as +inject, or foldl. Uses JavaScript 1.8's version of reduce, if possible.

  _.reduce: (obj, memo, iterator, context) ->
+    return obj.reduce(_.bind(iterator, context), memo) if nativeReduce and obj.reduce is nativeReduce
+    _.each obj, (value, index, list) ->
+      memo: iterator.call context, memo, value, index, list
+    memo
#

The right-associative version of reduce, also known as foldr. Uses +JavaScript 1.8's version of reduceRight, if available.

  _.reduceRight: (obj, memo, iterator, context) ->
+    return obj.reduceRight(_.bind(iterator, context), memo) if nativeReduceRight and obj.reduceRight is nativeReduceRight
+    _.each _.clone(_.toArray(obj)).reverse(), (value, index) ->
+      memo: iterator.call context, memo, value, index, obj
+    memo
#

Return the first value which passes a truth test.

  _.detect: (obj, iterator, context) ->
+    result: null
+    _.each obj, (value, index, list) ->
+      if iterator.call context, value, index, list
+        result: value
+        _.breakLoop()
+    result
#

Return all the elements that pass a truth test. Use JavaScript 1.6's +filter, if it exists.

  _.filter: (obj, iterator, context) ->
+    return obj.filter iterator, context if nativeFilter and obj.filter is nativeFilter
+    results: []
+    _.each obj, (value, index, list) ->
+      results.push value if iterator.call context, value, index, list
+    results
#

Return all the elements for which a truth test fails.

  _.reject: (obj, iterator, context) ->
+    results: []
+    _.each obj, (value, index, list) ->
+      results.push value if not iterator.call context, value, index, list
+    results
#

Determine whether all of the elements match a truth test. Delegate to +JavaScript 1.6's every, if it is present.

  _.every: (obj, iterator, context) ->
+    iterator ||= _.identity
+    return obj.every iterator, context if nativeEvery and obj.every is nativeEvery
+    result: true
+    _.each obj, (value, index, list) ->
+      _.breakLoop() unless (result: result and iterator.call(context, value, index, list))
+    result
#

Determine if at least one element in the object matches a truth test. Use +JavaScript 1.6's some, if it exists.

  _.some: (obj, iterator, context) ->
+    iterator ||= _.identity
+    return obj.some iterator, context if nativeSome and obj.some is nativeSome
+    result: false
+    _.each obj, (value, index, list) ->
+      _.breakLoop() if (result: iterator.call(context, value, index, list))
+    result
#

Determine if a given value is included in the array or object, +based on ===.

  _.include: (obj, target) ->
+    return _.indexOf(obj, target) isnt -1 if nativeIndexOf and obj.indexOf is nativeIndexOf
+    for key, val of obj
+      return true if val is target
+    false
#

Invoke a method with arguments on every item in a collection.

  _.invoke: (obj, method) ->
+    args: _.rest arguments, 2
+    (if method then val[method] else val).apply(val, args) for val in obj
#

Convenience version of a common use case of map: fetching a property.

  _.pluck: (obj, key) ->
+    _.map(obj, (val) -> val[key])
#

Return the maximum item or (item-based computation).

  _.max: (obj, iterator, context) ->
+    return Math.max.apply(Math, obj) if not iterator and _.isArray(obj)
+    result: {computed: -Infinity}
+    _.each obj, (value, index, list) ->
+      computed: if iterator then iterator.call(context, value, index, list) else value
+      computed >= result.computed and (result: {value: value, computed: computed})
+    result.value
#

Return the minimum element (or element-based computation).

  _.min: (obj, iterator, context) ->
+    return Math.min.apply(Math, obj) if not iterator and _.isArray(obj)
+    result: {computed: Infinity}
+    _.each obj, (value, index, list) ->
+      computed: if iterator then iterator.call(context, value, index, list) else value
+      computed < result.computed and (result: {value: value, computed: computed})
+    result.value
#

Sort the object's values by a criterion produced by an iterator.

  _.sortBy: (obj, iterator, context) ->
+    _.pluck(((_.map obj, (value, index, list) ->
+      {value: value, criteria: iterator.call(context, value, index, list)}
+    ).sort((left, right) ->
+      a: left.criteria; b: right.criteria
+      if a < b then -1 else if a > b then 1 else 0
+    )), 'value')
#

Use a comparator function to figure out at what index an object should +be inserted so as to maintain order. Uses binary search.

  _.sortedIndex: (array, obj, iterator) ->
+    iterator ||= _.identity
+    low:  0
+    high: array.length
+    while low < high
+      mid: (low + high) >> 1
+      if iterator(array[mid]) < iterator(obj) then low: mid + 1 else high: mid
+    low
#

Convert anything iterable into a real, live array.

  _.toArray: (iterable) ->
+    return []                   if (!iterable)
+    return iterable.toArray()   if (iterable.toArray)
+    return iterable             if (_.isArray(iterable))
+    return slice.call(iterable) if (_.isArguments(iterable))
+    _.values(iterable)
#

Return the number of elements in an object.

  _.size: (obj) -> _.toArray(obj).length
#

Array Functions

#

Get the first element of an array. Passing n will return the first N +values in the array. Aliased as head. The guard check allows it to work +with map.

  _.first: (array, n, guard) ->
+    if n and not guard then slice.call(array, 0, n) else array[0]
#

Returns everything but the first entry of the array. Aliased as tail. +Especially useful on the arguments object. Passing an index will return +the rest of the values in the array from that index onward. The guard +check allows it to work with map.

  _.rest: (array, index, guard) ->
+    slice.call(array, if _.isUndefined(index) or guard then 1 else index)
#

Get the last element of an array.

  _.last: (array) -> array[array.length - 1]
#

Trim out all falsy values from an array.

  _.compact: (array) -> item for item in array when item
#

Return a completely flattened version of an array.

  _.flatten: (array) ->
+    _.reduce array, [], (memo, value) ->
+      return memo.concat(_.flatten(value)) if _.isArray value
+      memo.push value
+      memo
#

Return a version of the array that does not contain the specified value(s).

  _.without: (array) ->
+    values: _.rest arguments
+    val for val in _.toArray(array) when not _.include values, val
#

Produce a duplicate-free version of the array. If the array has already +been sorted, you have the option of using a faster algorithm.

  _.uniq: (array, isSorted) ->
+    memo: []
+    for el, i in _.toArray array
+      memo.push el if i is 0 || (if isSorted is true then _.last(memo) isnt el else not _.include(memo, el))
+    memo
#

Produce an array that contains every item shared between all the +passed-in arrays.

  _.intersect: (array) ->
+    rest: _.rest arguments
+    _.select _.uniq(array), (item) ->
+      _.all rest, (other) ->
+        _.indexOf(other, item) >= 0
#

Zip together multiple lists into a single array -- elements that share +an index go together.

  _.zip: ->
+    length:  _.max _.pluck arguments, 'length'
+    results: new Array length
+    for i in [0...length]
+      results[i]: _.pluck arguments, String i
+    results
#

If the browser doesn't supply us with indexOf (I'm looking at you, MSIE), +we need this function. Return the position of the first occurence of an +item in an array, or -1 if the item is not included in the array.

  _.indexOf: (array, item) ->
+    return array.indexOf item if nativeIndexOf and array.indexOf is nativeIndexOf
+    i: 0; l: array.length
+    while l - i
+      if array[i] is item then return i else i++
+    -1
#

Provide JavaScript 1.6's lastIndexOf, delegating to the native function, +if possible.

  _.lastIndexOf: (array, item) ->
+    return array.lastIndexOf(item) if nativeLastIndexOf and array.lastIndexOf is nativeLastIndexOf
+    i: array.length
+    while i
+      if array[i] is item then return i else i--
+    -1
#

Generate an integer Array containing an arithmetic progression. A port of +the native Python range function.

  _.range: (start, stop, step) ->
+    a:        arguments
+    solo:     a.length <= 1
+    i: start: if solo then 0 else a[0]
+    stop:     if solo then a[0] else a[1]
+    step:     a[2] or 1
+    len:      Math.ceil((stop - start) / step)
+    return [] if len <= 0
+    range:    new Array len
+    idx:      0
+    while true
+      return range if (if step > 0 then i - stop else stop - i) >= 0
+      range[idx]: i
+      idx++
+      i+= step
#

Function Functions

#

Create a function bound to a given object (assigning this, and arguments, +optionally). Binding with arguments is also known as curry.

  _.bind: (func, obj) ->
+    args: _.rest arguments, 2
+    -> func.apply obj or root, args.concat arguments
#

Bind all of an object's methods to that object. Useful for ensuring that +all callbacks defined on an object belong to it.

  _.bindAll: (obj) ->
+    funcs: if arguments.length > 1 then _.rest(arguments) else _.functions(obj)
+    _.each funcs, (f) -> obj[f]: _.bind obj[f], obj
+    obj
#

Delays a function for the given number of milliseconds, and then calls +it with the arguments supplied.

  _.delay: (func, wait) ->
+    args: _.rest arguments, 2
+    setTimeout((-> func.apply(func, args)), wait)
#

Defers a function, scheduling it to run after the current call stack has +cleared.

  _.defer: (func) ->
+    _.delay.apply _, [func, 1].concat _.rest arguments
#

Returns the first function passed as an argument to the second, +allowing you to adjust arguments, run code before and after, and +conditionally execute the original function.

  _.wrap: (func, wrapper) ->
+    -> wrapper.apply wrapper, [func].concat arguments
#

Returns a function that is the composition of a list of functions, each +consuming the return value of the function that follows.

  _.compose: ->
+    funcs: arguments
+    ->
+      args: arguments
+      for i in [(funcs.length - 1)..0]
+        args: [funcs[i].apply(this, args)]
+      args[0]
#

Object Functions

#

Retrieve the names of an object's properties.

  _.keys: nativeKeys or (obj) ->
+    return _.range 0, obj.length if _.isArray(obj)
+    key for key, val of obj
#

Retrieve the values of an object's properties.

  _.values: (obj) ->
+    _.map obj, _.identity
#

Return a sorted list of the function names available in Underscore.

  _.functions: (obj) ->
+    _.filter(_.keys(obj), (key) -> _.isFunction(obj[key])).sort()
#

Extend a given object with all of the properties in a source object.

  _.extend: (destination, source) ->
+    (destination[key]: val) for key, val of source
+    destination
#

Create a (shallow-cloned) duplicate of an object.

  _.clone: (obj) ->
+    return obj.slice 0 if _.isArray obj
+    _.extend {}, obj
#

Invokes interceptor with the obj, and then returns obj. +The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.

  _.tap: (obj, interceptor) ->
+    interceptor obj
+    obj
#

Perform a deep comparison to check if two objects are equal.

  _.isEqual: (a, b) ->
#

Check object identity.

    return true if a is b
#

Different types?

    atype: typeof(a); btype: typeof(b)
+    return false if atype isnt btype
#

Basic equality test (watch out for coercions).

    return true if `a == b`
#

One is falsy and the other truthy.

    return false if (!a and b) or (a and !b)
#

One of them implements an isEqual()?

    return a.isEqual(b) if a.isEqual
#

Check dates' integer values.

    return a.getTime() is b.getTime() if _.isDate(a) and _.isDate(b)
#

Both are NaN?

    return true if _.isNaN(a) and _.isNaN(b)
#

Compare regular expressions.

    if _.isRegExp(a) and _.isRegExp(b)
+      return a.source     is b.source and
+             a.global     is b.global and
+             a.ignoreCase is b.ignoreCase and
+             a.multiline  is b.multiline
#

If a is not an object by this point, we can't handle it.

    return false if atype isnt 'object'
#

Check for different array lengths before comparing contents.

    return false if a.length and (a.length isnt b.length)
#

Nothing else worked, deep compare the contents.

    aKeys: _.keys(a); bKeys: _.keys(b)
#

Different object sizes?

    return false if aKeys.length isnt bKeys.length
#

Recursive comparison of contents.

    (return false) for key, val of a when !_.isEqual(val, b[key])
+    true
#

Is a given array or object empty?

  _.isEmpty: (obj) ->
+    return obj.length is 0 if _.isArray obj
+    (return false) for key of obj when hasOwnProperty.call(obj, key)
+    true
#

Is a given value a DOM element?

  _.isElement:    (obj) -> obj and obj.nodeType is 1
#

Is a given value an array?

  _.isArray:      nativeIsArray or (obj) -> !!(obj and obj.concat and obj.unshift)
#

Is a given variable an arguments object?

  _.isArguments:  (obj) -> obj and _.isNumber(obj.length) and not obj.concat and
+                           not obj.substr and not obj.apply and not propertyIsEnumerable.call(obj, 'length')
#

Is the given value a function?

  _.isFunction:   (obj) -> !!(obj and obj.constructor and obj.call and obj.apply)
#

Is the given value a string?

  _.isString:     (obj) -> !!(obj is '' or (obj and obj.charCodeAt and obj.substr))
#

Is a given value a number?

  _.isNumber:     (obj) -> (obj is +obj) or toString.call(obj) is '[object Number]'
#

Is a given value a boolean?

  _.isBoolean:    (obj) -> obj is true or obj is false
#

Is a given value a Date?

  _.isDate:       (obj) -> !!(obj and obj.getTimezoneOffset and obj.setUTCFullYear)
#

Is the given value a regular expression?

  _.isRegExp:     (obj) -> !!(obj and obj.exec and (obj.ignoreCase or obj.ignoreCase is false))
#

Is the given value NaN -- this one is interesting. NaN != NaN, and +isNaN(undefined) == true, so we make sure it's a number first.

  _.isNaN:        (obj) -> _.isNumber(obj) and window.isNaN(obj)
#

Is a given value equal to null?

  _.isNull:       (obj) -> obj is null
#

Is a given variable undefined?

  _.isUndefined:  (obj) -> typeof obj is 'undefined'
#

Utility Functions

#

Run Underscore.js in noConflict mode, returning the _ variable to its +previous owner. Returns a reference to the Underscore object.

  _.noConflict: ->
+    root._: previousUnderscore
+    this
#

Keep the identity function around for default iterators.

  _.identity: (value) -> value
#

Run a function n times.

  _.times: (n, iterator, context) ->
+    iterator.call(context, i) for i in [0...n]
#

Break out of the middle of an iteration.

  _.breakLoop: -> throw breaker
#

Add your own custom functions to the Underscore object, ensuring that +they're correctly added to the OOP wrapper as well.

  _.mixin: (obj) ->
+    for name in _.functions(obj)
+      addToWrapper name, _[name]: obj[name]
#

Generate a unique integer id (unique within the entire client session). +Useful for temporary DOM ids.

  idCounter: 0
+  _.uniqueId: (prefix) ->
+    (prefix or '') + idCounter++
#

By default, Underscore uses ERB-style template delimiters, change the +following template settings to use alternative delimiters.

  _.templateSettings: {
+    start:        '<%'
+    end:          '%>'
+    interpolate:  /<%=(.+?)%>/g
+  }
#

JavaScript templating a-la ERB, pilfered from John Resig's +Secrets of the JavaScript Ninja, page 83. +Single-quote fix from Rick Strahl.

  _.template: (str, data) ->
+    c: _.templateSettings
+    endMatch: new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g")
+    fn: new Function 'obj',
+      'var p=[],print=function(){p.push.apply(p,arguments);};' +
+      'with(obj){p.push(\'' +
+      str.replace(/[\r\t\n]/g, " ")
+         .replace(endMatch,"\t")
+         .split("'").join("\\'")
+         .split("\t").join("'")
+         .replace(c.interpolate, "',$1,'")
+         .split(c.start).join("');")
+         .split(c.end).join("p.push('") +
+         "');}return p.join('');"
+    if data then fn(data) else fn
#

Aliases

  _.forEach: _.each
+  _.foldl:   _.inject:      _.reduce
+  _.foldr:   _.reduceRight
+  _.select:  _.filter
+  _.all:     _.every
+  _.any:     _.some
+  _.head:    _.first
+  _.tail:    _.rest
+  _.methods: _.functions
#

Setup the OOP Wrapper

#

If Underscore is called as a function, it returns a wrapped object that +can be used OO-style. This wrapper holds altered versions of all the +underscore functions. Wrapped objects may be chained.

  wrapper: (obj) ->
+    this._wrapped: obj
+    this
#

Helper function to continue chaining intermediate results.

  result: (obj, chain) ->
+    if chain then _(obj).chain() else obj
#

A method to easily add functions to the OOP wrapper.

  addToWrapper: (name, func) ->
+    wrapper.prototype[name]: ->
+      args: _.toArray arguments
+      unshift.call args, this._wrapped
+      result func.apply(_, args), this._chain
#

Add all of the Underscore functions to the wrapper object.

  _.mixin _
#

Add all mutator Array functions to the wrapper.

  _.each ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], (name) ->
+    method: Array.prototype[name]
+    wrapper.prototype[name]: ->
+      method.apply(this._wrapped, arguments)
+      result(this._wrapped, this._chain)
#

Add all accessor Array functions to the wrapper.

  _.each ['concat', 'join', 'slice'], (name) ->
+    method: Array.prototype[name]
+    wrapper.prototype[name]: ->
+      result(method.apply(this._wrapped, arguments), this._chain)
#

Start chaining a wrapped Underscore object.

  wrapper::chain: ->
+    this._chain: true
+    this
#

Extracts the result from a wrapped and chained object.

  wrapper::value: -> this._wrapped
+
+
\ No newline at end of file diff --git a/documentation/index.html.erb b/documentation/index.html.erb index d86ed76410..7b65cb82a4 100644 --- a/documentation/index.html.erb +++ b/documentation/index.html.erb @@ -46,7 +46,6 @@ Conditionals, Ternaries, and Conditional Assignment Aliases Splats... - Arguments are Arrays While Loops Comprehensions (Arrays, Objects, and Ranges) Array Slicing and Splicing with Ranges @@ -59,8 +58,8 @@ Switch/When/Else Try/Catch/Finally Chained Comparisons + String and RegExp Interpolation Multiline Strings and Heredocs - String Interpolation Cake, and Cakefiles "text/coffeescript" Script Tags Resources @@ -76,7 +75,7 @@
+alert reverse '.eeffoC yrT'

           
           
@@ -90,11 +89,12 @@ alert reverse '!tpircseeffoC'
         Annotated Source
       
       
 
     

Latest Version: - 0.5.5 + 0.5.6

@@ -143,7 +143,7 @@ alert reverse '!tpircseeffoC'

For a longer CoffeeScript example, check out - Underscore.coffee, a port + Underscore.coffee, a port of the Underscore.js library of helper functions. Underscore.coffee can pass the entire Underscore.js test suite. The CoffeeScript version is faster than the original for a number @@ -161,7 +161,7 @@ alert reverse '!tpircseeffoC'

The CoffeeScript compiler is written in pure CoffeeScript, using a - small DSL + small DSL on top of the Jison parser generator, and is available as a Node.js utility. The core compiler however, does not depend on Node, and can be run in other server-side-JavaScript environments, @@ -171,11 +171,11 @@ alert reverse '!tpircseeffoC'

To install, first make sure you have a working version of - Node.js version 0.1.31 or higher. + Node.js version 0.1.33 or higher. Then clone the CoffeeScript source repository from GitHub, or download the latest - release: 0.5.5. + release: 0.5.6. To install the CoffeeScript compiler system-wide under /usr/local, open the directory and run:

@@ -244,14 +244,14 @@ sudo bin/cake install

Pipe in CoffeeScript to STDIN and get back JavaScript over STDOUT. Good for use with processes written in other languages. An example:
- cat src/cake.coffee | coffee -s + cat src/cake.coffee | coffee -sc
-e, --eval Compile and print a little snippet of CoffeeScript directly from the - command line. For example:
coffee -e "square: (x) -> x * x" + command line. For example:
coffee -e "puts num for num in [10..1]"
Pipe in CoffeeScript to STDIN and get back JavaScript over STDOUT. Good for use with processes written in other languages. An example:
- cat src/cake.coffee | coffee -s + cat src/cake.coffee | coffee -sc
-e, --eval Compile and print a little snippet of CoffeeScript directly from the - command line. For example:
coffee -e "square: (x) -> x * x" + command line. For example:
coffee -e "puts num for num in [10..1]"